Названия tv-параметров для Comparison без словарей
После установки дополнения Comparison для miniShop2 оказалось, что он требует внести в словари названия для каждого tv-параметра (это упомянуто в документации). Но для сайта с уже существующими 300+ tv-параметрами это долго, и контент-менеджеру не объяснишь, что теперь, помимо создания параметра надо ещё куда-то что-то писать… В итоге, на странице сравнения вызов сниппета выглядит так:
getComparisonParams — это сниппет, которые получает все tv-параметры для ресурсов, указанных в cmp_ids, исключая заранее определённые ненужные tv типа картинок или прикреплённых документов и инструкций. Кстати, id можно как-то получить не через GET?
getTVcaption — сниппет, который решает описанную в начале задачу.
1
[[!CompareList?
&fields=`{"default":["price",[[!getComparisonParams]] ]}`
&tplParam=`@INLINE
<td class="comparison-param">
{{!getTVcaption? &key=`[[+field]]` ¶m=`[[+param]]`}}
</td>`
]] getComparisonParams — это сниппет, которые получает все tv-параметры для ресурсов, указанных в cmp_ids, исключая заранее определённые ненужные tv типа картинок или прикреплённых документов и инструкций. Кстати, id можно как-то получить не через GET?
getTVcaption — сниппет, который решает описанную в начале задачу.
$q = $modx->newQuery('modTemplateVar');
$q->where(array('name' => $key));
$q->select(array('modTemplateVar.*'));
$q->prepare();
$q->stmt->execute();
$result = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
if ( !empty($result[0]['caption']) ) { $paramName = $result[0]['caption']; }
else { $paramName = $param; }
return $paramName;
Комментарии: 1