Aliaksandr
Ну чанк внутри чанка внутри сниппета внутри сниппета такое часто бывает =))
я имею в виду например чанк productDL, который я потом смогу и в каталоге использовать, и в категории, и в блоке "похожие товары" и в блоке "рекомендуем посмотреть" и в блоке "последние товары из этой категории"
Aliaksandr
а не это инлайн-месиво, которое потом еще и копипастить надо , перекрестясь, чтобы не захотел никто заголовок и текст местами поменять или добавить какой-нибудь рейтинг
Dmytro
тоесть как снипет в снипете в снипете и куча чанков ок
Dmytro
а как заюзать инклюд в BLADE так пипец как плохо
Dmytro
Да при том что я не понимаю проблемы
Aliaksandr
я говорю конкретно про тот скрин, где в блейде вызывается сниппет с инлайновыми блейдовыми же шаблонами
Aliaksandr
это хирня полнейшая
Dmytro
@include('partial.docliter-item-tpl')
Aliaksandr
кто мешает шаблон вынести в отдельный файлик ???
откуда я знаю кто и кому мешает, это разве мой скрин? )
Dmytro
в чем проблема ?
Pathologic
если в чанке только вывод, то смысла использовать шаблонизатор в чанке тоже нет никакого
Dmytro
Я считаю что красиво юзать или MODX шаблонизатор или полностью Twig или Blade
Dmytro
но не использовать совместно что бы не было каши после
Dmytro
ибо когда половина чанктов MODX а половина других шааблонизаторов в одном проекте то это печально и не красиво
Dmytro
хотя работает хорошо и проблем нет но нафига ???
Aliaksandr
т.е. вот так и надо?))
Aliaksandr
подскажите плиз по blade {!! $modx->runSnippet('DLMenu',[ 'parents' => 0, 'maxDepth' => 1, 'outerTpl' => '@B_CODE <nav{{ $data["classes"] }}>{{ $data["wrap"] }}</nav>', 'rowTpl' => '@B_CODE <a href="{{ $data["url"] }}">{{ $data["title"] }}</a>' ]) !!} {{ $data["wrap"] }} в этом случае экранируется и выводится html на страничку. могу предположить, что решается через файлы, но может и другое решение есть? {!! $data["wrap"] !!} выдает ошибку
Pathologic
ибо когда половина чанктов MODX а половина других шааблонизаторов в одном проекте то это печально и не красиво
в проекте один шаблонизатор, но в примере получается шаблонизатор ради шаблонизатора
Pathologic
для красоты можно эти шаблоны вынести в конфиг
Pathologic
или не выводить меню этими чанками
Камиль
если я понимаю как шаблонизатор работает
Dmytro
{!! $modx->runSnippet('DLMenu',[ 'parents' => 0, 'maxDepth' => 1, 'outerTpl' => '@B_CODE <nav{{ $data["classes"] }}>{{ $data["wrap"] }}</nav>', 'rowTpl' => '@B_CODE <a href="{{ $data["url"] }}">{{ $data["title"] }}</a>' ]) !!} Работет на отлично но это не красиво и не правильно. Ибо тот кто не знает MODX не сможет с этим работать
Pathologic
B_CODE или T_CODE в целом имеют смысл только при использовании стандартного парсера
Aliaksandr
а когда {{ - то код экранирует )
Dmytro
человек пишет, что так ошибка )
Ну да @_CODE не дает внутри юзать {!! !!}
Pathologic
то что они вообще работают, это недокументированная особенность
Dmytro
а это печаль
Aliaksandr
короче инлайновая шаблонизация для многих случаев - отстой, потому что нарушает базовый принцип объявления одной и той же сущности один раз
Pathologic
верно
Aliaksandr
ну так используй обычный @CODE - в чем там проблема то? )) это же базовый функционал используемого сниппета, зачем писать {{ $data[wrap] }} там где можно просто написать [+wrap+] :)
Александр
короче инлайновая шаблонизация для многих случаев - отстой, потому что нарушает базовый принцип объявления одной и той же сущности один раз
согласен. но это в случае если конструкция повторяется больше чем в одном месте. эсли конструкция уникальна и неповторимо, имхо, инлайн также допустим
Dmytro
ну так используй обычный @CODE - в чем там проблема то? )) это же базовый функционал используемого сниппета, зачем писать {{ $data[wrap] }} там где можно просто написать [+wrap+] :)
Затем что б было все единообразно а не {{ $data["wrap"] }} и [+wrap+] нужно или то или то смысл добавлять и миксовать это ?? вот обьясните зачем ??
Aliaksandr
а если нужно что-то более сложное - то или prepare или в чанке/файле шаблон и там крути что хочешь)
Dmytro
Aliaksandr
красота вопрос спорный - как по мне {!! $data["wrap"] !!} больше похоже на месиво, чем [+wrap+] - но в этом чате это уже вопрос более религиозный, потому даже и спорить не буду )
Dmytro
затем, что предложенный твой вариант просто не работает, как бы ты не упирался )))
мой вариант работает на отлично если мы уходим от tpl в снипетах вообще ! тоесть есть контроллер в нем готовим $data которые передаем в шаблон где уже чистым Blade все обрабатываем 🙂 И как ни странно это реализовывает патерн MVC
Aliaksandr
надо выносить в чанк или файл , а не инлайнить - чтобы заработало
Dmytro
красота вопрос спорный - как по мне {!! $data["wrap"] !!} больше похоже на месиво, чем [+wrap+] - но в этом чате это уже вопрос более религиозный, потому даже и спорить не буду )
Не мешаейте одно с другим - вот в чем релизия 🙂 тоесть или стандартный шаблонизатор и [++] или уже blade twig и $data но не надо в blade и twig тулить [++]
Александр
если снипет вызывать в контроллере и отдавать массив - небудет ничего экранироваться )
Pathologic
экранироваться будет при выводе шаблонизатором
Aliaksandr
Не мешаейте одно с другим - вот в чем релизия 🙂 тоесть или стандартный шаблонизатор и [++] или уже blade twig и $data но не надо в blade и twig тулить [++]
вот когда он это сделает без стандартного сниппета, в котором [+параметр+] - это норма, тогда пусть и не тулит ))
Камиль
Просто интереса ради проверил)) так работает @php $options = [ 'parents' => '0', 'ownerTPL' => '@B_CODE:{!!$data["dl.wrap"]!!}', 'tpl' => '@B_CODE:<strong>{{$data["pagetitle"]}}</strong>' ]; @endphp {!! $modx->runSnippet('DocLister', $options) !!}
Pathologic
ну это херня совсем
Pathologic
хак
Aliaksandr
пиздец, поплыли говнокодить ))
Камиль
😁это моя тема
Dmytro
да, такой вариант самый правильный, но если меню быстрее/удобнее сделать на tpl, то значит нужно делать на tpl
Нужно делать как правильно а а не как быстрей что б не было мучительно больно в будущем
Aliaksandr
давай сразу на пхп, нафига скромничать ))
Dmytro
давайте сделаем вид что @php не рабоатет в шаблоне )
Камиль
Dmytro
ну а как это может быть мучительно больно в будущем
когда твой проект будет поддерживать кто то то другой
Pathologic
интуитивно понятно, что [+wrap+] это плейсхолдер
Aliaksandr
точно, вдруг твой проект попадется битриксоиду ))
Aliaksandr
а он такой хопа - че за жопа.. какие-то {!! какие-то @evpParser )))
Pathologic
плюс есть документация
Dmytro
Как по мне вот так понятно и удобно: https://take.ms/HXxdV
Dmytro
Dmytro
Pathologic
о да
Pathologic
parseDocumentSource
Dmytro
parseDocumentSource
Ну сори я пока хз как избавиться от плейсхолдеров передаваемых в значении по умолчанию в ТВ 🙂
Aliaksandr
а че везде getConfig, а в одном месте config[] ? ))
Pathologic
<meta name="description" content="{{ resource['meta-description'] ?: resource.introtext }}"> <meta name="keywords" content="{{ resource['meta-keywords'] ?: resource.pagetitle }}"> вот так