Чанки и сниппеты из файлов

Всем привет.

Возникла следующая ситуация: нужно загружать чанки из файлов, файлы лежат в отдельных папках и коммитятся на Гитхаб.

С файлами удобно работать в IDE.

Находил варианты от AgelNash, но они уже не работают, а починить еще недостаточно знаний.

Так как в PHP я до сих пор новичок :), то додумался до такой страшной штуки.

Сделал сниппет LoadFile:


<?php
$base_path = "assets/elements/";
include $load = $base_path.$set_path."/".$file;


Вызываю в теле шаблона:
[!LoadFile? &set_path=`templates` &file=`content.tpl`!]

Тестирование системных тегов MODX Evo внутри файла content.tpl всё работает.

Но не работают вызовы сниппетов.

Вопросы:
  1. Как заставить работать сниппеты внутри файлов?
  2. Это рационально/правильно?
  3. Это безопасно?

6 комментариев

avatar
Зачем пилить еще 1 вариант? когда и так уже есть несколько?
github.com/dzhuryn/StaticElements-for-MODX-Evo

так же если работаете уже с файлами то можно использовать Twig или Blade
github.com/AgelxNash/EvoBlade
github.com/Pathologic/EvoTwig

Ну а в целом с версии 1.5 планирую сделать возможность работы с файлами из коробки
avatar
Спасибо!
Хочу сказать, что временами испытываю проблемы с поиском нужной информации для компонентов MODX Evo. Например, по запросу «modx evo файловые элементы или файлы в чанках» я ничего дельного не нашел. А перечисленные выше ресурсы я ни разу не попадал.

Пожалуйста, Дмитрий, сделай поддержку файлов. Считаю, что такая функция даст новый виток в развитии CRM.
avatar
А перечисленные выше ресурсы я ни разу не попадал.
Это точно. Если про Эво Твиг я читал, и даже статейка была, правда без продолжения, то про ЭвоБлейд вообще прочитал с интересом и удивлением, узнав отсюда :)

Вполне возможно, что в Телеграме это все где-то и обсуждается, но постоянно сделить за тамошними дискуссиями просто нереально, а найти там что-либо в общем потоке также нереально, инфа-то не структурирована в мессенджере.
avatar
Оба шаблонизатора ломают систему, отображается белая страница в админке.

Fatal error: Uncaught Error: Class 'DLTemplate' not found in /stomat/assets/plugins/blade/replaceTemplateBlade.php:7 Stack trace: #0 /stomat/manager/includes/document.parser.class.inc.php(1916) : eval()'d code(1): require() #1 /stomat/manager/includes/document.parser.class.inc.php(1916): eval() #2 /stomat/manager/includes/document.parser.class.inc.php(5441): DocumentParser->evalPlugin('require MODX_BA...', Array) #3 /stomat/manager/includes/document.parser.class.inc.php(2854): DocumentParser->invokeEvent('OnWebPageInit') #4 /stomat/index.php(139): DocumentParser->executeParser() #5 {main} thrown in /stomat/assets/plugins/blade/replaceTemplateBlade.php on line 7
Комментарий отредактирован 2018-06-19 13:32:44 пользователем antonfix
avatar
а доставляли через composer то что надо?
avatar
Вроде да.
Сделал загрузку через Дополнения — Composer.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.