{dede:channel}
标签内。,2. 在{dede:channel}
标签内添加typeid
属性,将其值设置为父栏目的ID。如果父栏目的ID为1,则代码如下:,,“html,{dede:channel typeid='1'},
`,,3. 如果需要调用多个父栏目,可以用逗号分隔多个ID。如果需要调用ID为1和2的父栏目,则代码如下:,,
`html,{dede:channel typeid='1,2'},
“,,这样,dedecms就只会调用指定的父栏目,而不会调用子栏目下面的内容。在织梦CMS(DedeCMS)中,有时我们只需要调用顶级栏目下的文章,而不需要调用子栏目的文章,DedeCMS没有提供直接的标签来实现这一需求,以下是实现这一功能的方法:
方法一:自定义文章属性
1、修改文章属性:
登录DedeCMS后台,进入“文档管理” > “文档属性管理”。
添加或修改一个自定义属性,例如命名为“is_top”(是否为顶级栏目)。
在发布文章时,选择对应的属性,将顶级栏目的文章标记为“是”,子栏目的文章标记为“否”。
2、使用{dede:arclist}
标签调用:
“`html
{dede:arclist flag=’s’ titlelen=100 row=10 typeid=1 notypeid=”}
<li><a href="[field:arcurl/]" target="_blank">[field:title/]</a></li>
{/dede:arclist}
“`
flag='s'
:表示仅显示顶级栏目的文章。
titlelen=100
长度为100个字符。
row=10
:每页显示10篇文章。
typeid=1
:指定顶级栏目的ID。
notypeid=''
:排除所有子栏目的文章。
方法二:使用SQL标签
1、编写SQL查询语句:
在模板文件中,使用SQL标签来查询顶级栏目的文章。
“`sql
Select * from #@__archives where id in (Select id from #@__archives where typeid=1 and isnull(reid))
“`
#@__archives
:存储文章信息的表。
typeid=1
:指定顶级栏目的ID。
reid
:表示父级栏目ID,isnull(reid)
表示没有父级栏目,即顶级栏目。
2、使用{dede:sql}
标签调用:
“`html
{dede:sql sql=’Select * from #@__archives where id in (Select id from #@__archives where typeid=1 and isnull(reid)) limit 10′}
<li><a href="[field:arcurl/]" target="_blank">[field:title/]</a></li>
{/dede:sql}
“`
limit 10
:限制查询结果的数量为10条。
方法三:使用自定义函数
1、创建自定义函数:
在include/extend.func.php
文件中添加自定义函数。
“`php
function lib_get_top_articles($channel = ”, $num = 10) {
global $dsql;
$row = $dsql>GetList("SELECT * FROM #@__archives WHERE typeid={$channel} AND reid IS NULL LIMIT $num");
return $row;
}
“`
$channel
:指定顶级栏目的ID。
$num
:指定返回的文章数量。
2、调用自定义函数:
“`html
{dede:php}$rows = lib_get_top_articles(1, 10);foreach ($rows as $row){echo ‘<li><a href="’.$row[‘arcurl’].’" target="_blank">’.$row[‘title’].'</a></li>’;}$/dede:php}
“`
lib_get_top_articles(1, 10)
:调用自定义函数,传入顶级栏目ID和文章数量。
foreach ($rows as $row)
:遍历查询结果并输出列表项。
常见问题解答FAQs
1、如何在DedeCMS中隐藏某个栏目下的所有文章?
在DedeCMS中,要隐藏某个栏目下的所有文章,可以在模板中使用条件判断语句,在列表页模板中,可以使用以下代码:
“`html
{dede:list pagesize=’10’}
{if !$typeid}
<li><a href="[field:arcurl/]" target="_blank">[field:title/]</a></li>
{/if}
{/dede:list}
“`
这段代码会检查当前文章的typeid
字段,如果typeid
为空,则表示该文章不属于任何子栏目,将其显示出来;否则,不显示该文章。
2、如何调用DedeCMS中特定栏目下的文章?
要在DedeCMS中调用特定栏目下的文章,可以使用{dede:arclist}
标签,并通过typeid
参数指定栏目ID,要调用ID为3的栏目下的所有文章,可以使用以下代码:
“`html
{dede:arclist typeid=’3′ row=’10’}
<li><a href="[field:arcurl/]" target="_blank">[field:title/]</a></li>
{/dede:arclist}
“`
这段代码会显示ID为3的栏目下的前10篇文章。
在DedeCMS中,如果你想要只调用父栏目而不调用子栏目下面的内容,可以通过修改模板文件中的相关代码来实现,以下是一些可能的方法:
1、修改栏目列表模板:
在DedeCMS的栏目模板文件中,如/templets/default/list.htm
(这里以默认模板为例),找到栏目列表的生成代码,通常栏目列表是通过循环遍历栏目模型数组来生成的。
“`php
<?php
foreach($arr glandata as $k=>$v){
echo ‘<li><a href="’.$v[url].’" title="’.$v[typename].’">’.$v[typename].'</a></li>’;
// 子栏目循环
if($v[‘sonclassid’] != 0){
echo ‘<ul>’;
foreach($v[‘sonclassdata’] as $kk=>$vv){
echo ‘<li><a href="’.$vv[url].’" title="’.$vv[typename].’">’.$vv[typename].'</a></li>’;
}
echo ‘</ul>’;
}
}
?>
“`
为了只显示父栏目,你需要取消子栏目循环的代码,如下所示:
“`php
<?php
foreach($arr glandata as $k=>$v){
echo ‘<li><a href="’.$v[url].’" title="’.$v[typename].’">’.$v[typename].'</a></li>’;
// 删除子栏目循环
// if($v[‘sonclassid’] != 0){
// echo ‘<ul>’;
// foreach($v[‘sonclassdata’] as $kk=>$vv){
// echo ‘<li><a href="’.$vv[url].’" title="’.$vv[typename].’">’.$vv[typename].'</a></li>’;
// }
// echo ‘</ul>’;
// }
}
?>
“`
2、修改单页面模板:
如果你想要在栏目详情页只显示父栏目而不显示子栏目内容,可以修改单页面模板,如/templets/default/content.htm
。
找到显示子栏目的代码,并将其删除或注释掉。
3、通过栏目模型设置:
在后台管理系统中,你可以设置栏目模型的显示属性,进入后台,选择“模型管理”,找到相应的栏目模型,查看是否有设置只显示父栏目的选项,如果有的话,按照提示进行设置。
具体操作可能会根据你使用的DedeCMS版本和模板而有所不同,在修改模板时,建议备份原始模板文件,以防万一出现错误可以快速恢复,在修改代码前,了解DedeCMS的模板标签和循环机制是很有帮助的。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1117403.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复