Вопросы

Дубли страниц с заглавными буквами в url

Добрый вечер.
Я понял, что вопросы не касающиеся напрямую MODX задавать не стоит )
Кэширование данных в браузере — включить
исправляюсь.
Сегодня SEO специалисты написали мне что на всех проектах на MODX все страницы дублируются, если задать их url заглавными буквами или еще того хуже — любой комбинацией заглавных и прописных букв.
И да, это так.
modx.pro/BLOGS
Такое же наблюдается и на wordpress и на joomla но вернемся к modx.

Кто-то решал подобную задачу?
Или подскажите пожалуйста, какой класс занимается обработкой url, я попробую либо делать редирект на принудительно переведенный в нижний регистр либо отдавать 404.
Спасибо.
Александр Мельник
23 мая 2019, 20:35
modx.pro
1
4 036
0

Плагин — вырезать из урл

как можно вырезать из урл «katalog»?
пробовал так, но не работает и на какое событие вешать?
if (!isset($_REQUEST[$alias])) {return false;}
$request = $_REQUEST[$alias];
$tmp = explode('/', $request);
// Ссылка подходит под заданный формат: katalog/product
if ($tmp[0] == 'katalog' && count($tmp) >= 2) {
	$name = str_replace('katalog/', '', $request);
	$modx->sendForward($name)ж
}
Aslero
23 мая 2019, 18:26
modx.pro
985
0

Несколько Pdopage на странице

Добрый день, возникла проблема с удваиванием кнопки подгрузки на странице. Собственно выглядит вот так prnt.sc/nrz6m2, причем для обоих галерей.
Вызов сниппетов выглядит так:
<div id="pdopage">
     [[!+page.nav]]
    <div class="rows">
      [[!pdoPage?
        &element=`getImageList`
        &tvname=`resourcealbum` 
        &tpl=`effects-img`
        &limit=`15`
        &ajaxMode=`button`
        &wrapperTpl = `effects_wrapper`
        &docid=`[[*id]]`
        &processTVs=`1`
    ]]
    </div>
        </div>
  <div id="pdopage">
     [[!+nav.pagevar]]
    <div class="rows">
      [[!pdoPage?
        &element=`getImageList`
        &tvname=`resourcealbum1` 
        &tpl=`effects-img`
        &limit=`15`
        &ajaxMode=`button`
        &wrapperTpl = `colors_wrapper`
        &docid=`[[*id]]`
        &processTVs=`1`
        &pageNavVar= `nav.pagevar`
        &pageVarKey=`page1`
    ]]
    </div>
  </div>
Alex
22 мая 2019, 19:26
modx.pro
2
1 797
0

Не работает вывод изображений в ajax пагинации

Не работает вывод изображений в подгруженных записях через ajax.
вывожу записи через pdoPage с включенной ajax пагинацией, изображения минифицирую плагином phpthumbon.
pdopage сами картинки выводит, после нажатия на кнопку подгрузки, изображения на подгруженных записях не выводятся.
вывожу через код:
<div id="pdopage">
    <div class="rows">
[[!pdoPage?
            &parents=`9`
            &depth=2
            &ajaxMode=`button`
            &limit=`4`
            &where=`{"isfolder:=":0}`
            &tpl=`case_list`
            &includeTVs=`news_img`
       ] ]
</div>
[[!+page.nav?]]
</div>
Содержимое чанка «case_list»

[[+parent]]
<img class="img-responsive" src="[[phpThumbOn? &input=`[[+tv.news_img]]` &options=`h=308&w=480&zc=1`]]" alt="[[+pagetitle]]"
[[~[[+id]]]]
[[+pagetitle]]
[[~[[+parent]]]] [[#[[+parent]].pagetitle]]
sergey
22 мая 2019, 18:16
modx.pro
921
0

Сортировка по дате рождения pdoresources?

Подскажите как сделать сортировку по дате рождения:
Например, есть TV дата, дата стоит:
1) 1997-05-21
2) 1998-05-15
3) 1996-05-15
Должно вывестись в таком порядке:
1) 1996-05-15
2) 1998-05-15
3) 1997-05-21
Т.е. должно сортироваться только по Дню, остальное можно отмести.
Илья Александрович
22 мая 2019, 11:59
modx.pro
651
0

miniShop2 Очистка Корзины - редирект

Доброе время суток.
Очистка Корзины — в JavaScript указал редирект, по документации через Callbacks:
miniShop2.Callbacks.add('Cart.clean.response.success', 'clean_cart_redirect', function() {
console.log('Редирект');
document.location = '/';
});
Не работает, даже console.log не выводит.
Указывал Order, тот же результат.
В чем ошибка?

Спасибо
Iskatel
21 мая 2019, 21:20
modx.pro
950
0

Дробное количество товара Minishop2

Всем привет.
Подскажите пожалуйста, на правильном ли я пути, и правильная ли логика?

Есть интернет-магазин на minishop2.
Цена за товар указывается в метрах.
Минимальное количество товара для покупки 0.1 метра.

Дефолтное поле «Количество» завязано на целых числах, для его изменения нужно вносить правки в ядро: (Подробнее modx.pro/help/3991).
От этого варианта я решил отказаться.

Решил через плагины.
Создаем своё поле и выводим его вместо в форме карточки товара.
<input class="input" type="number" value="0.1" step="0.1" min="0" max="100">
Создаем плагин на 2 события:
Перед добавлением товара — msOnBeforeAddToCart
Перед формированием заказа — msOnBeforeCreateOrder

<?php
  switch ($modx->event->name) {
    case 'msOnBeforeAddToCart':

    $areaProduct = "значение метража"

    $new_price = $product->get('price') * $areaProduct;
    $product->set('price', $new_price);
  break; 
}
как получать значение поля метраж из формы$areaProduct?

Пока в голове только такое решение:
Через ajax на форме записывать значение в сессию. В плагине читать эту сессию.

На странице корзины
Из сессии берем значение метража, если сессии нет, то выставляем значение 1.
На какое событие лучше повесить изменение цены на странице корзины?

Верна ли моя логика? Буду рад любой подсказке, спасибо.
Глеб
21 мая 2019, 20:27
modx.pro
2 180
0

Посоветуйте текстовый редактор для Frontend/

Приветствую
Пытался найти готовый редактор для внешнего интерфейса (прямо на странице редактировать), перепробовал несколько найденных, но все из них по тем или иным причинам нерабочие или мне так повезло. Нужно что-то очень простое типа imperavi — админ открывает страницу на сайте, тут же может ее там же отредактировать и сохранить без заморочек. Есть такое что-то рабочее или надо что-то брать и допиливать?
P.S.
Вообще как-то туговато с нормальными редакторами для MODX давным давно…
weranda
21 мая 2019, 18:08
modx.pro
689
0

создание документа программно не msproduct обычный ресурс

Всем привет.

Опытные разработчики на modx revo нетолько shopов подскажите пожалуйста

как создать документ программно обычный resource

нашёл примеры в инете создаётся с pagetitle всё ок

но при повтороном создании создаётся заново

тоесть как бы простой отзыв из личного кабинет

простая форма, shop нравится всё ок submit

создаётся ресурс программно от usera c pagetitle от usera

ресурс pagetitle с username отзыв 1

ресурс pagetitle с username отзыв 2

ресурс pagetitle с username отзыв 3

ресурс pagetitle с username отзыв 4

ресурс pagetitle с username отзыв 5

как реализовать проверку чтобы ресурсы постоянно несоздавались а был один ресурс и постоянно обновлялся,
несоздавая новые

создаётся ресур (доэтого проверяется есть ли данный ресур и несоздаётся с новым id )

[[!FormIt?
&hooks=`formit2file,formit2resource`
&template=``]]
</div>


snippet

formit2resource

<?php
$doc = $modx->getObject('modResource',array('id'=>$hook->getValue('username')));


if (empty($doc)){
    $doc = $modx->newObject('modResource');
    $doc->set('createdby', $modx->user->get('id'));
}


else{
    $doc->set('editedby', $modx->user->get('id'));
}


 
$allFormFields = $hook->getValues();
foreach ($allFormFields as $field=>$value)
{
 
   if ($field !== 'spam' && $field !== 'resource_id'){
         $doc->set($field, $value);
    }
}

$alias = $doc->cleanAlias($fields['pagetitle']);
if($modx->getCount(modResource, array('alias'=>$alias))!= 0) {
$count = 1;
$newAlias = $alias;
while($modx->getCount(modResource, array('alias'=>$newAlias))!= 0) {
$newAlias = $alias;
$newAlias .= '-' . $count;
$count++;
}
$alias = $newAlias;
}
$doc->set('alias',$alias);

$doc->set('template', $template);
$doc->set('published', 0);
$doc->set('hidemenu', 1);

$doc->save();
 
foreach ($allFormFields as $field=>$value)
{
    if (!empty($value) && $tv = $modx->getObject('modTemplateVar', array ('name'=>$field)))
    {
        /* handles checkboxes & multiple selects elements */
        if (is_array($value)) {
            $featureInsert = array();
            while (list($featureValue, $featureItem) = each($value)) {
                $featureInsert[count($featureInsert)] = $featureItem;
            }
            $value = implode('||',$featureInsert);
        }  
        $tv->setValue($doc->get('id'), $value);
        $tv->save();
    }
}

$modx->cacheManager->refresh();
 
return true;

chunk form

сделал так

<input class="field" type="text" name="pagetitle" 
value="[[+fi.pagetitle]]отзыв [[*createdon:strtotime:date=`%c`]] 
от пользователя [[!+modx.user.id:userinfo=`username`]]" />


буду очень признателен кто поможет дополнить проверку

Если нужен в помошь человек по созданию интернет магазинов, с удовольствием поучавствую с лояльной занятостью.
В прогрраммной части несилён (создание кастомных сниппетов сложная кастомная фильтрация и тд), пишите в личку если нежун в помошь человек и есть надобность
(сроки поджимают, устаём наполянть своим тимом, просто сам делаю нужна помошь неуспеваю отдать shop заказчику).
Кирилл
21 мая 2019, 16:00
modx.pro
987
0

(РЕШЕНО) Проблема с соединением через SSL

Неожиданно возникла проблема с соединением через SSL у заказчика. У меня сайт доступен, все прекрасно. Проверил по ping-admin.ru/index.sema на некоторых серверах (в том числе Москва, центр-1) есть такое сообщение:

«Проблема с соединением через SSL. Скорее всего на сервере отключены ряд шифров для SSL, из-за чего некоторые клиенты не смогут подключиться. Обращение производилось к IP...»

По http сайт прекрасно открывается.

Кто-нибудь сталкивался? Как это вылечить? Или это какое-то локальные проблемы провайдеров?

UPD: перевыпустил сертификат Let's Encrypt — все стало ок!
Семен Красиков
21 мая 2019, 15:09
modx.pro
3 038
0