MODX 3 и (вероятно) Formit
Здравствуйте.
Уже на втором сайте в логах вижу такие ошибки после открытия любой страницы сайта:
По слову «fi» сделал предположение, что это может быть Formit. Смущает, что это происходит при открытии любой страницы, даже где форм никаких нет (например sitemap.xml на пустом шаблоне).
MODX 3.0.4
PHP 8.1
Уже на втором сайте в логах вижу такие ошибки после открытия любой страницы сайта:
.../core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code : 8) PHP warning: Undefined array key "fi"
.../core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code : 8) PHP warning: Trying to access array offset on value of type null
Причем, их (таких сообщений) прямо куча вываливается после каждой загрузки (68 таких строчек за раз) — весь журнал забит.По слову «fi» сделал предположение, что это может быть Formit. Смущает, что это происходит при открытии любой страницы, даже где форм никаких нет (например sitemap.xml на пустом шаблоне).
MODX 3.0.4
PHP 8.1
Сортировка mFilter2
Добрый день!
[[!mFilter2?
&parents=`[[*id]]`
&element=`mSearch2`
&depth=`1`
&limit=`9`
&subcategories=`[[+subcategories]]`
&prepareTVs=`1`
&includeContent=`1`
&includeTVs=`wiki-img, content`
&filters=`tv|wiki_tag,`
&fields=`pagetitle:5,content:3,comment:1`
&onlyIndex=`true`
&tpl=`wiki-tile-tpl_new`
&tplOuter=`tpl.mFilter2.wiki.outer`
&tplFilter.outer.default=`tpl.mFilter2.filter.wiki.outer`
&tplFilter.row.default=`tpl.mFilter2.filter.wiki.checkbox`
[easyRedirects] Еще один компонент для управления редиректами
Привет!
easyRedirects — дополнение для управления редиректами (с возможностью выбора кода ответа из 301, 302, 307, 308) в панели управления сайтами.
Для MODX есть несколько компонентов, которые позволяют из админки управлять редиректами со старых url на новые. Из тех, что знаю я — это Redirector (наверное самый первый компонент, ему 10+ лет точно, но надо сказать, его периодически обновляют), и autoRedirector. Кстати, они поддерживают только 301 редирект, а вот 302 или более свежие 307 и 308 — нет.
При попытке применить их на моем сайте выплыли проблемы:
1. Redirector не позволял создать редирект на произвольный url, он обязательно хотел видеть в качестве цели существующий ресурс. А мне так не нужно было, у меня страницы генерируются своим плагином, обрабатывающим событие OnPageNotFound, т.е. целевого ресурса как такового на сайте нет.
2. autoRedirector больше заточен на отслеживание измененных url, ну и у него та же особенность — конечный url редиректа должен принадлежать существующему ресурсу.
В общем в итоге пара вечеров и готова первая версия easyRedirects. По сути это сильно модифицированный и дополненный Redirector.
easyRedirects — дополнение для управления редиректами (с возможностью выбора кода ответа из 301, 302, 307, 308) в панели управления сайтами.
Для MODX есть несколько компонентов, которые позволяют из админки управлять редиректами со старых url на новые. Из тех, что знаю я — это Redirector (наверное самый первый компонент, ему 10+ лет точно, но надо сказать, его периодически обновляют), и autoRedirector. Кстати, они поддерживают только 301 редирект, а вот 302 или более свежие 307 и 308 — нет.
При попытке применить их на моем сайте выплыли проблемы:
1. Redirector не позволял создать редирект на произвольный url, он обязательно хотел видеть в качестве цели существующий ресурс. А мне так не нужно было, у меня страницы генерируются своим плагином, обрабатывающим событие OnPageNotFound, т.е. целевого ресурса как такового на сайте нет.
2. autoRedirector больше заточен на отслеживание измененных url, ну и у него та же особенность — конечный url редиректа должен принадлежать существующему ресурсу.
В общем в итоге пара вечеров и готова первая версия easyRedirects. По сути это сильно модифицированный и дополненный Redirector.
MIGX, мультизагрузка и Imageplus
Понадобилось создать мультизагрузку файлов через MIGX. Версия modx 2.8.5. Делаю все стандартно:
1. Создаю источник файлов ResourceMediaPath c параметрами:
4. Создаю в MIGX конфигурацию с именем resourcealbum следующего наполнения:
1. Создаю источник файлов ResourceMediaPath c параметрами:
basePath=[[migxResourceMediaPath? &pathTpl=`assets/resourceimages/{id}/` &createFolder=`1`]]
baseUrl=[[migxResourceMediaPath? &pathTpl=`assets/resourceimages/{id}/` &createFolder=`1`]]
2. Создаю ТВ resourcealbum с параметрами:Тип ввода=migx
Конфигурации=resourcealbum
Источник файлов=ResourceMediaPath
3. Устанавливаю Image+ и pThumb4. Создаю в MIGX конфигурацию с именем resourcealbum следующего наполнения:
Быстрый доступ к редактированию ресурсов из фронта
Предлагаю к вниманию небольшое дополнение для быстрого доступа к редактированию ресурсов сайта из фронта. Я видел, что есть готовые решения на эту тему, но мне как-то привычнее оказалось более простое решение, которое я позаимствовал из другой cms и поделюсь здесь с вами, может кому пригодится.
SEO Suite - keywords
Приветствую!
Что-то не получается у меня сделать вывод [[!+ss_meta.keywords]] плагина SEO Suite только когда keywords в соответствующее поле вписаны…
Документацию смотрел, пробовал выводить в плейсхолдер и его проверять на пустоту, но игнорирует и всё равно выводится… seosuite.placeholder_plugin_enabled отключал…
Что-то не пойму в чём проблема. Может кто подсказать?
Что-то не получается у меня сделать вывод [[!+ss_meta.keywords]] плагина SEO Suite только когда keywords в соответствующее поле вписаны…
Документацию смотрел, пробовал выводить в плейсхолдер и его проверять на пустоту, но игнорирует и всё равно выводится… seosuite.placeholder_plugin_enabled отключал…
Что-то не пойму в чём проблема. Может кто подсказать?
Как вывести цену из модификаторов товара?
В tpl.msoneclick.form в разделе с товарами этот код выводит основную цену сразу, если она 0 то и выводит 0, подскажите как сделать чтобы сразу выводил из модификаторов? На отдельной странице с товаром цена выводится сразу из модификатора! Где-то JS не заменяет эти данные! Если перевыбрать параметр товара то цена отображается!
<span class="forder-popup__price">
<span id="[[+selector]]_price" class="msoptionsprice-cost msoptionsprice-[[+product.id]]">[[+product.price]]</span> руб.
[[+product.old_price:is=`0`:then=``:else=`<span id="[[+selector]]_price_old" class="old_price msoptionsprice-old-cost msoptionsprice-[[+product.id]]">[[+product.old_price]]</span> руб.`]]
</span>
Отправлять забытый пароль по SMS
Стоит Login, MODX Revo 2.6.5 без Fenom
Нужно при восстановлении пароля отправлять его в СМС, через POST www.sms4b.ru/programs/webhook
Или так api.sms4b.ru/webHooks/SendBitrixSms.php?token=MYAPIKEY&sender=MYID&number=+MYNUMBER&message=Ваш новый пароль 529fqsdv
№ телефона для СМС = username в Login
В тг, @vanodk
Нужно при восстановлении пароля отправлять его в СМС, через POST www.sms4b.ru/programs/webhook
Или так api.sms4b.ru/webHooks/SendBitrixSms.php?token=MYAPIKEY&sender=MYID&number=+MYNUMBER&message=Ваш новый пароль 529fqsdv
№ телефона для СМС = username в Login
В тг, @vanodk
msOptionsPrice.modification как получить продукты с одинаковым значением параметра модификации
Я использую msoptionsprice2 с msOptionsPrice.modification.
Продукт имеет следующую структуру:
Платье с модификациями(options): цвет, размер, коллекция.
например:
ПлатьеА(Красное, XL, Летняя коллекция)
ПлатьеА(Синий, XL, Летняя коллекция)
ПлатьеB(Красное, L, Летняя коллекция)
ПлатьеB(Красное, XL, зимняя коллекция)
Как получить все товары (платья из определенной коллекции)?
например: Летнюю коллекцию?
что-то вроде этого:
Продукт имеет следующую структуру:
Платье с модификациями(options): цвет, размер, коллекция.
например:
ПлатьеА(Красное, XL, Летняя коллекция)
ПлатьеА(Синий, XL, Летняя коллекция)
ПлатьеB(Красное, L, Летняя коллекция)
ПлатьеB(Красное, XL, зимняя коллекция)
Как получить все товары (платья из определенной коллекции)?
например: Летнюю коллекцию?
что-то вроде этого:
[[!msOptionsPrice.modification?
&where=`{"collection":"Летняя коллекция"}`
]]
Поиск по id (Корзина - управление удаленными ресурсами)
Бывает случай, когда много удалённых ресурсов лежат в корзине для полного удаления, и когда не находит удалённый ресурс, документ, товар по id, уничтожить администратору сайта затратно по времени. Для этого в версии 2.8.3 пришлось залезть в ядро функция prepareQueryBeforeCount(xPDOQuery $c):
core/model/modx/processors/resource/trash/getlist.class.php:55
И заменить строку:
core/model/modx/processors/resource/trash/getlist.class.php:55
И заменить строку:
if (!empty($query)) {
$c->where(array('modResource.pagetitle:LIKE' => '%' . $query . '%'));
$c->orCondition(array('modResource.longtitle:LIKE' => '%' . $query . '%'));
}
наif ($query && is_int((int)$query) && $query > 0) {
$c->where(array('modResource.id:=' => $query));
}
elseif (!empty($query)) {
$c->where(array('modResource.pagetitle:LIKE' => '%' . $query . '%'));
$c->orCondition(array('modResource.longtitle:LIKE' => '%' . $query . '%'));
}
В новых версиях уже вшит поиск в удалении?