Как вывести заголовок выпадающего списка (TvKey)?
Здравствуйте!
Как вывести заголовок выпадающего списка в шаблоне?
Выпадающий список — список стран.
Такой вариант отпадает.
Как вывести заголовок выпадающего списка в шаблоне?
Выпадающий список — список стран.
Такой вариант отпадает.
[[*tv_name:is=`australia `:then=`Австралия`]]
Комментарии: 7
А что имеется ввиду по заголовком выпадющего списка?
Австралия — заголовок
australia — значение
australia — значение
Австралия==australia||Австрия==austria||
[[*tvname:tvLabel]]
Спасибо, работает!
А в феном есть модификатор?
А в феном есть модификатор?
Нашел модификатор, но он работает только с тегами modx — [[*country:tvkey]].
Если вызвать в феном {$country|tvkey} — выводит ошибку.
Если вызвать в феном {$country|tvkey} — выводит ошибку.
$result = [];
$tv = $modx->getObject('modTemplateVar', array('name' => $name));
$delimiter = $tv->get('output_properties')['delimiter'];
$input = explode($delimiter, $input);
$tvElements = explode('||', $tv->get('elements'));
$tvElementsArray = [];
foreach ($tvElements as $tvElement){
$item = explode('==', $tvElement);
$tvElementsArray[$item[1]] = $item[0];
}
foreach ($input as $value){
$result[] = $tvElementsArray[$value];
}
return implode($delimiter, $result);
[[+tag:getTvKey=`[[!+tagKey]]`]]
Сниппет getTvKey
Сниппет getTvKey
<?php
if(empty($options))return $input;
if(gettype($id) != "number") {
$tv = $modx->getObject('modTemplateVar',array('name'=>$options));
$id = $tv->get('id');
}
$a = $modx->getObject('modTemplateVar', $id);
$b = explode('||',$a->get('elements'));
foreach($b as $key => $value):
list($text, $number) = explode('==',$value);
if($number==$input)return $text;
endforeach;
{$country|tvkey:'id=4'}
[[*country:tvkey=`id=4`]], id=4 — id тв параметра
[[*country:tvkey=`id=4`]], id=4 — id тв параметра
<?php
if(empty($options))return $input;
parse_str($options, $z);
$id = $z['id'];
if(empty($id))return $input;
$a = $modx->getObject('modTemplateVar', $id);
$b = explode('||',$a->get('elements'));
foreach($b as $key => $value):
list($text, $number) = explode('==',$value);
if($number==$input)return $text;
endforeach;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.