Возможно ли заставить работать плейсхолдеры в зарегистрированном коде?
При регистрации кода при помощи:
Можно ли заставить работать плейсхолдеры в зарегистрированном коде?
cssToHead — регистрация CSS кода в шапке страницыИли
htmlToHead — регистрация произвольного HTML в шапке страницы
htmlToBottom — регистрация произвольного HTML в подвале страницы
jsToHead — регистрация javascript файла в шапке страницы. Если передать параметром true, то можно регистрировать сразу код.
jsToBottom — регистрация javascript в подвале страницы. Если передать параметром true, то можно регистрировать сразу код.
$_modx->regClientCSSплейсхолдеры ни в MODX-вварианте — [[+placeholder]] или [[*placeholder]], ни на Fenom — {$placeholder} НЕ РАБОТАЮТ. В исходном коде и на странице отображаются в неизменном виде.
$_modx->regClientScript
$_modx->regClientStartupHTMLBlock
$_modx->regClientHTMLBlock
Можно ли заставить работать плейсхолдеры в зарегистрированном коде?
Комментарии: 18
Неужели проблема нерешаема?
Скорее всего решаема, только вот проблема не озвучена. В системе есть настройка fix_your_problems, попробуйте его включить, вдруг поможет
Вроде описал, что плейсхолдеры отображаются в неизменном виде.
Например, если прописывать регистрацию кода в чанке, который относится к сниппету.
Есть вызов сниппета, там прописано:
Регистрирую в этом чанке код html и js, указанными выше способами. Прописываю в нем (регистрируемом коде) в нужных местах плэйсхолдеры. Код регистрируется там где мне нужно, однако плэйсхолдеры не работают — остаются в неизменном виде.
Например, если прописывать регистрацию кода в чанке, который относится к сниппету.
Есть вызов сниппета, там прописано:
'tplForm' => '@FILE chunks/my_chank.tpl'
В этом чанке все нужные плейсхолдеры работают. Регистрирую в этом чанке код html и js, указанными выше способами. Прописываю в нем (регистрируемом коде) в нужных местах плэйсхолдеры. Код регистрируется там где мне нужно, однако плэйсхолдеры не работают — остаются в неизменном виде.
Вы хотите, чтобы MODX распарсил теги в яваскрипт файле?
Нет не в файле а в регистрируемом коде, который находится в чанке. Плейсхолдеры в чанке работают, ниже в этом же чанке прописываю регистрацию кода, в котором плейсхолдеры не работают.
Вот комментарии:
modx.pro/help/17975#comment-109213
modx.pro/help/17975#comment-109225
Вот комментарии:
modx.pro/help/17975#comment-109213
modx.pro/help/17975#comment-109225
Вообще теги остаются только при аякс запросах.
В Вашем случае логичнее всего предположить, что Вы выставляете теги несуществующих плейсхолдеров.
В Вашем случае логичнее всего предположить, что Вы выставляете теги несуществующих плейсхолдеров.
Плейсхолдеры рабочие, в чанке они работают.
Есть чанк — my_chank.tpl, в нем прописываю:
Есть чанк — my_chank.tpl, в нем прописываю:
<b>{$placeholder}</b> // выводит значение плейсхолдера
{$_modx->regClientHTMLBlock('
<b>{$placeholder}</b> // тег плейсхолдера выводится в неизменном виде - {$placeholder}
')}
или так:{'<b>{$placeholder}</b>' | htmlToBottom : true} // тоже в неизменном виде
{'<b>{$placeholder}</b>' | htmlToBottom} // тоже в неизменном виде
{('<b>' ~ $placeholder ~ '</b>') | htmlToBottom : true}
Сергей, благодарю.
Так плейсхолдеры работают.
Так плейсхолдеры работают.
Сергей, а не подскажешь, возможно ли вывести значения плейсхолдеров без регистрации кода, прописав их в главном шаблоне?
Может не так выражусь, типа сделать их глобальными или хотя бы чтобы они работали не только в чанке, но и в главном шаблоне.
Может не так выражусь, типа сделать их глобальными или хотя бы чтобы они работали не только в чанке, но и в главном шаблоне.
Дмитрий, мы тут все наблюдаем, зачем же Вам понадобилось парсить плейсхолдеры, которые внутри регистрируемого через методы кода, а Вы сразу же как нашлось решение, спрашиваете — а
возможно ли вывести значения плейсхолдеров без регистрации кодаРасскажите?
Я недавно знаком с MODX, можно сказать, только учусь. Поэтому интересуюсь и такой возможностью.
А где вы отрыли вообще эту информацию о методах
docs.modx.pro/komponentyi/pdotools/parser#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80-Fenom
и нашел упоминание только об одном методе, значит вы явно отрыли их не на этой странице.
Я могу ошибаться, но считаю, что 99 процентов разработчиков вообще ими не пользуется для сайтов. Эти методы скорее нужны для написания компонентов и регистрации каких-то строго определенных скриптов.
$_modx->regClientCSSи зачем вообще решили ими пользоваться? Я специально зашел на страницу документации по fenom
$_modx->regClientScript
$_modx->regClientStartupHTMLBlock
$_modx->regClientHTMLBlock
docs.modx.pro/komponentyi/pdotools/parser#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80-Fenom
и нашел упоминание только об одном методе, значит вы явно отрыли их не на этой странице.
Я могу ошибаться, но считаю, что 99 процентов разработчиков вообще ими не пользуется для сайтов. Эти методы скорее нужны для написания компонентов и регистрации каких-то строго определенных скриптов.
… и нашел упоминание только об одном методе, значит вы явно отрыли их не на этой странице.Конечно не на этой странице, а вот здесь:
docs.modx.com/revolution/2.x/developing-in-modx/basic-development/snippets/adding-css-and-js-to-your-pages-through-snippets
Ну там видите как озаглавлена страница? Как подключать css и js изнутри созданного вами сниппета.
И это имеет смысл, поскольку обращение идет к объекту приложения $modx, который доступен только внутри сниппета.
А вот использовать эти методы для объекта $_modx на мой взгляд бесполезно, хотя мало ли…
И это имеет смысл, поскольку обращение идет к объекту приложения $modx, который доступен только внутри сниппета.
А вот использовать эти методы для объекта $_modx на мой взгляд бесполезно, хотя мало ли…
Как подключаете Вы — так работать не будет! MODX своим парсером, на сколько я знаю, не заглядывает в подключаемые таким образом js файлы, соответственно никаких плейсхолдеров не будет внутри.
А вот если создать ресурс с типом js и внутри писать js-код с динамикой, а потом этот ресурс подключать по ссылке — вот так работать будет. Но сам такой подход уже попахивает не очень.
А вот если создать ресурс с типом js и внутри писать js-код с динамикой, а потом этот ресурс подключать по ссылке — вот так работать будет. Но сам такой подход уже попахивает не очень.
Я же не писал, что файлы регистрирую. В файлах мне не нужно чтобы работало. Интересует в самом зарегистрированном коде.
Регистрирую так:
Однако плейсхолдеры не работают.
Регистрирую так:
{$_modx->regClientHTMLBlock('
<script>
здесь js-код с плейсхолдерами
</script>
......
здесь html код с плейсхолдерами
'}
Однако плейсхолдеры не работают.
Вот так можно попробовать
{$modx->setPlaceholder('namePlaceholder','text')}
{$_modx->regClientScript('
<script type="text/javascript">
console.log("' ~ $_modx->getPlaceholder('namePlaceholder') ~ '");
</script>')}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.