排序 CMS 页面

Sorting CMS Pages

我一直在用 ASP VBScript 开发 CMS,现在正尝试添加页面排序功能,以便管理员可以按照他们喜欢的任何方式对页面进行排序。

我曾尝试向数据库中添加一个 sort_id 列,但由于有许多不同级别的页面,这让我很困惑。我也曾尝试使用 slug 列(即 parent_id/id/id/id)来确定级别和父 ID,但无法使其正常工作。

我需要能够对每个父 ID 及其中的子页面进行排序,并根据此顺序将它们打印在页面上。

我正在寻找正确方向的推动力,因为我已经为此苦苦挣扎了一段时间...

我正在使用 Microsoft Access for DB,目前有以下列:

id, page_parent, page_name, page_content

如果您使用的是 SQL 服务器,您可以对 return 树状结构使用递归查询,但这在 Access 中不受支持。

您可能必须添加自己的列,每当树结构发生变化时您都会自己计算。

我会为显示顺序添加一列(数字),然后允许在每个级别(父级和子级)进行设置。

然后我将创建并填充第二列 (varchar/string),该列将计算出的位置存储在树结构中。这将包括每个父级的显示顺序值和该项目的显示顺序。

要按此列订购,您需要显示订单号具有固定长度。

该列的计算值示例为(本例中显示顺序的最大长度为 5 位):

00001/00010/00003

此示例项目在其父项的第三个位置,在其父项的第十个位置,在顶级中的第一个位置。

您可以根据需要使用任何分隔符,也可以不使用分隔符。

然后您可以更改 SQL order by 子句以使用此计算列。

我在 Access (2010) 数据库中创建了一个 table,它几乎可以满足您的需求。这个概念是我需要能够存储可以附加属性的查找列表。它的工作方式是父 ID (FK) 将指向 table 中其他地方的记录(指向 PK)。额外的几个字段通过 节点列表 .1.2.34.n.[=33 的形式提供节点管理=] 和一个 node level 来记录当前节点在树中的级别(虽然这可以通过计算列表中有多少个点来跳过,点计数 - 1) . 节点列表 将记录从树向上返回到最终祖先的所有步骤。

通过添加以下更新前数据宏,整个过程是自动化的...

然后可以通过在末尾添加 sort 字段(数字或其他)来执行排序。可以告诉任何查询主要在 sort 字段上排序,然后按字母顺序(在我的例子中)在 code 字段上排序。