Как вывести (TV Список множественный выбор) через кому?
Если TV Список (множественный выбор).
Как через php или как то по другому вывести список через кому.
Находил примеры в интернете, они выводят только цифры.
Как через php или как то по другому вывести список через кому.
Находил примеры в интернете, они выводят только цифры.
Поблагодарить автора
Отправить деньги
Комментарии: 23
У TV на вкладке «Параметры вывода» выберите «Разделитель» и поставьте в качестве него запятую.
После этого вывод [[*tvname]] в шаблоне страницы будет содержать разделитель.
Чтобы разделитель выводился через [[+tv.tvname]] в чанках, в вызовах pdoResources и т. д., добавляйте параметр &processTVs=`tvname`
В сниппетах для вывода через разделитель используйте
После этого вывод [[*tvname]] в шаблоне страницы будет содержать разделитель.
Чтобы разделитель выводился через [[+tv.tvname]] в чанках, в вызовах pdoResources и т. д., добавляйте параметр &processTVs=`tvname`
В сниппетах для вывода через разделитель используйте
$tv = $resource->getTVValue('tvname');
Не совсем понял ваш совет.
Пример есть страница компании. На этой странице выводится список городов. Как вывести весь список через кому.
Можно пример кода.
Пример есть страница компании. На этой странице выводится список городов. Как вывести весь список через кому.
Можно пример кода.
Если TV со списком городов принадлежит этой странице, то просто:
Если у Вас в качестве значений TV прописаны не названия городов, а ID соответствующих ресурсов, то делаете такой сниппет:
Назовите его, к примеру, getCities и используйте как модификатор:
[[*tvname]]
В случае, если у данной TV тип вывода строит «Разделитель» и в качестве самого разделителя указана запятая, то выведутся значения через запятую. Если у Вас в качестве значений TV прописаны не названия городов, а ID соответствующих ресурсов, то делаете такой сниппет:
<?php
$arr = explode(',',$input);
$out = array();
foreach($arr as $id){
if(!$res = $modx->getObject('modResource', $id)) continue;
$out[] == $res->get('pagetitle');
}
return implode(', ', $out);
Назовите его, к примеру, getCities и используйте как модификатор:
[[*tvname:getCities]]
Вы кажись не поняли меня.
Нужно в чанке вывести список городов которые были выбраны.
<?php
$page = $modx->getObject('modResource', 108);
return $page->getTVValue('service-centers-city');
Выводит только цифры, а мне нужно названия через кому.
Нужно в чанке вывести список городов которые были выбраны.
<?php
$page = $modx->getObject('modResource', 108);
return $page->getTVValue('service-centers-city');
Выводит только цифры, а мне нужно названия через кому.
Возможно поможет — Output filter to get TV display name
Все одно не то.
Выводит только если я указал 1 город. Если 2 и более не выводит.
Выводит только если я указал 1 город. Если 2 и более не выводит.
Ну вообще странно конечно, я проверял именно для множественного списка, всё работало.
Как кому поставить?
Список вывелся.
Список вывелся.
Переписать вывод на нужный:
echo '<p><a href="/'.$v.'">'.$n.'</a></p>';
Не то. Нужно чтобы было так:
Город 1, Город 2, Город 3
Город 1, Город 2, Город 3
Так это я строку привёл которую изменить надо.
Мне нужно чтобы если 1 город то без, в конце. Если 2 и более города то между ними,
Не пойму как это сделать.
Не пойму как это сделать.
Ну Вы бы сразу выложили эту картинку, Вас бы сразу и поняли))
Цифры тут произвольные или нет? Если они соответствуют ID ресурсов (страниц в дереве), то используйте сниппет, который я привел выше.
Если эти цифры произвольные и никак не связаны с ресурсами или иными сущностями, то пишете такой сниппет:
Цифры тут произвольные или нет? Если они соответствуют ID ресурсов (страниц в дереве), то используйте сниппет, который я привел выше.
Если эти цифры произвольные и никак не связаны с ресурсами или иными сущностями, то пишете такой сниппет:
<?php
$tvid = 1; // Замените на ID Вашей TV
$docid = $modx->getOption('docid', $scriptProperties, $modx->resource->get('id'));
if(!$tvo = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tvid,'contentid' =>$docid))) return;
if(!$tv = $modx->getObject('modTemplateVar', $tvid)) return;
$tvv = str_replace("\n", '', $tv->get('elements'));
$vals = explode('||', $tvv);
$cities = array();
foreach($vals as $val){
$v = explode('==', $val);
$cities[ $v[1] ] = $v[0];
}
$tvr = $tvo->get('value');
$arr = explode('||', $tvr);
$out = array();
foreach($arr as $d){
$out[] = $cities[$d];
}
return implode(', ', $out);
На странице ресурса можете использовать просто [[SnippetName]]
В чанках нужно передавать ID[[SnippetName, &docid=`[[+id]]`]]
Цифры взял от фонаря.
Ну тогда этот сниппет используйте.
А как можно подвязать чанк ( tpl) и вызвать там еще и ID?
Чтобы можно было на разных страницах по разному выводить.
Чтобы можно было на разных страницах по разному выводить.
ID чего?
Белая Церковь==2||
ID 2
ID 2
<?php
$tvid = 1; // Замените на ID Вашей TV
$docid = $modx->getOption('docid', $scriptProperties, $modx->resource->get('id'));
if(!$tvo = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tvid,'contentid' =>$docid))) return;
if(!$tv = $modx->getObject('modTemplateVar', $tvid)) return;
$tvv = str_replace("\n", '', $tv->get('elements'));
$vals = explode('||', $tvv);
$cities = array();
foreach($vals as $val){
$v = explode('==', $val);
$cities[ $v[1] ] = $v[0];
}
$tvr = $tvo->get('value');
$arr = explode('||', $tvr);
$out = array();
foreach($arr as $d){
$out[] = $modx->getChunk($tpl, array(
'name' => $cities[$d],
'id' => $d
));
}
return implode(', ', $out);
Вызов:
[[Snippet? &tpl=`chunk_name`]]
или[[Snippet? &docid=`[[+id]]` &tpl=`chunk_name`]]
В чанке chunk_name доступны плейсхолдеры [[+name]] и [[+id]].
Еще раз большое спасибо.
Привет еще раз. Можешь подсказать как сделать так чтобы выводило только 1 значение. modx.pro/help/22379 хочу настроить сортировку. Нужно чтобы просто вернуло одно значение.
<?php
$output = $input;
$value = $input;
if (isset($options)){
$tvname = $options;
$query = $modx->newQuery('manufacturer',array('name'=>$tvname));
$query->select('elements');
$query->prepare();
if ($query->prepare() && $query->stmt->execute()) {
$row = $query->stmt->fetch(PDO::FETCH_ASSOC);
}
$elements = explode('||',$row['elements']);
foreach($elements as $key => $el){
$el = explode('==',$el);
if(count($el)>1){
if($el[1] == $value){
$output = $el[0];
}
}
}
}
return $output;
Просто возвращает айди. А нужно название. Спасибо.
Нужно чтобы в чанке выводились ID. В зависимости от ID и языка будут разные названия городов.
Вот, вот это то что я искал. Спасибо вам большое!!!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.