We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 37783
    • 85 Posts
    Суть такая есть 1 документ внем 4 вложенных документа в каждом из них неограниченное количество документов скрытых от меню (каталог товаров)

    Примерный вид

    Главная стр
    ---- каталог 1
    -- тов 1 не показывать в меню
    -- тов 2 не показывать в меню
    -- тов 3 не показывать в меню
    ---- каталог 2
    ---- каталог 3
    ---- каталог 4

    на главной странице делаю с помощью getResources делаю вывод
    краткого содержание и описания каталогов
    [[!getResources? &parents=`[[*id]]` &depth=`0` &includeTVs=`1` &processTV=`1` &sortby=`{"menuindex":"ASC"}`  &tpl=`catalog_box`]]


    catalog_box
    <div class="catalog_box"><img src="[[+tv.catalog_box_img]]" alt="" />
    <ul class="links">
    
    [[!getResources? &parents=`[[+id]]` showHidden=`1` depth=`0` &sortby=`{"menuindex":"ASC"}` limit=`4` &tpl=`link_catalog_box`]]
      
      [[+id]]  <!--proverka  id  -->
    </ul>
    <div class="c_h">[[+pagetitle]] >>></div>
    <div class="text">[[+introtext]]</div>
    </div>



    Как видно внутри тимплейта еще 1 вызов getResources
    с шаблоном
    <li><a href="[[~[[+id]]]]" alt="[[+pagetitle]]">[[+link_attributes]]</a></li> 


    Чтобы в превью каждого каталога вывести ссылки на первые 4 товара из соответствующего каталога.

    http://vespa-moto.ru/ вот результат работы

    А проблема собственно в следующем getResources при рекурсивном вызове невоспринимает передаваемые в него id и другие параметры (но похоже использует новый tpl) и в итоге выводятся ссылки на все страницы подряд которые указанны с параметром отображать в меню

    получаются ссылки
    тов 1
    тов 2
    тов 3
    каталог 2
    каталог 3

    Перепробовал так и сяк менять параметры ничего не выходит.
    Я где то неправ или это действительно глюк.

    И что если попробовать делать разные коппии getresurse через метод runSnippet ?




    [ed. note: nikolay_m last edited this post 14 years, 8 months ago.]
      • 31246 ☆ A M B ☆
      • 428 Posts
      проблему решить можно, но я не хочу даже объяснять как, так как столько вызовов делать getResources считаю убийством для сайта. Старайтесь использовать в ресурсе минимум вызовов.
      Если я правильно Вас понял, вы выводите каталог как img и четыре ребёнка как линки?
      1 вариант) с помощью getResources, один вызов в глубину 5, с применением tpl как у вас для линков, а для первого и каждого пятого tpl_n5 и tpl_1 - свой шаблон с выводом img.
      Но, в таком варианте может быть глюк, так как если в одном из каталогов окажется линков меньше чем 4, тогда будет смещение.... Если вы уверенны, что всегда будет 4 линка в каталоге, то можно использовать этот вариант.
      2) вариант, с помощью Wayfinder - задайте шаблон для всех &rowTpl как для линков, а для каталогов &parentRowTpl свой шаблон с выводом img (как вывести img с TV, можно почитать в документации). В этом варианте смещений не будет.

      Пробуйте, если что не получаеться, пишите - поможем!
        Valentin Rasulov - Industrial design (Hobbies - Web Development)
        Development not standard projects on CMF MODx Revolution.
        Small sample of extensions
        • 37783
        • 85 Posts
        Я на 1 странице вывожу 4 каталога и из каждого вывожу по 4 линка на товары из соответствующего каталога.

        Я правильно вас понял что 1 вызов можно оставить getResorse а второй внутренний для линков использовать вайфайндер?
        Просто проблема то в принципе только, в 4 линках я их и объектами самостоятельно могу вывести просто хотел штатными методами сделать
          • 31246 ☆ A M B ☆
          • 428 Posts
          нет, немного не поняли, я говорю об одном вызове на всё!.
          1 вызов или getResorse или Wayfinder.

          Потом, если у вас нету необходимости в динамике, лучше используйте статику,.. меньше нагрузки и запросов. и используйте кэш.
            Valentin Rasulov - Industrial design (Hobbies - Web Development)
            Development not standard projects on CMF MODx Revolution.
            Small sample of extensions
            • 37783
            • 85 Posts
            limit - насколько я правильно перевел описание задает количество выводимых линков на каждом уровне

            Делаю вывод, так то есть по идее, он должен вывести 4 дочерних документа в котором стоит вызов и еще 4 в каждом из этих.


            а мне выводит 4 ссылки по порядку указанное количество ссылок вне зависимости от вложенности то есть выводит 1 уровня и 3 вложенных если указать 6 то выведет из
            1-4 и еще 2 родительскую


            [[Wayfinder?  &ignoreHidden =`TRUE`  &limit =`4`  &level=`2`]]
            


            Притом из родителя мне нужно выводить pagetitle и интротекст

            то есть из каталога мне надо выводить картинку tv параметр заголовок и описание
            [ed. note: nikolay_m last edited this post 14 years, 8 months ago.]
              • 31246 ☆ A M B ☆
              • 428 Posts
              сейчас прокрутил у себя на тесте с Wayfinder выпадает, так как нужно допы выставлять.
              Ну, на такую маленькую задачу, жалко такие комбаины запускать.
              1) Могу помоч написать свой сниппет под эту задачу.
              2) Типа вашего первого варианта, только изменить вызов в шаблоне не getResources а своим сниппетом (там несколько строчек), который выведет 4 дочерных ссылки...
                Valentin Rasulov - Industrial design (Hobbies - Web Development)
                Development not standard projects on CMF MODx Revolution.
                Small sample of extensions
                • 37783
                • 85 Posts
                Сейчас сам попробую написать поиддее id каталогаа имеется его надо протсо передавать в свой сниппет а вснипете с помощью getmany выбрать все ресурсы где родитель переданный id

                и с помощью foreach вывести 4 штуки
                единственно е незнаю как их просто отсортировать их предварительно
                  • 37783
                  • 85 Posts
                   $arrLinks=$modx->getCollection('modResorse', 
                      "`parent` == [[+id]]  ORDER BY `menuindex` ASK  LIMIT 4 ;
                  
                  foreach $arrLinks as $link
                  
                  echo".'[[~ $link->id]]'.";
                  
                  

                  Так по идее должно работать?
                    • 31246 ☆ A M B ☆
                    • 428 Posts
                    лучше так....
                    к примеру mySnip
                    $query = $modx->newQuery('modResource');
                    $query->where(array(
                      'parent' => $input,
                    ));
                    $query->sortby('pub_date','ASC');
                    $query->limit(4);
                    $docs = $modx->getIterator('modResource',$query);
                    $out ='';
                    foreach ($docs as $doc) {
                    	$docArray = $doc->toArray();
                    	$out .= $modx->getChunk('myChank',$docArray);
                    }
                    return $out;

                    где myChank - шаблон для вывода линков
                    и в шаблоне откуда вызываете, если через getResources, то в том месте где нужно вывести линки ставите вызов фильтра
                    [[+id:mySnip]]

                    и код шаблона myChank обыкновенный, как для getResources

                    Если получиться, напишите, можно результат обвернуть в кэш, чтобы снизить нагрузку...
                      Valentin Rasulov - Industrial design (Hobbies - Web Development)
                      Development not standard projects on CMF MODx Revolution.
                      Small sample of extensions
                      • 37783
                      • 85 Posts
                      Работает.
                      Только где вот такой вызов снипета описан я не встречал в обучающей документации

                      и можно ли при таком вызове еще что то внутрь передавать .

                      Я так понимаю это означает применить снипет к данному элементу так?