在使用Dedecms构建网站时,内容页面通常会显示上一篇文章和下一篇文章的链接,但系统默认并未提供“上一个栏目”和“下一个栏目”的功能。为了解决这一问题,我们可以通过模板中的`runphp`标签实现该功能,而无需修改程序的核心文件。以下是一个详细的解决方案,帮助您在列表页或内容页中添加“上一个栏目”和“下一个栏目”的功能。

适用于列表页、内容页


支持动态与静态页面生成


要实现这一功能,您可以将以下代码片段分别插入到模板中:

{dede:field.typeid runphp=yes}
global $dsql;
$topreid = (@me==GetTopid(@me)) ? @me : GetTopid(@me);
$row = $dsql->GetOne("SELECT * FROM `#@_arctype` WHERE reid=$topreid AND id<@me order by id desc");
if(!is_array($row))
{
@me = "
  • 上一个栏目:没有了
  • "; } else { $row['typeurl'] = GetOneTypeUrlA($row); @me = "
  • 上一个栏目:{$row['typename']}
  • "; } {/dede:field.typeid} {dede:field.typeid runphp=yes} global $dsql; $topreid = (@me==GetTopid(@me)) ? @me : GetTopid(@me); $row = $dsql->GetOne("SELECT * FROM `#@_arctype` WHERE reid=$topreid AND id>@me order by id asc"); if(!is_array($row)) { @me = "
  • 下一个栏目:没有了
  • "; } else { $row['typeurl'] = GetOneTypeUrlA($row); @me = "
  • 下一个栏目:{$row['typename']}
  • "; } {/dede:field.typeid}
    ### 代码说明 1. **获取顶级栏目ID** 使用`GetTopid()`函数确定当前栏目的顶级ID,确保逻辑正确性。 2. **查询数据库** - 对于“上一个栏目”,通过SQL语句查询`id`小于当前栏目的记录,并按`id`降序排列。 - 对于“下一个栏目”,查询`id`大于当前栏目的记录,并按`id`升序排列。 3. **判断是否存在结果** 如果查询结果为空,则输出“没有了”;否则生成链接并显示栏目名称。 4. **生成URL** 调用`GetOneTypeUrlA()`函数生成栏目的URL。 ### 实现效果 - 在内容页或列表页中,用户可以方便地导航至上一个或下一个栏目。 - 当前栏目是顶级栏目时,代码仍能正确处理,不会出现错误。 通过以上方法,您可以在不修改Dedecms核心文件的情况下,轻松实现“上一个栏目”和“下一个栏目”的功能,提升用户体验的同时也增强了网站的SEO优化效果。

    希望这段代码对您有所帮助!如果还有其他问题,请随时提问。