We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 22532
    • 349 Posts
    подскажите как мне сделать подменю с выбором на сайте продукции, как это сделано тут справа: http://sdobnov.ru/product/dveri/html/classic/stardis_classic.htm
    на всех похожих все будет примерно также, только меняются варианты дверей..
    только отвечайте в аську 467784268, просто на меня тут почемуто бан включили через хост, я вот с другого компа щас вышел, вродже нормально..
    кстати если это увидит администратор обратите внимание, я не флудил ничего.. просто зарегистрировался и все, разберитесь в чем дело
      • 26486
      • 63 Posts
      Делал так:
      1) [[CascadingMenu?]]

      <?php
      /*
      Written by: Adam Crownoble
      Created: 5/8/2005
      Updated: 8/6/2005 (Added Show in Menu support)
      Email: [email protected]
      Website: obledesign.com
      Name: CascadingMenu
      Description: Incorporates breadcrumbs into a menu.
      Properties: &doc_id=Current Document ID;int;0 &parent_class=Parent CSS Class;string;parent &children_class=Children CSS Class;string;children &child_class=Child CSS Class;string;child &current_class=Current CSS Class;string;current
      Thanks: to php.net for inspiration.
      */
      
      // PSUEDO CONSTANTS //
      $page_fields = 'id, pagetitle, menutitle, description, published, deleted, isfolder, hidemenu';
      
      // INITIALIZE VARIABLES //
      $end_tag = '';
      $count = 1;
      $parents = array();
      $parents_html = '';
      $children_html = '';
      if(!$doc_id) { $doc_id = $modx->documentIdentifier; } // If doc_id not set use the current doc
      $page = $modx->getPageInfo($doc_id,0,$page_fields);
      
      // If the current page is a folder add it to the parent array
      if($page['isfolder']) {
       $parents[$page['id']] = $page;
      }
      
      // Loop through each parent to the current page
      // if it's published, not deleted and show in menu is set, add it to the parent array
      while($page = $modx->getParent($page['id'],0,$page_fields)) {
       if($page['published'] && !$page['deleted'] && !$page['hidemenu']) {
        $parents[] = $page;
       }
      }
      
      // Reverse the array of parents so we can start at the top instead of the bottom
      $parents = array_reverse($parents,true);
      
      // Remove any unpublished, deleted or hidden parents
      foreach($parents as $key=>$parent) {
       if(!$parent['published'] || $parent['deleted'] || $parent['hidemenu']) {
        unset($parents[$key]);
       }
      }
      
      $parent_count = count($parents);
      
      // Loop through each parent and add it to the html
      foreach($parents as $parent) {
      
       $id = $parent['id'];
       $title = ($parent['menutitle'] ? $parent['menutitle'] : $parent['pagetitle']);
      
       // Get classes
       $parent_classes = " {$parent_class} ";
       if($parent['id'] == $doc_id) { $parent_classes .= " $current_class "; }
       if($count==$parent_count) { $parent_classes .= " {$children_class} "; }
      
       // End the <li> tag immpediatley only if this isn't the current parent because it's children need to go inside the <li> 
       $end_tag = ($count<$parent_count ? "</li>\n" : "\n");
      
      $parents_html .= <<<EOD
      <li><a href="[~{$id}~]">{$title}</a>{$end_tag}
      EOD;
      
       $count++;
      
      }
      
      // Get the children of the last parent
      $children = $modx->getActiveChildren($parent['id']);
      
      // Loop through each child and add it to the html
      foreach($children as $child) {
      
       // Get title
       $title = $child['menutitle'] ? $child['menutitle'] : $child['pagetitle'];
      
       // Get classes
       $child_classes = " {$child_class} ";
       if($child['id'] == $doc_id) {
        $child_classes .= " {$current_class} ";
       }
      
      $children_html .= <<<EOD
      <li><a href="[~{$child['id']}~]">{$title}</a></li>\n
      EOD;
      
      }
      
      // Complile the HTML into one HTML string
      $html = <<<EOD
        <ul>
         {$children_html}
        </ul>
      EOD;
      
      // If there are parents...
      if($parents_html)
      {
      $html = <<<EOD
      <ul>
        {$children_html}
      </ul>
      EOD;
      }
      
      // Return the HTML
      return $html;
      ?>
      


      2) wayfinder
        • 26486
        • 63 Posts
        Документация по Wayfinder http://wiki.modxcms.com/index.php/Wayfinder
          • 22532
          • 349 Posts
          а можно чуток поподробнее.. просто я новичек в этой системе..
          как использоваь [[CascadingMenu?]]? где на сайте что вставить? и как оформить это в менеджере модх-са?
            • 26486
            • 63 Posts
            Создаете снипет CascadingMenu, вставляете вышеуказанный код.

            В шаблоне где вы хотите видеть подменю пишете [[CascadingMenu?]]
              • 33694
              • 742 Posts
              Простите, но [[CascadingMenu?]] — вот этот вопросительный знак в конце, это какой-то хитрый трюк? Зачем он?
                • 22532
                • 349 Posts
                спасибо за подсказку, где вставлять и как создать снипет я понял.. можно чуть поподробнее про то как набить информацию в
                [[CascadingMenu?]], там синтаксис какой? как мои строки меню окажутся там?
                  • 26486
                  • 63 Posts
                  Вы попробуйте сделать и все поймете.
                  ---+Статьи
                  -----документ1
                  -----документ2
                  -----документ3

                  [[CascadingMenu?]] - вызов снипета с названием CascadingMenu

                  Допустим вставте в контент Документа1

                  Подменю: [[CascadingMenu?]]

                  и у вас получется как раз то, что вам надо

                  Подменю:

                  документ1
                  документ2
                  документ3
                    • 22532
                    • 349 Posts
                    На том месте где шел вызов снипета CascadingMenu был список элементов из корня дерева в МОДх
                    а мне нужен совершенно другой..
                      • 26486
                      • 63 Posts
                      В снипете CascadingMenu вы вставили мой код, который находится выше? он немного изменен