Получение tv-параметра c помощью fenom
Здравствуйте!
Столкнулся с проблемой: в шаблоне документа синтаксис fenom не возвращает tv-параметр.
Во втором случае — возвращается «Array».
Пожалуйста, помогите советом.
P.s.: При вызове сниппетов никаких проблем подружить tv-параметры и феном не возникло, благодаря документации Василия.
UPD: Методом тыка было выяснено, что {$_modx->resource.tvName} возвращает массив, где первым элементом идет ключ — название tv-параметра, а вторым — его значение.
Столкнулся с проблемой: в шаблоне документа синтаксис fenom не возвращает tv-параметр.
<p>[[*newsTestTv]]</p>
<p>{$_modx->resource.newsTestTv}</p>
В первом случае, стандартный синтаксис возвращает корректное значение параметра.Во втором случае — возвращается «Array».
Пожалуйста, помогите советом.
P.s.: При вызове сниппетов никаких проблем подружить tv-параметры и феном не возникло, благодаря документации Василия.
UPD: Методом тыка было выяснено, что {$_modx->resource.tvName} возвращает массив, где первым элементом идет ключ — название tv-параметра, а вторым — его значение.
<p>[[*newsTestTv]]</p>
<p>{$_modx->resource.newsTestTv[1]}</p>
Два вызова, возвращающие одинаковый результат. Комментарии: 8
Поправил в версии 2.1.4-pl, можно обновляться и использовать ТВ как задумано:
{$_modx->resource.newsTestTv}
Василий, здравствуйте.
Большое спасибо за Ваши компоненты!
Обновил pdoTools до версии 2.1.7-pl.
Возможно, имеет место баг в работе служебной переменной {$_pls}, которая, по документации, предназначена для вывода вложенных плейсхолдеров с cинтаксисом [[+tag.sub_tag]] — {$_pls['tag.subtag']} (успешно применить эту переменную не получилось ни разу).
Прилагаю синтетический тест.
Документ содержит следующий контент:
Большое спасибо за Ваши компоненты!
Обновил pdoTools до версии 2.1.7-pl.
Возможно, имеет место баг в работе служебной переменной {$_pls}, которая, по документации, предназначена для вывода вложенных плейсхолдеров с cинтаксисом [[+tag.sub_tag]] — {$_pls['tag.subtag']} (успешно применить эту переменную не получилось ни разу).
Прилагаю синтетический тест.
Документ содержит следующий контент:
{$_modx->runSnippet('myFenomTest')}
<div class="pure-u-1">
<p>ModxSmarty: Name - [[+pref.tag.sub_tag1]]; Surname - [[+pref.tag.sub_tag2]];</p>
<p>Fenom: Name - {$_modx->getPlaceholder('pref.tag.sub_tag1')}; Surname - {$_modx->getPlaceholder('pref.tag.sub_tag2')};</p>
<p>Fenom#2: Name - {$_pls['pref.tag.sub_tag1']}; Surname - {$_pls['pref.tag.sub_tag2']};</p>
</div>
Текст сниппета «myFenomTest»:<?php
$modx->toPlaceholders(array(
'tag' => array(
'sub_tag1' => 'John',
'sub_tag2' => 'Doe')
),'pref');
Результат:ModxSmarty: Name - John; Surname - Doe;
Fenom_1: Name - John; Surname - Doe;
Fenom_2: Name - ; Surname - ;
{$_pls} — это плейхолдеры, переданные в чанк. А ты выставляешь и пытаешься получать глобальные плейсхолдеры.
<?php
$pdo = $modx->getService('pdoTools');
return $pdo->getChunk(
'@INLINE
<p>{$_pls.tag.sub_tag1} {$_pls.tag.sub_tag2}</p>
<p>{$_pls["tag.sub_tag1"]} {$_pls["tag.sub_tag2"]}</p>
',
array(
'tag' => array(
'sub_tag1' => 'John',
'sub_tag2' => 'Doe',
),
'tag.sub_tag1' => 'John',
'tag.sub_tag2' => 'Doe',
)
);
Большое спасибо за объяснения, Василий!
В Вашей документации этот момент показался мне неочевидным.
Соответственно, при использовании Fenom'a, предусмотрено три инструмента для работы с плейсхолдерами:
и
если я верно понял.
В Вашей документации этот момент показался мне неочевидным.
Соответственно, при использовании Fenom'a, предусмотрено три инструмента для работы с плейсхолдерами:
{$_modx->getPlaceholder('tag_name')}
— для получения глобальных,{$_pls.tag.subtag}
— для работы с вложенными плейсхолдерами, передаваемыми в чанк,и
{$tag}
— для работы с переменными, передаваемыми сниппетом в чанк-обёртку результатов,если я верно понял.
Я не знаю, что тут может быть непонятного:
Fenom использует точку для доступа к значению массива, а MODX обычно выствляет так плейсхолдеры из массивов. Соотвественно, для тегов [[+tag.sub_tag]] аналогов в Fenom не предусмотрено.Больше ни для чего {$_pls} не нужен.
Поэтому для подобных плейсхолдеров вам необходимо использовать вторую служебную переменную — {$_pls}:
{$_pls['tag.subtag']}
Теперь всё понятно.
Еще раз спасибо за объяснения.
Еще раз спасибо за объяснения.
На здоровье!
мне кстати сейчас в modx 3, поставленной сегодня выдает Array в ответ на {'metaTitle' | resource}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.