Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
15 сентября 2017, 17:10
+2
Но как им передавать такие чанки в параметрах, используя синтаксис Fenom?
Никак. Метод $modx->getChunk(), который используют все эти сниппеты, не умеет работать с файловыми чанками и не понимает данный синтаксис. Это умеет делать только метод $pdoTools->getChunk().

П.С. Ну и функция chunk() из библиотеки modHelpers.
Сергей Шлоков
15 сентября 2017, 17:06
+1
Я понял, что мой вопрос вы не поняли. С чего вдруг сниппет TaggerGetTags должен уметь загружать чанки, указанные с использованием синтаксиса pdoTools? Теперь понятно?
Сергей Шлоков
15 сентября 2017, 16:38
0
А какая связь между сниппетом TaggerGetTags и pdoTools?
Сергей Шлоков
15 сентября 2017, 12:06
1
+2
Вообще, логику в чанках лучше не определять. Если рассматривать MODX с точки зрения MVC концепции (насколько это возможно), то чанк — это вид. И среди программистов не принято в видах прописывать логику. Для этого есть контроллеры. В MODX это лучше делать в плагинах
// Плагин
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
            $fenom->addAccessorSmart("product", "data", Fenom::ACCESSOR_PROPERTY);
            $fenom->data = [
                "name" => '', // Тут имя определяете по вашему условию
            ];
    break;
}
А в чанке просто вызывать
Фильтры для {$.product.name}
Сергей Шлоков
12 сентября 2017, 08:33
+1
В данном случае всё зависит от железа. Про какие-то ограничения с пользователями я не слышал, а вот с ресурсами была такая проблема. На хабре была статья Николая Ланца про это. По моему свыше 300 тыс. ресурсов MODX уже обработать не может. Нужно отключать кэширование карты алиасов и чего-то там ещё. В общем выкручиваться.
Сергей Шлоков
12 сентября 2017, 08:07
+1
Начал писать видео по созданию обработчиков событий и оказалось, что мои исправления бага в методе addEventListener двухлетней давности в ветку 2.5.x не попали. Они остались в ветке 2.х. Так что откладываем это до времени исправления этого метода. Хотя первая часть видео, где создается этот функционал, готова. А вот та часть, где пробуем их запустить, не дописана.

П.С. По большому счету, если кому интересен сам процесс, а не результат, то я могу поправить метод addEventListener и дописать видео. Но пакет работать не будет до исправлений ядра MODX.
Сергей Шлоков
10 сентября 2017, 10:59
+2
Спасибо.
в первом уроке есть задублированный кусок, где-то на 4:45 начало — дубль начинается на 6:10
Классика — первый блин комом. При компиляции видео случайно добавил один кусок 2 раза. Поправил, спасибо.
Сергей Шлоков
09 сентября 2017, 21:12
+1
Читаю middleware — вижу Laravel.
Хорошее зрение :)
Посредники есть в yii2 (фильтры называются), есть в codeigniter (ставятся отдельным пакетом), в slim 3 (на нём MODX 3 сделан).
Сергей Шлоков
28 августа 2017, 19:40
+1
Забугорные разработчики fullCalendar почему-то обошли яндекс своим вниманием. Русофобы наверно ☺.Вернусь из отпуска гляну на апи яндекса. Может и прикручу. А пока прокачиваю умение лепить куличи и надувать круги, это поважнее всяких календарей. :)
Сергей Шлоков
25 августа 2017, 17:18
+1
Сессия может пригодится, когда нужно передать данные между запросами. Но, как я уже говорил, нужно помнить, что MODX записывает данные сессии в таблицу сессий, что увеличивает её размер. При высокой посещаемости это может вырасти в проблему.

П.С. Добавил пример про линейный тег includeFile.
Сергей Шлоков
25 августа 2017, 10:48
+1
Согласен. Главное исключить вероятность пересечения названия, чтобы ничего не поломалось.
Сергей Шлоков
23 августа 2017, 07:34
+4
Старость — не радость. Забыл написать про изменение функции parse(). Теперь у неё 2 режима: быстрый парсинг и полный. Быстрый — для простой замены тегов
$tpl = '<li>[[+id]]. [[+username]]</li>';
// В цикле меняем
...
$output .= parse($tpl, $data);
...
$output = '<ul>' . $output . '</ul>'
А полный парсинг работает как getChunk для инлайн чанка. Т.е. можно указать полноценную строку с тегами чанков, сниппетов.
$tpl = 'Строка с вызовом чанка [[$chunk]].';
$output = parse($tpl, $data, true, 5);
Для полного парсинга нужно передать в третьем параметре TRUE. В четвертом можно указать количество итераций парсера. По-умолчанию, 10.
Сергей Шлоков
20 августа 2017, 11:53
+5
Даже если бы это работало, выглядит просто ужасно. Вариантов для рефакторинга много, советую посмотреть в сторону Fenom.
Сергей Шлоков
20 августа 2017, 06:57
+1
где исправить чтобы подсвечивалась только активная страница и категория
В css.
Сергей Шлоков
19 августа 2017, 08:09
+1
Для этого пригодится событие OnWebLogin.
Сергей Шлоков
16 августа 2017, 15:42
+2
Новое — это хорошо забытое старое.

П.С. Маленький совет. Лучше обозвать топик «Связанные комбобоксы в ExtJs» или «Связанные списки в ExtJs». Так ближе к смыслу и легче будет потом найти пользователям.
Сергей Шлоков
16 августа 2017, 07:29
+1
if (is_guest()) login($_POST['username']);
Сергей Шлоков
10 августа 2017, 22:12
0
Вместо
"1 = 1 AND FIND_IN_SET('Москва', from_city)"
можно (правильней) написать
"FIND_IN_SET('Москва', from_city) > 0"