Не работает extends в pdoTools + Fenom
Привет.
Обычно я разбираюсь в проблеме сам, так как большую часть времени эти проблемы сам себе и создаю неправильным углом налона рук в момент работы. Проще говоря, иногда торчат из задницы. Но видимо не в этот раз.
Второй вечер подряд пытаюсь решить проблему с намертво падающим php при попытке использовать механизм наследования Fenom в pdoTools.
Пример до безобразия простой.
Создаем шаблон layout с таким содержимым:
После этого создаем шаблон main для главной страницы и пишем там:
Все просто и как в документации.
Затем назначаем единственной странице шаблон main и пробуем открыть в брайзере и видим 502 Bad Gateway.
Я думал, это у меня сервер криво настроен, но на modhost.pro такая же фигня — s3509.h2.modhost.pro/.
Вот доступы на тестовый сайт.
s3509.h2.modhost.pro/manager/
s3509
nxV158wxbtul
У меня при попытке открыть страницу команда tail -f /var/log/syslog показывает, что php фулится капитально, прям segfault.
P.S. В логих modx/php соответственно тишина, так как php падает не успев туда даже что-то записать.
Обычно я разбираюсь в проблеме сам, так как большую часть времени эти проблемы сам себе и создаю неправильным углом налона рук в момент работы. Проще говоря, иногда торчат из задницы. Но видимо не в этот раз.
Второй вечер подряд пытаюсь решить проблему с намертво падающим php при попытке использовать механизм наследования Fenom в pdoTools.
Пример до безобразия простой.
Создаем шаблон layout с таким содержимым:
<!doctype html>
<html lang="ru">
<head>
{block 'meta'}
{/block}
</head>
<body>
<div class="wrapper">
{block 'header'}
{/block}
{block 'wrapper'}
{/block}
{block 'footer'}
{/block}
</div><!--/wrapper-->
{block 'scripts'}
{/block}
</body>
</html>
После этого создаем шаблон main для главной страницы и пишем там:
{extends 'template:layout'}
Все просто и как в документации.
Затем назначаем единственной странице шаблон main и пробуем открыть в брайзере и видим 502 Bad Gateway.
Я думал, это у меня сервер криво настроен, но на modhost.pro такая же фигня — s3509.h2.modhost.pro/.
Вот доступы на тестовый сайт.
s3509.h2.modhost.pro/manager/
s3509
nxV158wxbtul
У меня при попытке открыть страницу команда tail -f /var/log/syslog показывает, что php фулится капитально, прям segfault.
Nov 15 22:36:22 alroniks kernel: [723273.262036] php5-fpm[17569]: segfault at 7ffdddc22ff8 ip 00000000006b3d45 sp 00007ffdddc23000 error 6 in php5-fpm[400000+7d8000]
P.S. В логих modx/php соответственно тишина, так как php падает не успев туда даже что-то записать.
Комментарии: 13
Тоже сталкивался, но вместо extends, если расширять нечего, использую include.
от include толку мало, тоже самое что [[$chunk]] написать, разве что чуть быстрее работать будет. Нужно именно наследование.
Ну так ты расширь что-нибудь. Например, вот так сразу работает:
{extends 'template:layout'}
{block 'wrapper'}
1111
{/block}
Все просто и как в документации.В документации, всё-таки, рабочий пример, который действительно расширяет шаблон.
Т.е. если есть блоки в родительском и ни один не переопределен, то получается такая вот проблема. За фикс спасибо, но я думаю можно это как-то исправить.
Вчера поздно было и уже не стал глубоко копаться в исходниках.
Вчера поздно было и уже не стал глубоко копаться в исходниках.
Я думаю, что расширяющий шаблон должен что-то расширять, иначе зачем он нужен?
Почему так, а не иначе, можно спросить в репозитории Fenom.
Почему так, а не иначе, можно спросить в репозитории Fenom.
Ну это понятно, что должен расширять. Но по той же логике наследования, ты же можешь создать класс, унаследованный от базового, но при этой пока не переопределять методы. Т.е. приложение спроектировано, но отдельные моменты еще не реализованы. Либо замоканы либо наследуют родительское поведение. В ООП только интерфейс требует обяательной имплементации описанных сигнатур, в случае наследования от класса (даже асбтрактного) это не требуется.
{extends 'template:layout'}
{block 'wrapper'}
<!-- здесь будет расширение -->
{/block}
Не проверял, но уверен, что сработает.
Работает. Нужно, видимо, в документацию добавить этот ньюанс, сейчас сделаю PR.
Василий, подскажи пожалуйста, можно ли extends| include| insert статичные файлы, которые лежат в папке /assets/elements/… Если можно, то как это сделать?
Спасибо.
Спасибо.
Василий приветствую! интересует, могу ли я при расширении шаблона передать что нибудь в него? конкретно интересует передача класса для body. Я, конечно, понимаю, что можно значение класса обернуть в {block} — но может можно передавать в extends как это сделано в чанках? Спасибо!
Если я верно понял вопрос…
Переменные передаются.
Например определяем переменную {var $docid = $_modx->resource.id} в шаблоне, и эта переменная $docid доступна в расширении.
Если в расширении будет вставка файлового элемента, например:
{include 'file:templates/page.tpl'}, то $docid будет доступна и там.
Удобно, однако.
Переменные передаются.
Например определяем переменную {var $docid = $_modx->resource.id} в шаблоне, и эта переменная $docid доступна в расширении.
Если в расширении будет вставка файлового элемента, например:
{include 'file:templates/page.tpl'}, то $docid будет доступна и там.
Удобно, однако.
немного неправильно поняли. Есть шаблон `base` и шаблон `home` в шаблоне home пишем {extends 'template:base'} и напимер {var $doc = $_modx->resource.id} — в шаблоне base мы хотим получить $doc — но так не работает…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.