Собираю доработки по MODx, которые не так часто применяю, поэтому забываю как раньше реализовывал. А также как обходил те или иные проблемы при разработке сайтов.
  • Дата создания
    25 октября 2018
  • Топиков
    5
  • Ограничение на постинг
    0.000

Yii2 Связанные таблицы


2:20:00 — подтаблица в админке
2:31:00 — добавляем поле в таблицу при extends
3:18:00 — виртуальное поле в виде геттера
3:39:00 — update страница при связанных данных
3:43:00 — сценарий проверки
3:50:00 — транзакция при сохранении связанных данных

Импорт из CSV

По многочисленным просьбам общественности написал скрипт импорта в miniShop2 из CSV. У нас уже проскакивало несколько вариантов, но все они как то не очень.

Особенности:


  1. Это не сниппет, это самодостаточный скрипт.
  2. Использует процессоры для импорта ресурсов и изображений.
  3. Умеет обновлять ресурсы по указанному ключевому полю.
  4. Поддерживает ТВ параметры и поля товаров, включая JSON типа size и color.
  5. Есть режим отладки, с подробным логом и обработкой только первой строки файла.
  6. Выводит сообщения через системный лог.

Теретически, можно импортировать не только товары, но и категории или другие ресурсы, но не проверял.

Скрипт входит в состав miniShop2 с версии 2.1.4 и лежит в /core/components/minishop2/import/csv.php. Запускать его можно как из браузера (если у вас открыта директория core), так и из консоли.

Если захотите его перенести в другое, более подходящее место, то нужно отредактировать строку


Читать дальше

YML файл для маркета при использовании minishop2

Создаем документ и скрываем из меню.
У документа:
— указываем Тип содержимого — «XML»;
— замораживаем адрес, какой нам необходим.
— шаблон выбираем «Пустой»
— в содержимое добавляем:
Читать дальше

Выводим дату на Modx с русским названием месяца

Чтобы не настраивать локаль, да и иногда требуется вывести в том или ином формате, то я
Название: rus_months
Содержимое:
<?php
$months = array(
    'Jan' => 'января',
    'Feb' => 'февраля',
    'Mar' => 'марта',
    'Apr' => 'апреля',
    'May' => 'мая',
    'Jun' => 'июня',
    'Jul' => 'июля',
    'Aug' => 'августа',
    'Sep' => 'сентября',
    'Oct' => 'октября',
    'Nov' => 'ноября',
    'Dec' => 'декабря',
);

return str_replace(array_keys($months), array_values($months), $input);

Если используется Fenom, товыводить даты можно так:
{$doc.publishedon | date : "d M Y" | rus_months}
обязательно должен быть символ «М», так как именно он заменяется на название русского месяца.

Если без Fenom:
[[*publishedon:date=`d M Y`:rus_months]]

Защита от СПАМа AjaxForm

Данное решение было написано спонтанно, так как заказчику требовалось срочно решить проблему со СПАМом, а рекапчу и вовсе хотелось убрать. Посмотрев, что уже было сделано, понял, что скрытое поле, которое должен был заполнить Бот и на этом попасться уже использовали, а рекапчу хотят убрать, применил такое решение:
В форму добавляется скрытое поле. При загрузке страницы, происходит ajax запрос на сервер и получается уникальный код. Ajax запрос отсечет ботов, которые не открывают страницу в браузере, а соответственно и не выполняют javascript код. Генерируемый сервером код, также помещаем в переменную сессии и при валидации формы сверяем заполненный код и код из сессии.
Читать дальше