Pathologic
ну там не то что ошибки, хотя есть и ошибки, там просто плохой код, в котором сложно разобраться
Aliaksandr
там за 6 лет тысячи багов отловили, еще столько же не нашли и функционала накинули в десять раз больше, чем было изначально. вряд ли кто-то вот так с нуля возьмет и сразу напишет что-то лучше, особенно в рамках бюджетов на эво-сайты )
Dmytro
Pathologic
Pathologic
но и предлагать людям без опыта получать данные через элоквент это тоже не дело
Aliaksandr
Хотелось бы для начала понять как же все-таки выводить правильно трехуровневое меню в шапке сайта "по канонам" )
Aliaksandr
а потом уже можно и про элоквент )
Ilya
Что-то готовое для меню, для списков ?
Andrey
Ilya
Спорите, но не понятно вообще, куда все движется, в говнокод прямо в шаблоне или в четкое разделение по обязаннастям ?
Pathologic
Pathologic
а остальные его расширяют и добавляют свои данные при надобности
Pathologic
а с меню уже разобрались, что или простыня в шаблоне или по старинке
Aliaksandr
ну меню это частный случай, кроме меню много других каких-то общих элементов, которые в том числе надо стилизовать на уровне верстки
Pathologic
жалко я прогнал артура плугина, уж он бы научил как правильно и со сжатием через пнг
Ilya
/top@Axenia_Bot
Ilya
/my_stats@Axenia_Bot
Андрей
/my_stats@Axenia_Bot
Андрей
/my_stats@Axenia_Bot
Dmytro
📊 Место в рейтинге: 437679 - это че столько дофига мемеберов в евоцмс или это рейтинг в телеге?
Pathologic
/my_stats@Axenia_Bot
Азамат
Всем привет. Подскажите, пожалуйста, как сделать в ресурсе тв типа массив
Азамат
Чтобы можно было добавлять элементы списка
Dmytro
multiTV
Азамат
Типа migx в рево
Dmytro
assets/tvs/multitv/configs - там описываешь свой тв массив
Азамат
Спасибо. Попробую разобраться
Ilya
/gitdoc@EVO_CMS_bot
Ilya
/help@Axenia_Bot
Ilya
/blacklist@EVO_CMS_bot
Yaroslav
/blacklist@EVO_CMS_bot
Dmytro
тут у меня вообще какая мысля -
фактически что делает сниппет: составляет запрос, обрабатывает данные, парсит данные для вывода, делает пагинацию
в теории упрощенно типа так
$params = $paramsController->parse($snippetParams);
$sqlObject = $queryController->makeSQL($params['query']);
$dataObject = $dataController->makeQuery($sqlObject,$params['data']);
$paginationObject = $paginationController->makePagination($sqlObject,$params['pagination']);
$output = $outputController->parseData($dataObject,$paginationObject,$params['output']);
return $output;
то есть, для ядра надо добавить 5 контроллеров, каждый из которых будет заниматься своим делом.
И фактически, тогда можно будет написать любой сниппет в таком формате.
а практически менять надо будет только $dataController на свой
$paramsController->parse - просто сортирует данные, которые прилетают в сниппете по своим группам
$queryController->makeSQL - составляет объект из выборки, откуда, условие, сортировка, лимиты, то есть select/from/where/sortby/limit из любых таблиц
$paginationController->makePagination - если нужна пагинация, заполняет массив/обект с данными пагинации и парсит их с помощью $outputController->parseData
$dataController->makeQuery - тупо выборка ресурсов с лимитом или без/ возможность обрабатывать данные каждой записи / дополнительная фильтрация с правкой $sqlObject для корректирования пагинации
$outputController->parseData - грубо говоря parseChunk
Yaroslav
Ilya
тут у меня вообще какая мысля -
фактически что делает сниппет: составляет запрос, обрабатывает данные, парсит данные для вывода, делает пагинацию
в теории упрощенно типа так
$params = $paramsController->parse($snippetParams);
$sqlObject = $queryController->makeSQL($params['query']);
$dataObject = $dataController->makeQuery($sqlObject,$params['data']);
$paginationObject = $paginationController->makePagination($sqlObject,$params['pagination']);
$output = $outputController->parseData($dataObject,$paginationObject,$params['output']);
return $output;
то есть, для ядра надо добавить 5 контроллеров, каждый из которых будет заниматься своим делом.
И фактически, тогда можно будет написать любой сниппет в таком формате.
а практически менять надо будет только $dataController на свой
$paramsController->parse - просто сортирует данные, которые прилетают в сниппете по своим группам
$queryController->makeSQL - составляет объект из выборки, откуда, условие, сортировка, лимиты, то есть select/from/where/sortby/limit из любых таблиц
$paginationController->makePagination - если нужна пагинация, заполняет массив/обект с данными пагинации и парсит их с помощью $outputController->parseData
$dataController->makeQuery - тупо выборка ресурсов с лимитом или без/ возможность обрабатывать данные каждой записи / дополнительная фильтрация с правкой $sqlObject для корректирования пагинации
$outputController->parseData - грубо говоря parseChunk
Попей водички, брат, побольше, оно долго не держит +)
Dmytro
это я еще пока трезвый)) ща пивка рубану, еще и забанят)))
Anonymous
Anonymous
тут у меня вообще какая мысля -
фактически что делает сниппет: составляет запрос, обрабатывает данные, парсит данные для вывода, делает пагинацию
в теории упрощенно типа так
$params = $paramsController->parse($snippetParams);
$sqlObject = $queryController->makeSQL($params['query']);
$dataObject = $dataController->makeQuery($sqlObject,$params['data']);
$paginationObject = $paginationController->makePagination($sqlObject,$params['pagination']);
$output = $outputController->parseData($dataObject,$paginationObject,$params['output']);
return $output;
то есть, для ядра надо добавить 5 контроллеров, каждый из которых будет заниматься своим делом.
И фактически, тогда можно будет написать любой сниппет в таком формате.
а практически менять надо будет только $dataController на свой
$paramsController->parse - просто сортирует данные, которые прилетают в сниппете по своим группам
$queryController->makeSQL - составляет объект из выборки, откуда, условие, сортировка, лимиты, то есть select/from/where/sortby/limit из любых таблиц
$paginationController->makePagination - если нужна пагинация, заполняет массив/обект с данными пагинации и парсит их с помощью $outputController->parseData
$dataController->makeQuery - тупо выборка ресурсов с лимитом или без/ возможность обрабатывать данные каждой записи / дополнительная фильтрация с правкой $sqlObject для корректирования пагинации
$outputController->parseData - грубо говоря parseChunk
А теперь внимание на скрин от Сергея
Dmytro
ну кака, а че?
Anonymous
ну кака, а че?
Не кака. А та же логика с выборками и пагинациями
Ilya
это отличный пример индивидуального решения
Ilya
под какой-либо проект
Dmytro
ага)
Dmytro
а так кака - хтмл код вшит внутри
Ilya
но не для общака
Anonymous
С тем же успехом эти объекты можно отправить во вьюху
Anonymous
И там обработать
Anonymous
И не надо чанки парсить
Ilya
Сейчас Tyler Otwell тебе дал леща =)
Dmytro
я просто предложил свой вариант общего видения
Dmytro
пат, говорит, доклистер переписать надо
Anonymous
Тут скорее был пример что можно получить через eloqument и пагинации вхерачить
Ilya
Taylor простите +)
Anonymous
В том числе и твшки получить
Ilya
Если кодим во вьюхах, тогда это уже не MVC =)
Dmytro
суть заключается в том, что каждый контроллер должен уметь работать самостоятельно, на передаваемых ему данных
Ilya
Брат, ты водички попил ?
Dmytro
уже пивас открыл, нфик мне водичка))
Ilya
хахаха =) ну понеслась, да +)
Anonymous
Почему вы так любите из шаблона слать данные на левый обработчик который занимается получением дополнительных данных и их отдельным парсингом?
Anonymous
Это же лишний шаг
Dmytro
ну я думаю, что это путь к универсальности
Dmytro
каждый занимается только своим
Ilya
дороги к универсальности ведут в АДъ
Dmytro
для нашего случая - нет)
Dmytro
должна быть базовая основа
Dmytro
хоть какаято
Dmytro
например в рево - это pdoTools
Anonymous
Ilya
Вся бизнес логика закладывается в модель, правило просто жирные модели, худые контроллеры
Ilya
В контроллере по факту вообще ничего не должно делаться, он данные принял, отправил массив с результатом обработанных во вьюху - это все =)
Dmytro
я же говорю, это обобщенно, грубо говоря - это строки кода $modx->runSnippet
Dmytro
и как я написал, каждый из этапов отправляет свой массив с результатом
Ilya
Dmytro
нужны)))