We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 785
    • 2,113 Posts
    Quote from: LeonCrab at Sep 05, 2008, 03:16 AM

    C его помощью можно реализовать то, что вы хотите - только слегка подправьте код.
    Как я понимаю, подразумевается, что все документы в одной папке, так что подправлять надо далеко не слегка.
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
      • 20972
      • 19 Posts
      Посмотри как я реализовал данную задачу здесь http://www.netagentov.ru/informs-analyst-5.html блок "Еще в разделе" внизу страницы.


      Код Сниппета [[PrevNext]] дан ниже:

      <?php
      $tpl = isset($tpl) ? $tpl : null;
      $id = $modx->documentIdentifier;
      $parent = array_shift($modx->getParentIds($id));
      $childs = array_values($modx->getChildIds($parent));
      sort($childs);
      $search = array_flip($childs);
      $current = $search[$id];
      $docs = $id;
      if(isset($childs[$current+1])) $docs = "{$childs[$current+1]},$docs";
      if(isset($childs[$current+2])) $docs = "{$childs[$current+2]},$docs";
      if(isset($childs[$current-1])) $docs = "$docs,{$childs[$current-1]}";
      if(isset($childs[$current-2])) $docs = "$docs,{$childs[$current-2]}";
      return $modx->runSnippet('Ditto', array('documents'=>$docs,'summarize'=>'5','tpl'=>$tpl,'sortBy'=>'createdon','dateFormat'=>'%d-%m-%y'));
      ?>  
      


      Сниппет необходимо вызывать на странтце с активной новостью. У меня вызов через чанк {{PrevNext}} код ниже:

      <!--{начало блока PrevNext}-->
      <div class="mu prevnext mtop">
      <p class="tl"></p>
      <p class="tr"></p>
      <div class="block">
      <h3>Ещё в вразделе</h3>
      <ul>[[PrevNext? &tpl=`ditto_prev`]]</ul>
      </div>
      <p class="bl"></p>
      <p class="br"></p>
      <p class="clear"></p>
      </div>
      <!--{конец блока PrevNext}-->


      Сам чанк вызывается в шаблоне для новостных (статейных и тд.) страниц у меня так:

      <div class="content">
      <!--{начало блока Content}-->
      [*#content*]
      <!--{конец блока Content}-->
      {{PrevNext}}
      </div>


      Как видно из кода чанка [[PrevNext]] имеет один параметр &tpl=`ditto_prev`который задает шаблон код ниже:

      <li><a href="/[~[+id+]~]">[+date+] [+introtext+]</a></li>


      Можно вызывать без чанков код ниже:

      <div class="content">
      <!--{начало блока Content}-->
      [*#content*]
      <!--{конец блока Content}-->
      <ul>[[PrevNext? &tpl=`ditto_prev`]]</ul>
      </div>
        • 1788
        • 1,103 Posts
        Интересное решение.
        Кстати напоминает систему подшивки в друпале, только возьни меньше. smiley
          • 22619
          • 101 Posts
          Простите, что немного не по теме, что означает # в вызове [*#content*]?
            • 22532
            • 349 Posts
            да действительно немного не по теме, но...
            это кажется с новых версий такой вызов идет
            вроде как с помощью этого все вызовы подобных вещей планируется перевести к какой то общей системе..
              • 22619
              • 101 Posts
              понятно. Спасибо.
              Читал про нововведения для modx http://modxcms.com/roadmap.html , только там такого нет. Может, где еще об этом написано?
                • 31022
                • 328 Posts
                Простите, что немного не по теме, что означает # в вызове [*#content*]?

                Насколько я помню, эта штука отмечает tv как возможный к редактированию через QuickEdit.
                  • 22619
                  • 101 Posts
                  Ты прав, появляется тогда еще одна кнопка, которая позволяет редактировать конкретный параметр.
                    • 1788
                    • 1,103 Posts
                    Quote from: p.an at Sep 06, 2008, 10:29 AM

                    Простите, что немного не по теме, что означает # в вызове [*#content*]?
                    в версии 0.9.х это обозначает поле для редактирования через QuickEdit
                      • 3843
                      • 15 Posts
                      Quote from: nash300 at Sep 05, 2008, 04:41 AM

                      Посмотри как я реализовал данную задачу здесь http://www.netagentov.ru/informs-analyst-5.html блок "Еще в разделе" внизу страницы.


                      Код Сниппета [[PrevNext]] дан ниже:

                      <?php
                      $tpl = isset($tpl) ? $tpl : null;
                      $id = $modx->documentIdentifier;
                      $parent = array_shift($modx->getParentIds($id));
                      $childs = array_values($modx->getChildIds($parent));
                      sort($childs);
                      $search = array_flip($childs);
                      $current = $search[$id];
                      $docs = $id;
                      if(isset($childs[$current+1])) $docs = "{$childs[$current+1]},$docs";
                      if(isset($childs[$current+2])) $docs = "{$childs[$current+2]},$docs";
                      if(isset($childs[$current-1])) $docs = "$docs,{$childs[$current-1]}";
                      if(isset($childs[$current-2])) $docs = "$docs,{$childs[$current-2]}";
                      return $modx->runSnippet('Ditto', array('documents'=>$docs,'summarize'=>'5','tpl'=>$tpl,'sortBy'=>'createdon','dateFormat'=>'%d-%m-%y'));
                      ?>  
                      


                      Сниппет получился крайне зачетным. Немного его модифицировал под работу с сортировкой по TV с датой поста (для меня критично было).
                      <?php
                      $tpl = isset($tpl) ? $tpl : null;
                      $tplcur = isset($tplcur) ? $tplcur : null;
                      
                      $id = $modx->documentIdentifier;
                      $parent = array_shift($modx->getParentIds($id));
                      //$childs = array_values($modx->getChildIds($parent));
                      $childs = $modx->getDocumentChildrenTVarOutput($parent,array('TV name'));
                      asort($childs);
                      $childs = array_keys($childs);
                      //print_r($childs);
                      $search = array_flip($childs);
                      $current = $search[$id];
                      $docs = $id;
                      if(isset($childs[$current+1])) $docs = "{$childs[$current+1]},$docs";
                      if(isset($childs[$current-1])) $docs = "$docs,{$childs[$current-1]}";
                      return $modx->runSnippet('Ditto', array('id'=>'prevnext','documents'=>$docs,'summarize'=>'3','tpl'=>$tpl,'tplCurrentDocument'=>$tplcur,'dateSource'=>'TV name','sortBy'=>'TV name','dateFormat'=>'%d.%m.%Y','sortDir'=>'DESC','noResults'=>'no related docs'));
                      ?>
                      


                      может кому и пригодится =)