We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31083
    • 3 Posts
    Чесно говоря познакомился с 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. Если есть иной способ, просьба поделиться smiley
      • 33694
      • 742 Posts
      Всего день знакомства с системой, а уже такое хорошее знанение снипетов... smiley

      А друго способа, вроде как и нет. Спасибо и за этот, а вось пригодниться.

      Лично у меня задача пока не усложнилась smiley, поэтому обхожусь использованием [+wf.alias+]. Но ведь по дефолтку и их же там нет! Тоже сам прикручивал, что в первой, что во второй версии... Нужно будет по готовому рецепту и tv прикрутить.

      Может всё это автору как-то отдать, чтоб в официальной версии было и нам не приходилось каждую новую ломать и допиливать.
        • 12687
        • 24 Posts
        А я до алиаса добирался таким образом

        &titleOfLinks=`alias` &textOfLinks=`menutitle`

        Соответственно в чанке я делал так

        [+wf.title+]_2.gif
          • 31083
          • 3 Posts
          Quote from: Igel at Mar 14, 2007, 08:27 PM

          А я до алиаса добирался таким образом

          &titleOfLinks=`alias` &textOfLinks=`menutitle`

          Соответственно в чанке я делал так

          [+wf.title+]_2.gif

          ну это понятно в принципе, с TV оно получается нагляднее чтоли )
            • 31083
            • 3 Posts
            Quote from: [e
            Bu$ter link=topic=12977.msg85856#msg85856 date=1173789349]
            Всего день знакомства с системой, а уже такое хорошее знанение снипетов... smiley

            на самом деле modx имеет интуитивно понятный интерфейс, хз почему. методом тыка довольно быстро осваивается
            в отличии от всяких жумл, ксупсов, нюков и иже с ними ))