древовидная структура / иерархическая структура в WordPress - PullRequest
4 голосов
/ 19 января 2010

Кто-нибудь может предложить решение , как отобразить данные в древовидном формате как в формате wordpress . Для этого нет плагина.

Я хочу отобразить что-то вроде оглавления. Не говорю о страницах / категориях из самого WordPress.

Я нашел

  • этот плагин jQuery , который можно использовать для отображения моих данных. Я не могу редактировать и сохранять данные с помощью этого плагина.
  • jsTree - компонент кросс-браузерного дерева на основе JavaScript. Он упакован как плагин jQuery. Это выглядит очень многообещающе.

Очень важной частью всего решения является то, как хранить исходные данные дерева (база данных или XML?) И как обновить исходные данные. Я нашел эту статью очень полезной.

Я ищу решение, которое позволило бы мне отображать данные и предпочтительно также редактировать / хранить их. Редактирование должно быть доступно только для администраторов.

Ответы [ 3 ]

2 голосов
/ 19 января 2010

Самое простое решение: wp_list_pages () он выдаст вам список всех ваших страниц.

Если вы хотите экспортировать его как XML, вы можете создать шаблонную страницу в WordPress, которая сделает XML.

- обновлена ​​-

@ Рафик
Вы можете сказать мне точно ... что вы хотите сделать и где.

Потому что все ссылки, которые вы указали ... скажите мне, что мы просто перебиваем ваш вопрос. :)

Вы просто хотите отобразить список в виде дерева на странице WordPress? ...

Если да, то самый простой способ сделать это - составить список ul li следующим образом:

<ul id="treeview">
  <li>parent1</li>
  <li>parent2  
    <ul>
      <li>child1 of 2</li>
      <li>child2 of 2</li>
    </ul>
  </li>
</ul>

и в вашем скрипте jquery:

$(function () { 
  $("#treeview").tree();
});
2 голосов
/ 19 января 2010

Вы можете хранить данные с левым и правым свойством:

12345678901234
-------------- | a
 ------------  | b
  ---- -- --   | c d e
   --          | f

a.left = 1, a.right = 14
b.left = 2, b.right = 13
c.left = 3, c.right = 6
d.left = 8, d.right = 9
e.left = 11, e.right = 12
f.left = 4, f.right = 5

Это даст вам дерево вроде:

          a
          |
          b
         /|\
        / | \
       c  d  e
      /
     f

Это довольно сложное решение, но оно использует минимум запросов для выбора дерева. Вы можете прочитать, как вставлять, обновлять и удалять узлы на mysql.com .

Другое простое решение - дать каждому узлу родительское свойство и запустить рекурсивный цикл через каждый из этих узлов. Это решение очень дорогое, оно использует один запрос для каждого узла.

1 голос
/ 19 января 2010

Установите каждый узел как страницу Wordpress, затем используйте wp_list_pages для вывода набора вложенных <li> элементов.

Например, со структурой

nodes (page id #34)
- category 1
-- subcategory 1
-- subcategory 2
- category 2
-- subcategory 3
-- subcategory 4

Использование:

<ul>
<?php wp_list_pages('child_of=34'); ?>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...