Для разработчиков

Прокачиваем навык программирования на Fenom

Информация для разработчиков. Сложность средняя.
Практически все разработчики MODX используют тот или иной шаблонизатор. Большинство в рунете сделали свой выбор в пользу Fenom. Благодаря Василию конечно. Этот шаблонизатор достаточно простой и лёгкий. И его функционала хватает для решения практически всех своих задач. В этой статье мы посмотрим на него немного под другим углом и попробуем его возможности расширения.
Сергей Шлоков
25 августа 2017, 07:32
modx.pro
36
2 748
+24

Использование модификаторов Fenom в PHP

Заметка коротенькая, но может быть полезной.

Все знают, что мы можем добавлять собственные модификаторы Fenom на событие pdoToolsOnFenomInit. А как быть, если мы хотим потом использовать этот же модификатор не в чанках и шаблонах, а в своих PHP скриптах?

А очень просто:
$pdoTools = $modx->getService('pdoTools');

$string = 'Some very very long string';
if ($truncate = $pdoTools->getFenom()->getModifier('truncate')) {
	$string = $truncate($string, 10);
}

return $string;
Здесь мы получаем модификатор truncate и обрезаем строку до 10 символов, если она больше.
Василий Наумкин
20 августа 2017, 11:10
modx.pro
13
1 767
+10

Как подружить Tickets и TinyMCE

Разрабатывая свой очередной (аж второй :) ) проект на Modx Revolution столкнулся со странностью поведения сниппета Tickets (tickets-1.6.16-pl ): при создании тикета не появлялась стандартная панелька Modx с кнопками сохранения, отмены и помощи в правом верхнем углу админки. Вот так выглядит админка при создании нового тикета: кнопок нет, полос прокрутки нет.

Погуглив я обнаружил, что неодинок в своих проблемах: этот вопрос неоднократно поднимался даже на этом ресурсе. Вариантов решения аж 2 (из комментариев к тем записям):
  1. Поставить другой редактор (у меня установлен TinyMCE-4.3.4-pl)
  2. Или использовать хак
Но неужели ничего нельзя сделать? Давайте попробуем разобраться под катом.
livalex
23 февраля 2017, 19:36
modx.pro
2
3 651
+5

modNodejs - Интеграция Nodejs в MODx

Всем доброе утро. Сегодня представляю на всеобщее обозрение компонент над которым я потел последние несколько дней.

Заголовок говорит сам за себя, это интеграция Nodejs в MODx.
Так зачем он нужен? Для realtime! Как сказал Николай: «технологии диктуют».

Простейший пример: в minishop2 поступил заказ, а менеджер гуляет по админке\сайту, вот что он увидит:

Без перезагрузки страницы и тд, можно выполнить любой js по наступлению эвента.
but1head
21 января 2017, 03:11
modx.pro
20
9 840
+27

Собственные модификаторы Fenom

Продолжаю разработку новой версии modstore.pro и хочу поделиться простым способом подключения своих модификаторов.

Обычный способ все знают: нужно создать сниппет, который будет принимать переменные $input и $options и вызвать его в чанке вот так:
{$variable | snippet}
Но
  • Сниппеты бывают совсем небольшие и создавать их на каждый чих не хочется
  • Вызов сниппета, это всё-таки дополнительная нагрузка
  • Лично я уже полностью перешел на файлы, и создавать запись в БД для сниппета, только ради его связи с файлом мне совсем не хочется
То есть, я хочу просто вызывать некий код в качестве модификатора. И в этом мне поможет событие pdoToolsOnFenomInit, которое появилось в pdoTools 2.6.0 и мало кто это заметил.
Василий Наумкин
14 января 2017, 05:49
modx.pro
23
4 520
+14

Практика резервного копирования на MODX

С ростом опыта и усложнением работ, все актуальнее становится тема резервного копирования базы данных, особенно при наличии большого объема информации.
Хочу поделиться своим опытом с начинающими разработчиками, а также почитать советы опытных мастеров.
Мне такая статья очень пригодилась бы на определенном этапе развития.

Николай Савин
27 декабря 2016, 21:34
modx.pro
5
6 952
+7

groupIt - обертка результатов.

Была задача вывод элементов от pdoResources поделить на группы и обернуть их в div.
Поиск дал приятный результат, я нашел ответ в виде спиппета groupResources(это был обычный велосипед) и переписал его на свой лад.
Пример его работы
<div class="group">
     ContentA
     ContentB
     ContentC
   </div>
   <div class="group">
     ContentD
     ContentE
   </div>
DimenSi
14 августа 2016, 08:00
modx.pro
31
3 316
+26

Доступ к странице сайта по id

Давно работаю с modx, но только сегодня узнал, что достучаться до любой страницы сайта при включенных ЧПУ можно дописав в адресной строке после имени домена ?id=Идентификатор_ресурса. Например, site.ru/?id=5375.
Рад если кому-то пригодится!
Дмитрий Куликов
09 июня 2016, 08:30
modx.pro
2
2 931
-2

Делаем колбеки miniShop2 для всех

Всем привет! Так как в miniShop2 есть список колбеков для того, чтобы на определённые действия, совершаемые компонентом, можно было повесить свой код и, тем самым, дополнить работу магазина, то многие разработчики дополнений используют их в своём коде. Я уж не говорю о вебмастерах, которые используют этот инструмент для решения определённых нужд в своих сайтах.

В чём проблема?

В связи с этим получается проблема. Колбеков мало, а желающих воспользоваться ими — много. Я уже не раз сталкивался с тем, что некоторые компоненты из Modstore не могут работать вместе, т.к. используют одни и те же колбеки, на одних и тех же страницах.
Проблема в том, что код одного компонента, использующего, например miniShop2.Callbacks.Order.getcost, пересекается с другим кодом, другого компонента, использующего этот же колбек. Получается конфликт, который я для себя, в своих пакетах, решаю так:
Павел Гвоздь
22 мая 2016, 00:53
modx.pro
12
3 840
+3

Ошибка в работе сниппета MinifyX

Всем привет!
Установил пакет minifyX, все работало прекрасно пока не возникла ошибка:
Fatal error: Uncaught exception 'Sabberworm\CSS\Parsing\UnexpectedTokenException' with message 'Identifier expected. Got “: 768”' in D:\OpenServer\domains\projects\site.ru\www\core\components\minifyx\munee\vendor\sabberworm\php-css-parser\lib\Sabberworm\CSS\Parser.php:174 Stack trace: #0 D:\OpenServer\domains\projects\site.ru\www\core\components\minifyx\munee\vendor\sabberworm\php-css-parser\lib\Sabberworm\CSS\Parser.php(398): Sabberworm\CSS\Parser->parseIdentifier(true, false) #1 D:\OpenServer\domains\projects\site.ru\www\core\components\minifyx\munee\vendor\sabberworm\php-css-parser\lib\Sabberworm\CSS\Parser.php(353): Sabberworm\CSS\Parser->parsePrimitiveValue() #2 D:\OpenServer\domains\projects\site.ru\www\core\components\minifyx\munee\vendor\sabberworm\php-css-parser\lib\Sabberworm\CSS\Parser.php(185): Sabberworm\CSS\Parser->parseValue(Array) #3 D:\OpenServer\domains\projects\site.ru\www\core\components\minifyx\munee\vendor\sabberworm\php-css-parser\lib\Sabberworm\CSS\Parser.php( in D:\OpenServer\domains\projects\site.ru\www\core\components\minifyx\munee\vendor\sabberworm\php-css-parser\lib\Sabberworm\CSS\Parser.php on line 174
Роман А.
12 мая 2016, 18:59
modx.pro
2 956
-2