Чесно говоря познакомился с modx только вчера, но тем не менее зацепила она меня чем то.
Т.к. не особо с ней знаком и мануалов не так много на русском как хотелось бы - сделал своё решение проблемы.
В процессе поднятия сайта на modx понадобилась такая штука как вывод TV (переменных шаблона) в сниппете Wayfinder
Задача: построить менюшку, с выводом картинок со сслыками для каждого из разделов, и при наведении мышки на ссылку с картинкой выводить в нужном месте тематическое изображение .
Wayfinder может помочь в данном случае только если картинку представить (например) в виде [alias].jpg и потом в Чанках подставить alias как надо ... подставить <img src="[+wf.alias+].jpg" OnMouseMove="ChangeImg(someId, ’[+wf.alias+]_m.jpg]’"> и пипец.
задача несколько усложнилась... необходимо прямое указание тематических картинок для документов (разделов)
и единственным решением нашлось переписать немного Wayfinder под себя.
что добавил:
файл wayfinder.inc.php:
----------------------------
ищем:
var $rowIdPrefix = FALSE;
добавляем после:
var $useTVar = FALSE;
var $tvars = array();
--
ищем:
$v['level'] = $curLevel;
$v['first'] = $firstItem;
$firstItem = 0;
if ($n == ($numItems-1) && $numItems > 1) {
$v['last'] = 1;
} else {
$v['last'] = 0;
}
добавляем после:
if ($this->useTVar !==FALSE){
$varnames = explode(',', $this->useTVar);
$tvars=$modx->getTemplateVars($varnames,'name, type',$v['id']);
if(count($tvars)<>0) {
$this->tvars = $tvars;
$v['tvar']=TRUE;
}
}
-----------
ищем:
$phArray = array($useSub,$useClass,$classNames,$resource['link'],$resource['title'],$resource['linktext'],$useId,$resource['link_attributes'],$resource['id'],$resource['introtext'],$resource['description'],$this->docCount[$resource['id']]);
добавляем после:
if(isset($resource['tvar'])){
foreach($this->tvars as $tv){
$this->placeHolders[]="[+wf.tv_".$tv["name"]."+]";
$phArray[]=$tv[value];
}
}
Редактируем сниппет Wayfinder
ищем:
$wf->hideSubMenus = isset($hideSubMenus)? $hideSubMenus: FALSE;
добавляем после:
$wf->useTVar = isset($useTVar)? $useTVar: FALSE;
дабавляем элементы шаблона:
чанк - main_menu
---------
<table border="0" cellspacing="0" cellpadding="0">
<tr valign=top>
[+wf.wrapper+]
</tr>
</table>
чанк - main_menu_item
-------------------
<td><a href="[+wf.link+]" OnMouseMove="ChangeImg(’PicOUT’, ’[+wf.tv_section_img_OnMouseMove+]’);"><img src="[+wf.tv_section_img+]" width="165" height="23" alt="" border="0"></a>
<img src="/i/0.gif" width="1" height="6" alt="" border="0">
[+wf.introtext+]
</td>
в шаблоне используем как:
[[Wayfinder? &startId=`0` &useTVar=`section_img, section_img_OnMouseMove` &level=`1` &hideSubMenus=`1` &outerTpl=`main_menu` &rowTpl=`main_menu_item`]]
Данный способ позволяет не залезая в код, позже использовать любые TV. Если есть иной способ, просьба поделиться