Andrei D.

Andrei D.

С нами с 09 января 2014; Место в рейтинге пользователей: #54

Закрываем служебные директории MODX в Apache

В одной статье, касающейся безопасности, Василий дал очень хорошую рекомендацию по защите служебных папок. Реализовав это на своём хостинге, решил написать инструкцию, так как начинающие изучать MODX могут столкнуться с ошибкой 404, как Я например.
Борода
01 марта 2016, 10:41
modx.pro
32
6 785
+5

Правильные username при регистрации пользователя

1 500
Всем привет. Часто встречается ситуация, когда на сайте при регистрации через Office пользователи указывают username вида "--- --", «валя краля», "___ __", «yesy@yesy.ru» и т.д. Хотелось бы, чтобы при регистрации использовали только английские буквы, тире, нижнее подчеркивание и цифры.

Приступим:

1. Создаем плагин с следующим содержанием:

<?php
if ($modx->event->name == 'OnBeforeUserFormSave') {
    if (!preg_match("/^[a-zA-Z0-9-_]+$/", $user->username)) $modx->event->output('Имя пользователя должно содержать английские буквы, символы "-", "_" и цифры');
}
Wassi Wassinen
22 февраля 2016, 19:20
modx.pro
9
2 973
+1

Рейтинг пользователя - общий, тикеты и комментарии

1 500
Выводим рейтинг пользователя как на modx.pro joxi.ru/eAOYVYPI476nQm

Т.е., выводим рейтинг общий, рейтинг за тикеты (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>
Wassi Wassinen
18 февраля 2016, 14:49
modx.pro
20
3 903
+7

[Messenger] Обновлено. Диалоги для modx

Messenger это система диалогов (личных сообщений) с использованием web-сокетов (comet-server) для мгновенных уведомлений на MODX Revolution.

Демонстрация работы
Логины: test1, test2, test3, test4. Пароли идентичны логинам.

В данный момент умеет:
— создание диалогов (2 и более человек)
— прием и отправка сообщений
— строка "%username% набирает сообщение"
— уведомления о новых сообщениях
— вывод аватарок пользователей
— сортировку диалогов по дате последнего сообщения и кол-ву новых уведомлений
— выделение онлайн пользователей


but1head
15 февраля 2016, 22:36
modx.pro
8
8 526
+20

Сортировка тикетов (Tickets) по рейтингу

1 300
Сортировка тикетов (Tickets) по рейтингу и вывод через PdoPage. Долго искал пример на modx.pro. Нашел на одном из своих проектов.
Wassi Wassinen
14 февраля 2016, 16:57
modx.pro
11
2 930
+3

Как выбрать данные из нескольких кастомных таблиц?

Мне нужно выбрать данные из нескольких кастомных таблиц через pdoResources, но не получается настроить Join-ы правильно.
Есть несколько кастомных таблиц с одинаковой структурой полей и с сгенерированными моделями.
Данные из одной таблицы выводятся легко:
[[!pdoResources?
    &loadModels=`orders_external`
    &class=`BazOrders1External`
    &tpl=`tpl.orders.row`
    &limit=`0`
    &where=`{ 'publishedby':2 }`
]]
А вот как приджойнить сюда другие таблицы по тому же условию?
Василий Столейков
10 февраля 2016, 18:32
modx.pro
7
3 312
0

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`
                    ]]
. Что делаю не так??? Спасибо.

То же самое стало и с наличием товара. На первой странице все нормально, а дальше везде «нет в наличии». Может дело в кешировании?
Алексей
09 февраля 2016, 10:07
modx.pro
1
866
0

Разработка новой версии vrmedia.tv

Всё началось с того, что мне позвонил знакомый и попросил проконсультировать по их сайту vrmedia.tv.

Его разрабатывал один местный программист и что-то дело начало буксовать — пропал интерес у разработчика. Вроде и дорабатывать он не против, но что-то времени нет, и всё такое. В общем, было принято решение продолжать работу без него.

Я, конечно, ответил на вопросы и предложил поискать кого-то еще. На что мне объяснили, что это уже третий разработчик и надежды на кого-то еще просто нет. Пришлось выручать знакомого.
Василий Наумкин
26 января 2016, 11:10
modx.pro
18
10 070
+24

[pdoTools] Версия 2.2 c модификаторами Fenom

Представляю вам новую версию pdoTools 2.2.0-pl, в которой вы можете задавать свои модификаторы для использования в Fenom.

Для этого придумана системная настройка pdotools_fenom_modifiers, в которой вы можете указать нужные сниппеты через запятую.

То, что указано в этой настройке, будет доступно глобально, для всех вызовов pdoTools. Также у вас есть возможность указать конкретные модификаторы для определённого вызова сниппета:
[[!pdoResources?
    &parents=`0`
    &fenomModifiers=`dateAgo`
    &tpl=`@INLINE <p>{$id} - {$pagetitle} {$createdon | dateago}</p>`
]]
Как можно заметить, модификаторы указываются через |.
Василий Наумкин
27 декабря 2015, 13:39
modx.pro
6
6 512
+14

Соединяем EasyComm и 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"
}`
Павел
25 декабря 2015, 10:34
modx.pro
34
5 134
+14