Почему pdoResources генерирует пустые элементы?

Здравствуйте, господа!  

Я хочу использовать pdoResources для отображения дочерних элементов, но столкнулся с необычной проблемой: одновременно с выводом списка появляются пустые элементы — по одному на каждый отображаемый элемент.  

Вот как я вызываю pdoResources:  
<pre><code>&lt;ul&gt;
  [[pdoResources?
      &amp;parents=`[[*id]]`
      &amp;depth=`0`
      &amp;includeTVs=`head_title`
      &amp;tpl=`TOP_MENU_listTmpl`
      &amp;sortdir=`ASC`
  ]]
&lt;/ul&gt;</code></pre>  

А вот шаблон, который я использую:  
<pre><code>&lt;li&gt;
  &lt;a href="/[[~[[+id]]]]" title="[[+tv.head_title]]"&gt;
    [[+tv.head_title]]
  &lt;/a&gt;
&lt;li&gt;</code></pre>  

В списке всего два элемента, но выводится четыре, из которых два пустых — по одному пустому элементу на каждый существующий.  

Можете подсказать, в чем может быть проблема?
  • 10 февраля 2025 г. 10:04
Ответы на вопрос 2
Проблема, с которой вы столкнулись, может быть связана с ошибками в шаблоне вашего элемента списка или с настройками `pdoResources`. Давайте проверим несколько возможных причин пустых элементов:

1. **Закрывающий тег `<li>`**: В вашем шаблоне есть опечатка в закрывающем теге `<li>`. Правильный закрывающий тег должен быть `</li>`, а не `<li>`. Исправьте его следующим образом:

   ```html
   <li>
     <a href="/[[~[[+id]]]]" title="[[+tv.head_title]]">
       [[+tv.head_title]]
     </a>
   </li>
   ```

2. **Параметры `pdoResources`**: Убедитесь, что вы правильно передаете параметры в `pdoResources`. Проверьте, что `[[*id]]` действительно возвращает ID родительского элемента, и что у этого элемента есть дочерние элементы, которые вы хотите отобразить. Если родительский элемент не имеет дочерних элементов или если `depth` задан неправильно, это может привести к пустым выводам.

3. **Чистота имени TV**: Убедитесь, что TV `head_title` существует у ваших ресурсов и у него есть значения. Если у дочерних элементов нет значений для `head_title`, это также может приводить к пустым элементам.

4. **Проверка условий**: Если есть случаи, когда дочерние элементы не должны отображаться (например, если `head_title` пустой), можете добавить условия в шаблон, чтобы избежать отображения пустых элементов. Например:

   ```html
   <li>
     [[!if? &condition=`![+tv.head_title]` &then=`<a href="/[[~[[+id]]]]" title="[[+tv.head_title]]">[[+tv.head_title]]</a>` &else=` `]]
   </li>
   ```

5. **Расширенные настройки**: Если вышеуказанные советы не помогают, рассмотрите возможность использования других параметров `pdoResources`, таких как `hideContainers` для скрытия контейнеров, или других фильтров, которые могут помочь в вашей ситуации.

Надеюсь, эти рекомендации помогут вам решить проблему с пустыми элементами в вашем списке! Если у вас есть дополнительные вопросы или необходимо больше информации, не стесняйтесь обращаться.
Какова структура родительского элемента, там действительно два дочерних? Какого вида TV `head_title`, что в нем? 
Никакого дополнительного JS/CSS нет, который бы докидывал лишние li нет? Также в свойствах сниппета pdoResources - не изменены ли параметры по умолчанию-скажем, для каждого четного элемента?
Похожие вопросы