在网站建设中,合理配置导航栏目的URL输出对于用户体验和SEO优化至关重要。本文将详细介绍如何通过DedeCMS实现一级栏目和二级栏目的动态URL输出功能,确保当存在二级栏目时,一级栏目链接输出为“javascript:;”,而仅有一级栏目时直接输出链接。
为了实现这一功能,我们需要对DedeCMS进行二次开发。以下是具体步骤和代码示例:
首先,我们可以通过以下代码片段来判断当前栏目是否存在子栏目:
{dede:field name=typeid runphp=yes}
global $dsql;
$row = $dsql->GetOne("select * from `58pic_arctype` where reid='@me' and ishidden<>1 order by sortrank asc limit 0,1");
if(is_array($row))
@me = 'javascript:;';
else
@me = GetOneTypeUrlA($dsql->GetOne("select * from `58pic_arctype` where id='@me' and ishidden<>1"));
{/dede:field}
这段代码的作用是检查当前栏目是否有子栏目。如果有,则将URL设置为“javascript:;”;如果没有,则直接输出该栏目的链接。
接下来,我们将上述逻辑应用到实际的导航菜单中。以下是一个完整的DedeCMS导航栏代码示例:
{dede:channelartlist row=7 typeid=top currentstyle=current}
1 order by sortrank asc limit 0,1");
if(is_array($row))
@me = 'javascript:;';
else
@me = GetOneTypeUrlA($dsql->GetOne("select * from `58pic_arctype` where id='@me' and ishidden<>1"));
{/dede:field}">
{dede:field.typename/}
{dede:channel type='son' row=1 noself='yes'{/dede:channel}
{dede:channel type='son' row=1 noself='yes'}
{/dede:channel}
{dede:channel type='son' noself='yes'}
- [field:typename/]
{/dede:channel}
{dede:channel type='son' row=1 noself='yes'}
{/dede:channel}
{/dede:channelartlist}
以上代码实现了动态判断栏目是否有子栏目,并根据结果输出不同的URL链接。如果一级栏目有子栏目,则输出“javascript:;”作为链接地址;如果没有子栏目,则直接输出该栏目的链接。
最终效果如图所示:

通过这种方式,我们可以显著提升网站导航栏目的用户体验,同时也有助于搜索引擎更好地抓取和索引网站内容。希望这篇文章能帮助您更好地理解和应用DedeCMS的导航栏功能。
如果您有任何疑问或需要进一步的帮助,请随时联系我。