WordPress中的树形视图/层次结构

4
有没有人能提供解决方案,如何以类似Wordpress的格式在树视图中显示数据。没有相应的插件。
我想要显示类似目录的东西。不是指来自Wordpress本身的页面/分类。
我找到了:
  • jQuery插件可以用于显示我的数据。但是我无法使用此插件编辑和存储数据。
  • jsTree - 基于Javascript的跨浏览器树组件。它被打包为一个jQuery插件。这看起来非常有前途。
整个解决方案中非常重要的一部分是如何存储树的源数据(数据库或XML?)以及如何更新源数据。我发现这篇文章非常有用。
我正在寻找一种让我能够显示数据并最好也能编辑/存储它们的解决方案。只需要管理员用户才能进行编辑。

你想要显示什么数据?能否更详细地描述一下问题? - Pragati Sureka
@Pragati Sureka:我编辑了我的问题,希望现在更清晰了。 - Radek
3个回答

2
你可以使用左右属性存储数据:
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 上插入、更新和删除节点。

另一个简单的解决方案 是为每个节点赋予一个父属性,并通过每个这些节点开始一个递归循环。这个解决方案非常昂贵,它为每个节点使用一个查询。


2
最简单的解决方案是使用wp_list_pages(),它会输出包含所有页面的ul li列表。
如果您想将其导出为xml,可以在WordPress中创建一个模板页面来生成xml。
-更新-
@rafik 你能具体告诉我你想做什么和在哪里吗?
因为你提供的所有链接告诉我我们可能已经过度回答了你的问题。 :)
你只想在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();
});

@Radek 如果数据来自WordPress之外,那么这不是关于WordPress的问题...? - Eduplessis
@Eduplessis:在我看来,这也与WordPress有关,因为我们必须将解决方案纳入WordPress中。使用我问题中的链接,我可以准备好解决方案,但是WordPress使一切都变得更加复杂。在我看来...也许是因为我不是程序员,也没有使用WordPress的经验。这就是为什么我在这里发布我的问题的原因。 - Radek
@Radek 你必须知道,无论是在WordPress中还是没有,在不是程序员的情况下都会有点复杂。如果你想在WordPress之外或之内实现这个,那么做法将是相同的。如果您想更新数据:使用数据库,但您必须制作一个管理员页面来编辑它,或者手动编辑数据库... 然后,如果您需要以任何格式获取信息,可以在php中填充它 http://articles.techrepublic.com.com/5100-10878_11-5035149.html - Eduplessis
@Eduplessis:我认为在WordPress内外不是一样的。有很多关于如何在WordPress之外做事情的教程,但我没有找到任何关于如何在其中做类似事情的教程。谢谢您提供链接,我会看看的。 - Radek
@Eduplessis:感谢您的更新。为了在树形视图中显示数据,我可以使用jQuery,但我也在寻找如何存储数据以及如何编辑它们的方法。 - Radek

1
将每个节点设置为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>

@adam:我更新了我的问题。我想显示类似目录的东西,但它与WordPress应用程序无关。数据源来自WordPress之外。将每个节点设置为页面将非常耗时,因为数量甚至可能达到数百个。 - Radek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接