在网站建设中,合理配置导航栏目的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:;”作为链接地址;如果没有子栏目,则直接输出该栏目的链接。

    最终效果如图所示:

    dedecmsCMSdede导航栏目顶级和二级判断二级输出不同url

    通过这种方式,我们可以显著提升网站导航栏目的用户体验,同时也有助于搜索引擎更好地抓取和索引网站内容。希望这篇文章能帮助您更好地理解和应用DedeCMS的导航栏功能。

    如果您有任何疑问或需要进一步的帮助,请随时联系我。