How to

Add howto

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

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

Вывести только тикеты с рейтингом больше нуля

Итак, если вам нужно вывести тикеты с рейтингом выше ноля, то эту задачу можно решить двумя способами. Первый для высоконагруженных проектов, второй для менее нагруженных.

Первый вариант (относительно сложный в реализации, но выигрывает по скорости при большой выборке ресурсов):

  1. Заходите в phpmyadmin.
  2. Выбираете таблицу modx_site_content
  3. — Переходите в закладку «структура»
  4. — Внизу открывшегося окна нажимаете ОК (Добавить 1 поле в конец таблицы)
    Имя: ticket_rating
    Тип: int
    Длина/значение: 10
    По умолчанию: Как определено (0)
    Null: галочка
  5. Сохраняем
Таким способом мы расширили дефолтную таблицу MODX'a со списком ресурсов.
26 february 2016, 06:31    Wassi Wassinen
6    595    23 +2

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

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

Приступим:

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

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

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

Выводим рейтинг пользователя как на 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>
18 february 2016, 17:49    Wassi Wassinen
15    633    8 +7

Закалка MODX Revolution (перевод)

Своего писать я пока сомневаюсь, уровень не тот, а вот перевести полезную статью с официальной документации — это с удовольствием. Перевод местами может показаться несколько вольным, что касается формулировок, — иначе переводить скучно. Но в том, что касается технических деталей, старался быть дотошно точным. Так что, если найдёте технические неточности — ругайтесь в комментах. А на филологию прошу не жаловаться:) И тем более на идеологические расхождения с Вашим мировоззрением — тут все вопросы к авторам доков. Паранойи и почвы для громких споров среди «экспертов по безопасности» в статье предостаточно. Помни, о читатель, всё это касается в первую очередь важных и заметных проектов.
Добро пожаловать под кат.
15 february 2016, 05:03    Алексей Бгатов
41    3892    41 +13

Страница пользователя как на modx.pro

Реализация страницы пользователя как на mоdx.pro (https://modx.pro/users/bezumkin/). Не используются дополнения virtualPage и userProfile\userProfile2 из-за их глючности и конфликтов с другими дополнениями. Все протестировано на рабочем проекте.
14 february 2016, 20:03    Wassi Wassinen
25    1015    48 0

Скрываем config.core.php

Я давненько на своих сайтах меняю адрес админки и папки /connectors/

Мне нравится, что MODX позволяет это делать и очень сложно обнаружить, что сайт работает на нём. Но тут Николай Ланец смутил меня тем, что MODX можно определить еще и по файлу /config.core.php в корне. Да, он не выдаёт никакой информации, но показывает белый экран, а веб-сервер отдаёт ответ 200.
13 february 2016, 17:56    Илья Уткин
28    1762    60 +5

Импорт блога из Wordpress в Tickets

Если вам вдруг, не дай Бог, захотелось перенести блог из wordpress'а в Tickets, то у меня для вас очередной костыль.

Порядок действий:
  1. Ставим Тикетс
  2. Ставим Articles :-)
  3. Заменяем файлы articlesimport.class.php и articlesimportwordpress.class.php в папке /core/components/articles/model/articles/import/ на эти: yadi.sk/d/dXcAXDKIo83UN
  4. Создаём раздел Articles и нажимаем кнопку Импортировать. (Во всплывающем окне не работает комбобокс, так что для выбора опции импорта из ворпресса надо как-то исхитриться с клавиатуры — вниз и энтер :-))
  5. Импортируем XML от WP. Статьи и комментарии станут тикетами.
  6. Лезем в БД и меням class_key у контейнера со статьями с ArticlesContainer на TicketsSection.
  7. Удаляем Articles и прочие Quip'ы.
Проверено 2 раза. Если что-то сломается — я не виноват :-)

Ах, да! Вероятно, если вы у контейнера Articles пропишите в настройках шаблон для дочерних документов, то он и подставится к тикетам.
01 february 2016, 19:54    Денис Дыранов
1    564    7 +3

Вебинар по MODX для новичков

Ребята, я тут сегодня провел вебинар по MODX для новичков.
Рассматривал как интегрировать шаблон, немного pdoTools, Collections и прав менеджера.
Не думаю, что профессионалам будет интересно, а для новичков, которые только начинают знакомиться с системой, будет в самый раз.
29 january 2016, 23:19    Лев Вербицкий
4    1725    56 +10

modImporter. Настройка импорта в minishop2 из 1С

В прошлой статье я писал про импорт из Excel/XLSX. Вчера-сегодня мы настраивали выгрузку из 1С. Правда по этому проекту пока не настраивали прямую выгрузку на сайт непосредственно из 1С (а просто загружали сформированный одинэской файл), но проблем с этим не должно быть, modImporter изначально имел в себе механизмы работы с 1С и до этого не раз тесты проводились успешно. К слову сказать, сейчас мы взялись переносить довольно крупный магазин с битрикса на MODX, так что в ближайшем будущем 1С-импорт будет прокачен как следует, в том числе и выгрузка заказов с сайта в саму 1С и обновление статусов заказов на сайте со стороны 1С.

В этот раз мы выполняли полный импорт, включая импорт картинок товаров, цен, остатков и производителей, многоуровневая вложенность категорий и т.п. (). В итоге получилось почти 1000 строк кода, полный файл лежит здесь.
24 january 2016, 21:22    Николай Ланец
6    1401    19 +4