在本文中,我们将详细介绍DedeCms获取任意栏目N级列表链接树形菜单的各个方面,同时,我们也将为您带来关于dedecms5.7怎样在任意位置显示自由列表标题+链接、DEDECMSv5.5实现嵌套获取
在本文中,我们将详细介绍DedeCms获取任意栏目N级列表链接树形菜单的各个方面,同时,我们也将为您带来关于dedecms 5.7怎样在任意位置显示自由列表标题+链接、DEDECMS v5.5实现嵌套获取栏目及其子栏目列表、DedeCMS 列表页,频道页获取当前栏目的父栏目名称、dedecms 栏目列表页链接怎么优化的有用知识。
本文目录一览:- DedeCms获取任意栏目N级列表链接树形菜单
- dedecms 5.7怎样在任意位置显示自由列表标题+链接
- DEDECMS v5.5实现嵌套获取栏目及其子栏目列表
- DedeCMS 列表页,频道页获取当前栏目的父栏目名称
- dedecms 栏目列表页链接怎么优化
DedeCms获取任意栏目N级列表链接树形菜单
DedeCms获取任意栏目N级列表链接树形菜单,烈火学院小编提示,下边的修改办法,适用于DedeCMS默认的表前缀,如果你安装的时候修改了,请注意修改。
在\include\channelunit.func.php文件底部添加如下代码:
-----------------------------------------------------
/*树形栏目补充,获取二级,san级,四级栏目列表/
/*树形栏目补充*/
----------------------------------------------------------------------------
2、在源码里用
{dede:channel function='getProductTree(2)'}{/dede:channel}
调用即可。这里getProductTree(2)中的 2 是产品展示的栏目ID。如果你的是其他的,请作相应修改。
dedecms 5.7怎样在任意位置显示自由列表标题+链接
Dedecms 5.7怎样在任意位置显示自由列表标题+链接?
为什么会有这样的问题呢,因为找了半天没有发现织梦cms中调用自由列表的标签.在度哥上也没找到答案.那就只有自己捉摸了.下面是我用到的方法,其实是很简单的,只需要一句简单的sql代码就可以实现了
{dede:sql sql="select * From dede_freelist limit 100"}
{/dede:sql}
前提是必须删除添加自由列表时地址时前面出现的 {listdir}标签.
如图:
DEDECMS v5.5实现嵌套获取栏目及其子栏目列表
小编 jb51.cc 关于Dedecms实现嵌套获取栏目及其子栏目列表的问题,在论坛找到了以前版本的修改方法,用在5.5版本上发现不能用,于是修改了一下,现在分享给大家。请看实例代码:
修改文件:include aglib目录下的channel.lib.PHP,请将以下代码全部复制替换上述文件。
<?PHP
function lib_channel(&$ctag,&$refObj)
{
global $_sys_globals,$envs,$dsql;
$attlist = typeid|0,reid|0,row|100,col|1,type|son,currentstyle|;
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items,EXTR_SKIP);
$innertext = $ctag->GetInnerText();
$cacheid = trim($cacheid);
if($cacheid !='''') {
$likeType = GetCacheBlock($cacheid);
if($likeType != '''') return $likeType;
}
$reid = 0;
$topid = 0;
if(empty($typeid) && $envs[''typeid'']!=0)
{
$typeid = $envs[''typeid''];
$reid = $envs[''reid''];
}else{
$reid=0;
}
if($type==''''||$type==''sun'') $type=son;
if($innertext=='''') $innertext = GetSystemplets(channel_list.htm);
if($reid==0 && $typeid>0)
{
$dbrow = $dsql->Getone(Select reid From dede_arctype where id=''$typeid'' );
if(is_array($dbrow)) $reid = $dbrow[''reid''];
}
$likeType = '''';
if($type==''top'')
{
$sql = Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
From dede_arctype where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row;
}
else if($type==son)
{
//if($_sys_globals[''typeid'']>0) $typeid = $_sys_globals[''typeid''];
if($typeid==0) {
return '''';
}
$sql = Select id,description
From dede_arctype where reid=''$typeid'' And ishidden<>1 order by sortrank asc limit 0,$row;
}
else if($type==self)
{
if($reid==0) {
return '''';
}
$sql = Select id,description
From `dede_arctype` where reid=''$reid'' And ishidden<>1 order by sortrank asc limit 0,$row;
}
//And id<>''$typeid''
$needRel = false;
$dtp2 = new DedeTagParse();
$dtp2->SetNameSpace(field,[,]);
$dtp2->LoadSource($innertext);
$dsql2 = clone $dsql;
$dsql->SetQuery($sql);
$dsql->Execute();
$line = $row;
//检查是否有子栏目,并返回rel提示(用于二级菜单)本教程由网提供,更多http://www.veryhuo.com/
if(ereg('':rel'',$innertext)) $needRel = true;
if(empty($sql)) return '''';
$dsql->SetQuery($sql);
$dsql->Execute();
$totalRow = $dsql->GetTotalRow();
$GLOBALS[''autoindex''] = 0;
for($i=0;$i < $line;$i++)
{
if($col>1) $likeType .= <dl>;
for($j=0;$j<$col;$j++)
{
if($col>1) $likeType .= <dd>;
if($row=$dsql->GetArray())
{
$row[''sonids''] = $row[''rel''] = '''';
if($needRel)
{
$row[''sonids''] = GetSonIds($row[''id''],false);
if($row[''sonids'']=='''') $row[''rel''] = '''';
else $row[''rel''] = rel=''dropmenu{$row[''id'']}'';
}
//处理同级栏目中,当前栏目的样式
if( ($row[''id'']==$typeid || ($topid==$row[''id''] && $type==''top'') ) && $currentstyle!='''' )
{
if($currentstyle!='''')
{
$linkOkstr = $currentstyle;
$row[''typelink''] = GetoneTypeUrlA($row);
$linkOkstr = str_replace(~rel~,$row[''rel''],$linkOkstr);
$linkOkstr = str_replace(~id~,$row[''id''],$linkOkstr);
$linkOkstr = str_replace(~typelink~,$row[''typelink''],$linkOkstr);
$linkOkstr = str_replace(~typename~,$row[''typename''],$linkOkstr);
$likeType .= $linkOkstr;
}
}else
{
$row[''typelink''] = $row[''typeurl''] = GetoneTypeUrlA($row);
if(is_array($dtp2->CTags))
{
foreach($dtp2->CTags as $tagid=>$ctag){
if(isset($row[$ctag->GetName()]))
{
$dtp2->Assign($tagid,$row[$ctag->GetName()]);
}
elseif (preg_match(''/^sonchannel[0-9]*$/'',$ctag->GetName()))
{
$dtp2->Assign($tagid,lib_channel_son($ctag,$dsql2));
}
}
}
$likeType .= $dtp2->GetResult();
}
}
if($col>1) $likeType .= </dd>;
$GLOBALS[''autoindex'']++;
}//Loop Col
if($col>1)
{
$i += $col - 1;
$likeType .= </dl>;
}
}//Loop for $i
reset($dsql2);
$dsql->FreeResult();
return $likeType;
}
function lib_channel_son($ctag,$typeid = 0,$dsql2)
{
$attlist = row|100,EXTR_SKIP);
$innertext = $ctag->GetInnerText();
$dsql3 = clone $dsql2;
$likeType = '''';
//if($_sys_globals[''typeid'']>0) $typeid = $_sys_globals[''typeid''];
if($typeid==0) {
return '''';
}
$sql = Select id,$row;
//And id<>''$typeid''
$dtp2 = new DedeTagParse();
$dtp2->SetNameSpace(field,]);
$dtp2->LoadSource($innertext);
$dsql2->SetQuery($sql);
$dsql2->Execute();
$line = $row;
for($i=0;$i < $line;$i++)
{
if($col>1) $likeType .= <dl>;
for($j=0;$j<$col;$j++)
{
if($col>1) $likeType .= <dd>;
if($row=$dsql2->GetArray())
{
$row[''typelink''] = $row[''typeurl''] = GetoneTypeUrlA($row);
if(is_array($dtp2->CTags))
{
foreach($dtp2->CTags as $tagid=>$ctag){
if(isset($row[$ctag->GetName()]))
{
$dtp2->Assign($tagid,$row[$ctag->GetName()]);
}
elseif (preg_match(''/^sonchannel[0-9]*$/'',$ctag->GetName()))
{
$dtp2->Assign($tagid,$dsql3));
}
}
}
$likeType .= $dtp2->GetResult();
}
if($col>1) $likeType .= </dd>;
}//Loop Col
if($col>1)
{
$i += $col - 1;
$likeType .= </dl>;
}
}//Loop for $i
reset($dsql3);
$dsql2->FreeResult();
return $likeType;
}
?>
总结
以上是小编为你收集整理的DEDECMS v5.5实现嵌套获取栏目及其子栏目列表全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
DedeCMS 列表页,频道页获取当前栏目的父栏目名称
在5.7SP1版本上修改的,其它版本还未测试 找到目录下的include/helper/archive.helper.PHP 文件,添加自己以下函数//获取上级栏目名称 if ( ! function_exists('GetParentTypename')) { function GetParentTypename($id){ global $dsql ; $reid = $dsql->Getone("SELECT reid FROM wz_arctype where [email protected]"); $reid = $reid['reid']; $row1 = $dsql->Getone("SELECT typename FROM wz_arctype where id=$reid"); return $row1['typename']; } }列表或频道页调用方法
{dede:field.typeid function="GetParentTypename(@me)"/}
dedecms 栏目列表页链接怎么优化
织梦(dedecms)程序对SEO搜索引擎优化做得比较好,灵活性也很强。但是还是有一些细节的东西,要我们去发现,去修改,去灵活使用,比如DEDECMS栏目列表分页链接的优化。
推荐学习:织梦cms
dedecms默认栏目列表分页链接:
<li><a href="list_4_1.html">首页</a></li> <li><a href="list_4_3.html">上一页</a></li> <li><a href="list_4_1.html">1</a></li> <li><a href="list_4_2.html">2</a></li> <li><a href="list_4_3.html">3</a></li> <li>4</li> <li><a href="list_4_5.html">5</a></li> <li><a href="list_4_5.html">下一页</a></li> <li><a href="list_4_5.html">末页</a></li>
这种连接方式很不合理,对于SEO已经无意间分散了栏目页权重,我们要的效果是把list_4_1.html修改成/a/ 如下连接方式才合理:
<li><a href="/a/">首页</a></li> <li><a href="list_4_3.html">上一页</a></li> <li><a href="/a/">1</a></li> <li><a href="list_4_2.html">2</a></li> <li><a href="list_4_3.html">3</a></li> <li>4</li> <li><a href="list_4_5.html">5</a></li> <li><a href="list_4_5.html">下一页</a></li> <li><a href="list_4_5.html">末页</a></li>
修改方法
1.找到\include\arc.listview.class.php这个文件,把下面这段代码添加到”//获得上一页和主页的链接”前面;
$typedir= ereg_replace(‘{cmspath}’,$GLOBALS[''cfg_cmspath''],$this->Fields[''typedir'']);
2.找到“//获得上一页和主页的链接”下面几行代码。
if($this->ageNo != 1) { $prepage.=”<li><a href=’”.str_replace(“{page}”,$prepagenum,$tnamerule).”‘>上一页</a></li>rn”; $indexpage=”<li><a href=’”.str_replace(“{page}”,1,$tnamerule).”‘>首页</a></li>rn”; } -------------------把上面代码改成--------------------- if($this->ageNo != 1) { if($prepagenum==1) { $prepage.=”<li><a href=”".$typedir.”/”>上一页</a></li>rn”; } else { $prepage.=”<li><a href=”".str_replace(“{page}”,$prepagenum,$tnamerule).””>上一页</a></li>rn”; } $indexpage=”<li><a href=”".$typedir.”/”>首页</a></li>rn”; }
找到
$listdd.=”<li><a href=’”.str_replace(“{page}”,$j,$tnamerule).”‘>”.$j.”</a></li>rn”; ---------------------改成-------------------------- if($j==1) { $listdd.=”<li><a href=”".$typedir.”/”>”.$j.”</a></li>rn”; } else { $listdd.=”<li><a href=”".str_replace(“{page}”,$j,$tnamerule).””>”.$j.”</a></li>rn”; }
如果需要修改分页样式也上面代码中修改,比如删除
这样修改之后,就不再是出现list_4_1.html这样的链接,而是都直接链接到/abc/这样的地址。虽说这只是个小细节的修改,但是小细节有时候起到的作用却不能小觑。这样改之后保证链接回到的都是默认的列表页,避免了权重的流失,更符合SEO的做法。
以上就是
关于DedeCms获取任意栏目N级列表链接树形菜单的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于dedecms 5.7怎样在任意位置显示自由列表标题+链接、DEDECMS v5.5实现嵌套获取栏目及其子栏目列表、DedeCMS 列表页,频道页获取当前栏目的父栏目名称、dedecms 栏目列表页链接怎么优化的相关信息,请在本站寻找。
本文标签: