Fi1osof

Fi1osof

С нами с 05 мая 2014; Место в рейтинге пользователей: #10
Fi1osof
13 августа 2015, 19:07
+1
Речь о том, что из-за отсутствия продвинутого синтаксиса приходится делать много чанков.

Например, при выводе комментариев нужно:
— чанк обёртка всего блока с комментами
— чанк формы комментирования
— чанк комментария для авторизованного юзера
— чанк комментария для гостя
— чанк удалённого комментария
Таки да. При чем это же далеко не все еще. Самая сила — в расширениях (ты там про блоки тоже писал). Вот для примера на одной странице два варианта оформления комментариев: joxi.ru/ZrJVWD0uP5zarj (просто чтобы рассмотреть реальный пример).
Это шаблон-обертка: outer.tpl. Здесь в цикле комментарии набиваются в конечные шаблоны. Конечный шаблон комментария inner.tpl. Как видно, здесь не только условия различные можно прописать, но и проверку прав пользователя и прочие прелести. К слову, если у комментария есть дочерние комментарии, мы опять вызываем outer.tpl, то есть цикличность и вложенность здесь без проблем, с переопределением переменных, областями видимости и т.п. (многое как в обычном php). А вот это уже расширяющий inner.tpl. Суть его в том, чтобы взять исходный шаблон комментария, и изменить какие-то отдельные части этого шаблона (не переписывая его весь).
Вот без этого просто не знаю как жить. Это есть (и в феноме, и в твиге (правда не знаю на сколько прокаченно, так как есть весьма специфические задачи с блоками и вполне допустимы логические и технические ошибки)), есть ив смарти. Но этого нет в modParser.

Fi1osof
13 августа 2015, 18:30
0
Посмотри на Tickets — 28 чанков, miniShop2 — 25 чанков. Использование нормального синтаксиса позволило бы сократить их минимум раза в 2.
В ShopModxBox из «родного» только пара чанков (и то в модулях типа modCaptcha и только из соображений, чтобы работало не только с modxSmarty, но скорее всего в дальнейшем так же будет удалено). И никаких проблем с этим нет. Вряд ли проблемы возникнут и с феномом.
Fi1osof
13 августа 2015, 18:22
+1
Скорее всего вряд ли что-то поможет. В этом плане мордокнига много кому нагадила и вообще много что закрыла. Я дня три назад настраивал авторизацию с modHybridAuth. sсope прописан «public_profile,user_friends,user_photos,email,publish_actions», но в соцпрофайл в базу пишется так же без емейла.
Fi1osof
07 августа 2015, 21:44
0
Пожалуйста.
Fi1osof
07 августа 2015, 19:34
+1
Просмотрев код функции modUserUpdateProcessor::getInstance(), стала понятна причина: новый процессор назывался chwUserUpdateProcessor, однако, стандартный код искал класс с названием chWorkerUpdateProcessor, которого, естественно, не обнаруживал.
Если вы переименуете свой процессор в chWorkerUpdateProcessor, то свой метод getInstance уже прописывать не надо. Итак заработает (при условии, что класс уже был подгружен). К примеру, у меня в shopModx в самих классах сразу прописана подгрузка апдейт-процессоров. Минус тут конечно в том, что выполняется два лишних запроса к файлам (хотя относительно общего механизма — это капля в море). Но зато при выполнении апдейт-процессоров кастомный класс уже есть и на моих кастомных документах выполняются их процессоры.
Fi1osof
07 августа 2015, 19:31
0
Всегда пожалуйста!
Fi1osof
07 августа 2015, 18:09
1
+2
99.99% все дело в методе modUserUpdateProcessor::getInstance(). Он формирует маску имени класса процессора, и если класса такого нет, то вернет инстанс именно текущего (базового) процессора. Пропишите этот метод в своем классе, типа
public static function getInstance(modX &$modx,$className,$properties = array()) {
        $className = __CLASS__;
        $processor = new $className($modx,$properties);
        return $processor;
    }
Fi1osof
04 июля 2015, 14:49
+1
Ну как знаете. Судя по тому, что вы спрашиваете КАК расширять ресурсы, вы ТОЧНО ЗНАЕТЕ КАК и что должно делаться. Я за 6 лет работы с MODX, видимо, так и не понял что и как должно делаться. Право ваше. Я умываю руки.
Fi1osof
04 июля 2015, 14:07
0
Так скройте ТВ и все. В настройках форм в самом MODX можно настраивать видимость полей. Это более правильный путь, чем расширять системные таблицы. Скорее всего вы это все равно не правильно сделаете и при обновлении MODX-а все слетит.
Fi1osof
04 июля 2015, 14:02
0
Это вы конечно замахнулись… Для начала по xPDO курс от Ильи пройдите ilyaut.ru/xpdo/, чтобы в принципе понимать что и как. Это тюнинг, а не окна помыть. Ну а потом и уже это можно будет изучить: habrahabr.ru/post/253737/

А вообще вопрос: чем вам TV-поля не угодили?
Fi1osof
02 июля 2015, 08:56
+1
Не надо было ничего менять. 99% Ctrl+F5 помогает (сброс кеша браузера). Там просто JS-ы старые.
Fi1osof
30 июня 2015, 23:41
+2
Да никто не пытается обидеть человека :) Это совет в массы. Сколько не говори, а все равно довольно часто видишь в духе «Ой… У меня все сломалось. А бекапов нет :(». Так что не лишне еще раз об этом напомнить. Просто порадовало, что такие рекомендации все чаще и чаще видишь. Значит меньше народу в дальнейшем пострадает.
Fi1osof
30 июня 2015, 21:54
+1
Три сообщения из четырех содержат совет «делать бекапы»))). Бекапы рулят :)
Fi1osof
30 июня 2015, 21:53
0
У меня при обновлении с 2.2 до 2.3 только одна серьезная проблема возникала (и не раз) — сайт просто переставал работать :) Одна проблема — это в смысле из-за одной единственной причины — из-за компонента VersionX. Этот компонент устанавливает еще и виджет на главную страницу админки, и при обновлении версии ему чего-то не хватало (не помню чего именно) и происходила фатальная ошибка. При чем проблема эта довольно скрытая и не просто отлавливается. Помогло только напрямую в БД в системных настройках отключить этот виджет (удалить строку) и удалить core/cache/.
А так больше проблем никаких серьезных не возникало. Но не забываем про бекапы.
Fi1osof
26 июня 2015, 13:43
0
Предполагаю, что это лечится данным PR. На улице 21-ый век, а там до сих пор в некоторых местах мультибайтовые функции игнорятся. ПР до сих пор не принят. Ждемс…
Fi1osof
18 июня 2015, 10:34
0
Пожалуйста!
Fi1osof
18 июня 2015, 10:29
+2
На самом деле подобное надо искать на форумах по MySQL, а не по MODX. Здесь xPDO — Только инструмент. Но он нужен только для составления SQL-запроса. Если нет понимания какой именно и как запрос составить — то не составишь. Поэтому прокачивай SQL. Это на самом деле простейший запрос.
Fi1osof
18 июня 2015, 10:24
0
$q = $modx->newQuery('TicketsClass');
$q->innerJoin('TVClass', "TVAlias", "TVAlias.tmplvarid = {$tv_id} AND TVAlias.ticket_id = TicketsClass.id");
$q->select(array(
	"count(*)",
	"TVAlias.value"
));
$q->groupby(2);
$q->sortby(1, "DESC");
$s = $q->prepare();
$s->execute();
$rows = $s->fetchAll(PDO::FETCH_ASSOC);
И этому всему ресурсов практически не нужно.
Fi1osof
18 июня 2015, 10:21
0
Там уже пишу ответ.