[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 . '%'));
}
В новых версиях уже вшит поиск в удалении? [Login] Как логиниться сразу в несколько контекстов?
Добрый день!
У нас есть сайт на котором используются контексты web и ru для языковых версий. Для контекста web сайт открывается по домену site.com, для контекста ru — ru.site.com.
Необходимо чтобы пользователь мог залогиниться в личный кабинет в одном контексте (языковой версии), например, ru, и логин производился в оба контекста web и ru.
У нас есть сайт на котором используются контексты web и ru для языковых версий. Для контекста web сайт открывается по домену site.com, для контекста ru — ru.site.com.
Необходимо чтобы пользователь мог залогиниться в личный кабинет в одном контексте (языковой версии), например, ru, и логин производился в оба контекста web и ru.
pdoSitemap Рендерит xml со второй строчки, как исправить?
Пустой шаблон, тип содержимого XML. Контент внутри ресурса
{'pdoPage' | snippet : [
'element' => 'pdoSitemap',
'parents' => 0,
'context' => $modx->context->key,
'depth' => 10,
'limit' => 100,
'showHidden' => 0
]}
Первый раз когда поставил всё работало, обновлял чистил кэш, всё работ, через несколько часов перестало и появляется эта ошибкаThis page contains the following errors:
error on line 2 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.