Вывод товаров в плэйсхолдеры по id

Может быть кто-нибудь уже сталкивался с ситуацией, когда нужно вывести товары в плэйсхолдеры не по порядковому номеру, а по ID?
Виктор Долгий
07 января 2014, 13:19
modx.pro
1 942
0

Комментарии: 5

Василий Наумкин
07 января 2014, 17:38
0
Еще бы понять, о чем речь.
    Виктор Долгий
    07 января 2014, 17:47
    0
    Дело вот в чем. Пытаюсь по прежнему побороть вот какую ситуацию. На странице товара я вызываю списки комплектующих, которые разбиты на Бутстраповские табы. То есть по категориям. Помимо этого к каждой категории комплектующих этого товара выбирается определенное описание (которое подходит для нескольких других товаров). То есть конструкция выглядит сейчас так:
    Для того, чтобы несколько ускорить процесс выборки, сначала получаю список категорий сопутствующих комплектующих. Делаю через pdoResources, он, в итоге, быстрее:
    [[pdoResources?
      &parents=`149`
      &limit=`0`
      &fastMode=`1`
      &tpl=`@INLINE [[+parent]]`
      &outputSeparator=`,`
      &toPlaceholder=`prts`
      &select=`{"modResource":"parent"}`
      &innerJoin=`{
        "Link":{"class":"msProductLink",
        "alias":"Link",
        "on":"modResource.id = Link.slave AND Link.link = 1"}
        }`
      &where=`{"Link.master":[[*id]]}`
      &groupby=`parent`
      ]]
    Потом запускаю еще один, который генерирует табы:
    [[pdoResources? &parents=`149` &depth=`0` &links=`1`
        &tpl=`tpl.pdoResources.prts` &sortby=`menuindex`
        &select=`id,pagetitle,alias,uri` &limit=`no` &sortdir=`asc`
        &resources=`[[+prts]]`
        ]]
    Ну и собственно tpl.pdoResources.prts:
    <div class="tab-pane" id="[[+alias]]">
      [[pdoResources? &parents=`[[+id]]` &depth=`0` &fastMode=`1`
        &includeTVs=`Systems.hros` &tvFilters=`Systems.hros==%[[*id]]%`
        &select=`longtitle,content` &tpl=`@INLINE
          <h4>[[+longtitle]]</h4>
          <p class="small">[[+content]]</p>
          
    `
        ]]
      
      [[msProducts? &parents=`[[+id]]` &link=`[[+links]]` &master=`[[*id]]` &limit=`0`
        &tpl=`tpl.msProducts.quick.tile` &includeThumbs=`360x270` &sortby=`menuindex`
        &-select=`{"msProduct":"pagetitle,article"}`
        &wrapIfEmpty=`0` &tplWrapper=`@INLINE
          <div class="row">[[+output]]</div>
          <p class="small"><a href="[[+uri]]" target="_blank" title="Перейти на страницу «[[+pagetitle]]»">
            Все [[+pagetitle:lcase]] →</a>
          </p>`
        ]]
    </div>
    Но по скорости работы эта конструкция, мягко скажем, не очень шустрая…
      Василий Наумкин
      07 января 2014, 18:00
      0
      Как минмум, не нужно использовать &tvFilters, а переписать всё на &where.
      А как максимум — писать свой сниппет, который реализует эту логику без кучи вложенных в чанки сниппетов.

      И что мешало сразу вот это расписать в вопросе?
        Виктор Долгий
        07 января 2014, 18:04
        0
        Ну, свой сниппет пока не осилю, а за &tvFilters спасибо.
      Виктор Долгий
      07 января 2014, 17:50
      0
      Вот и подумалось, что можно было бы все данные вытянуть, разложить по плэйсхолдерам, а потом использовать.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5