Тонкости и трюки

Вывод тикетов пользователя

Сегодня задали вопрос: -а как выводить тикеты определённого пользователя, типа как персональный блог?

Ну, тут минимум 2 варианта:
1. Создать отдельный раздел для юзера.
2. Выделять тикеты юзера из общей кучи.

Первый вариант отметаем сразу по ряду причин:
— Нужно дать право юзеру на создание разделов.
— Нужно проверять, сколько он их создал (должно же быть не больше одного).
— Нужно назначать политики доступа так, чтобы туда мог написать только юзер.
— Куча ненужных никому разделов в админке
— Еще всякие непредвиденные сложности.

Если вы будуте создавать каждому юзеру блог самостоятельно в админке руками — еще куда ни шло. Но это не удобно + если юзеров много, то админка разрастётся до неприличных размеров.

Поэтому, мы пойдем вторым путём — выводом тикетов юзера по уникальному url. Я предлагаю site_name/section_name/user_name/.

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

Wayfinder и количество документов в контейнере

Есть довольно частая задача — вывести меню до определенного уровня вместе с количеством страниц в каждом разделе. Новички обычно спотыкаются на ней и задают вопросы «а как?!».

Видел разные мнения, в основном, что это очень медленно и сложно, xPDO тормозит, надо писать свой сниппет и т.д. Конечно, все это ерунда и нас, как всегда, выручит Wayfinder.

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

Консольный импорт в miniShop из 1С

Simple Dream разрешили поделиться очередной работой — импортом товаров через консоль из XML.

Скрипт прожорливый, из-за того, что медленно и качественно работает через процессоры. Результат работы такой же, как если вы сделаете все руками: отработают плагины, правила и проверки.

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

Редирект на ресурс сразу после его создания

Использование PhpStorm дает первые плоды. Вот вам характерный случай.

Делаю компонент, в котором ресурсы создаются во фронтенде, через процессоры. Процессор возвращает id ресурса и я должен отправить юзера сразу на него.

$response = $modx->runProcessor('resource/create', $data);
if ($response->isError()) {
	return $response->getMessage();
}
$id = $response->response['object']['id'];
$modx->sendRedirect($modx->makeUrl($id,'','','full'));
И не работает. $modx->makeUrl() не возвращает url — просто пустота.

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

Простейшая настройка мультиязычности

Во время работы над modx-test.com (который потом вырос в modhost.pro) придумал и реализовал прикольную мультиязычность.

Никаких копирований файлов, поддоменов и прочих заморочек. 1 простой плагин, который делает всю работу.

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