Александр

Александр

Был в сети 04 октября 2023, 18:04
Заказы не принимаю
{$country|tvkey:'id=4'}
[[*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;
Нашел модификатор, но он работает только с тегами modx — [[*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);