Output filter to get TV display name - tvLabel does not work on pdoResources
В бд попадают записи: GD, GL, GR и другие
Список одиночный выбор тв например Возможные значения
На выходе должно получится название страны типа «Греция», но выходит только «GR»
Список одиночный выбор тв например Возможные значения
Гренада==GD||Гренландия==GL||Греция==GR||Грузия==GE
Два года назад уже кто-то задавал этот вопрос, но ответа на него не дали.На выходе должно получится название страны типа «Греция», но выходит только «GR»
[[+tv.vendor_address:getTvDisplayName]]
[[#[[+id]].vendor_address:tvLabel]]
[[+tv.vendor_address:tvLabel]]
Поблагодарить автора
Отправить деньги
Комментарии: 13
[[pdoResources?
&parents=`0`
&includeTVs=`vendor_address`
&tvPrefix=``
&tpl=`test.tpl`
]]
test.tpl:
[[+vendor_address:tvLabel]]
Всё работает, выводит Греция и т.п.
Неа, не работает, тоже вот столкнулся.
Если интересно, вот вызов
Если интересно, вот вызов
[[pdoResources?
&tpl=`itemarh`
&limit=`100`
&parents=`7`
&offset=`1`
&includeTVs=`tagis`
]]
и в чанке [[+publishedon:date=`%d.%m.%Y`]] / [[+tv.tagis:tvLabel]]
Просто выводит 1||2||4
и даже не указание разделителя в параметрах вывода не реагирует
Все нормально работает. Возможно у вас просто кэш.
Задай пустой tvPrefix и будет работать:
[[pdoResources?
&tpl=`itemarh`
&limit=`100`
&parents=`7`
&offset=`1`
&includeTVs=`tagis`
&tvPrefix=``
]]
В чанке:[[+publishedon:date=`%d.%m.%Y`]] / [[+tagis:tvLabel]]
нет, так тоже не работает. Точнее работает
А вот с
Найду в чем дело, отпишусь тут )
[[+tagis]]
, но выводит конечно просто цифры А вот с
[[+tagis:tvLabel]]
ничего.Найду в чем дело, отпишусь тут )
Вот для интереса сделал на тестовом сайте:
s26240.h8.modhost.pro/manager/
s26240
lC6YU7NlRxFt
MODX 2.8.2, php 7.4, всё работает. Может в ТВшке что то не так заполнено?
s26240.h8.modhost.pro/manager/
s26240
lC6YU7NlRxFt
MODX 2.8.2, php 7.4, всё работает. Может в ТВшке что то не так заполнено?
хм… скопировал туда свои значения, и они и там не работают )) Может с цифрами проблема?
о, заработало там О_о
ойду теперь со своим разбираться.
Для ТВшки множественного выбора, ведь все тоже самое правильно будет?
ойду теперь со своим разбираться.
Для ТВшки множественного выбора, ведь все тоже самое правильно будет?
Вероятно дело в кэше)
Для ТВшки множественного выбора, ведь все тоже самое правильно будет?Возможно, надо тестить, ни разу не пробовал =)
нет, для множественного надо что то другое думать :)
Набросал на скорую руку. Поставь в параметрах вывода разделитель — ||. В чанке вызов сниппета:
Код сниппета:
Возможно это топорно и неверный путь, но работает =) Можешь чекнуть на сайте выше, добавил там.
[[!kvTV? &tvName=`[[+tagis2:tvLabel]]` &tvVal=`[[+tagis2]]`]]
Код сниппета:
<?php
$tvNames = explode('||', $tvName);
$tvValues = explode('||', $tvVal);
$tvArr = array_combine($tvNames, $tvValues);
foreach($tvArr as $n => $v) {
echo '<p><a href="/'.$v.'">'.$n.'</a></p>';
}
Возможно это топорно и неверный путь, но работает =) Можешь чекнуть на сайте выше, добавил там.
Привет! Запоздалое (уезжал) большое спасибо, да костыль небольшой, зато работает как надо!
В моём случае мне хватило вывести так (в tv на админке для возможных значений в списке):
А, так как задача с поставщиками и производителями перешла на ms2 в связке с ресурсами, то пришёл к такому результату, так как с id-шниками не стал заморачиваться, но потребовалось просто вывести страну [[+vendor.country]]:
Код чанка в чанке с mFilter2:
<?php
// [[!tvLabelnameCountry? &tvVal=`[[+tv.vendor_address]]`]]
$tvArr = explode('||', $tvVal);
foreach($tvArr as $n => $v) {
echo strstr($v, '=', true);
}
А, так как задача с поставщиками и производителями перешла на ms2 в связке с ресурсами, то пришёл к такому результату, так как с id-шниками не стал заморачиваться, но потребовалось просто вывести страну [[+vendor.country]]:
<?php
/**
* Получаем страну производителя из настроек ms2 по имени $name.
* Если используется для поставщика, то имя может отсутствовать, поэтому ничего не выводим.
* Если же необходимо получить по id, то 'name' заменить на 'id' (Тodo: Кастумизация)
*
* $page = $modx->getObject('modResource', ['id' => 13]);
* $output = $page->get('pagetitle');
*
* return $output;
*
* Пример вызова:
* [[!msVendorCountry? &name=`{$purveyor | resource : "pagetitle"}`]]
* {'!msVendorCountry' | snippet : ['name' => $purveyor | resource : "pagetitle"]}
*
*/
//$name = 'Sony';
$vendor = $modx->getObject('msVendor', ['name' => $name]);
if (!is_object($vendor)) {
return '';
}
$output = ', '.$vendor->get('country');
return $output;
Код чанка в чанке с mFilter2:
{if $_pls['tv.purveyor']!= ''}
{foreach $key as $purveyor index=$index}
{$purveyor | resource : "pagetitle"}{'!msVendorCountry' | snippet : ['name' => $purveyor | resource : "pagetitle"]}
{/foreach}
{/if}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.