Andrei D.
С нами с 09 января 2014; Место в рейтинге пользователей: #54Закрываем служебные директории MODX в Apache
В одной статье, касающейся безопасности, Василий дал очень хорошую рекомендацию по защите служебных папок. Реализовав это на своём хостинге, решил написать инструкцию, так как начинающие изучать MODX могут столкнуться с ошибкой 404, как Я например.
Правильные username при регистрации пользователя
1 500
Всем привет. Часто встречается ситуация, когда на сайте при регистрации через Office пользователи указывают username вида "--- --", «валя краля», "___ __", «yesy@yesy.ru» и т.д. Хотелось бы, чтобы при регистрации использовали только английские буквы, тире, нижнее подчеркивание и цифры.
Приступим:
1. Создаем плагин с следующим содержанием:
Приступим:
1. Создаем плагин с следующим содержанием:
<?php
if ($modx->event->name == 'OnBeforeUserFormSave') {
if (!preg_match("/^[a-zA-Z0-9-_]+$/", $user->username)) $modx->event->output('Имя пользователя должно содержать английские буквы, символы "-", "_" и цифры');
}
Рейтинг пользователя - общий, тикеты и комментарии
1 500
Выводим рейтинг пользователя как на modx.pro joxi.ru/eAOYVYPI476nQm
Т.е., выводим рейтинг общий, рейтинг за тикеты (Tickets) и рейтинг за комментарии.
1. Создаем сниппет getAuthorRating:
Т.е., выводим рейтинг общий, рейтинг за тикеты (Tickets) и рейтинг за комментарии.
1. Создаем сниппет getAuthorRating:
<?php
$userId = intval($userId);
if ($author = $modx->getObject('TicketAuthor',$userId)) $modx->setPlaceholders($author->toArray());
return;
2. Там где нужно вывести рейтинг:[[!getAuthorRating? &userId=`[[+ID_пользователя]]`]]
<p>Рейтинг [[+rating]]</p>
<p>Рейтинг тикетов + [[+votes_tickets_up]] / - [[+votes_tickets_down]]</p>
<p>Рейтинг комментариев + [[+votes_comments_up]] / - [[+votes_comments_down]]</p>
[Messenger] Обновлено. Диалоги для modx
Messenger это система диалогов (личных сообщений) с использованием web-сокетов (comet-server) для мгновенных уведомлений на MODX Revolution.
Демонстрация работы
Логины: test1, test2, test3, test4. Пароли идентичны логинам.
В данный момент умеет:
— создание диалогов (2 и более человек)
— прием и отправка сообщений
— строка "%username% набирает сообщение"
— уведомления о новых сообщениях
— вывод аватарок пользователей
— сортировку диалогов по дате последнего сообщения и кол-ву новых уведомлений
— выделение онлайн пользователей
Демонстрация работы
Логины: test1, test2, test3, test4. Пароли идентичны логинам.
В данный момент умеет:
— создание диалогов (2 и более человек)
— прием и отправка сообщений
— строка "%username% набирает сообщение"
— уведомления о новых сообщениях
— вывод аватарок пользователей
— сортировку диалогов по дате последнего сообщения и кол-ву новых уведомлений
— выделение онлайн пользователей
Сортировка тикетов (Tickets) по рейтингу
1 300
Сортировка тикетов (Tickets) по рейтингу и вывод через PdoPage. Долго искал пример на modx.pro. Нашел на одном из своих проектов.
Как выбрать данные из нескольких кастомных таблиц?
Мне нужно выбрать данные из нескольких кастомных таблиц через pdoResources, но не получается настроить Join-ы правильно.
Есть несколько кастомных таблиц с одинаковой структурой полей и с сгенерированными моделями.
Данные из одной таблицы выводятся легко:
Есть несколько кастомных таблиц с одинаковой структурой полей и с сгенерированными моделями.
Данные из одной таблицы выводятся легко:
[[!pdoResources?
&loadModels=`orders_external`
&class=`BazOrders1External`
&tpl=`tpl.orders.row`
&limit=`0`
&where=`{ 'publishedby':2 }`
]]
А вот как приджойнить сюда другие таблицы по тому же условию?Ajax пагинация в pdoTools версии 2.2.5
Добрый день! Обновил pdoTools до версии 2.2.5. На странице товара стоит вывод похожих товаров с ajax пагинацией страниц. Первая страница выводится нормально
а на второй (на третей и т.д.) не выводятся флажки и кнопка в корзину
При обновлении страницы все становиться нормально! Вот вызов
То же самое стало и с наличием товара. На первой странице все нормально, а дальше везде «нет в наличии». Может дело в кешировании?
а на второй (на третей и т.д.) не выводятся флажки и кнопка в корзину
При обновлении страницы все становиться нормально! Вот вызов
[[!pdoPage?
&element=`msProducts`
&includeThumbs=`240x120`
&includeTVs=`metall,ves`
&parents=`8`
&ajaxMode=`default`
&limit=`5`
&pageLimit=`5`
&maxLimit=`10`
&tpl=`tpl.msProducts.row`
&where=`{"Data.new":"1"}`
&showLog=`1`
]]
. Что делаю не так??? Спасибо.То же самое стало и с наличием товара. На первой странице все нормально, а дальше везде «нет в наличии». Может дело в кешировании?
Разработка новой версии vrmedia.tv
Всё началось с того, что мне позвонил знакомый и попросил проконсультировать по их сайту vrmedia.tv.
Его разрабатывал один местный программист и что-то дело начало буксовать — пропал интерес у разработчика. Вроде и дорабатывать он не против, но что-то времени нет, и всё такое. В общем, было принято решение продолжать работу без него.
Я, конечно, ответил на вопросы и предложил поискать кого-то еще. На что мне объяснили, что это уже третий разработчик и надежды на кого-то еще просто нет. Пришлось выручать знакомого.
Его разрабатывал один местный программист и что-то дело начало буксовать — пропал интерес у разработчика. Вроде и дорабатывать он не против, но что-то времени нет, и всё такое. В общем, было принято решение продолжать работу без него.
Я, конечно, ответил на вопросы и предложил поискать кого-то еще. На что мне объяснили, что это уже третий разработчик и надежды на кого-то еще просто нет. Пришлось выручать знакомого.
[pdoTools] Версия 2.2 c модификаторами Fenom
Представляю вам новую версию pdoTools 2.2.0-pl, в которой вы можете задавать свои модификаторы для использования в Fenom.
Для этого придумана системная настройка pdotools_fenom_modifiers, в которой вы можете указать нужные сниппеты через запятую.
То, что указано в этой настройке, будет доступно глобально, для всех вызовов pdoTools. Также у вас есть возможность указать конкретные модификаторы для определённого вызова сниппета:
Для этого придумана системная настройка pdotools_fenom_modifiers, в которой вы можете указать нужные сниппеты через запятую.
То, что указано в этой настройке, будет доступно глобально, для всех вызовов pdoTools. Также у вас есть возможность указать конкретные модификаторы для определённого вызова сниппета:
[[!pdoResources?
&parents=`0`
&fenomModifiers=`dateAgo`
&tpl=`@INLINE <p>{$id} - {$pagetitle} {$createdon | dateago}</p>`
]]
Как можно заметить, модификаторы указываются через |. Соединяем EasyComm и mFilter2
Всем привет, и сразу к делу (кстати пишу первый раз тут, если будут ошибки — исправим).
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов mFilter2 следующий код:
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов mFilter2 следующий код:
&loadModels=`easycomm`
&where=`{"class_key":"msProduct"}`
&leftJoin=`{
"ecThread": {
"class": "ecThread",
"on": "msProduct.id = ecThread.resource"
}
}`
&select=`{
"msProduct": "*",
"ecThread": "ecThread.rating_simple AS rating, ecThread.count AS reviews"
}`