GVKun编程网logo

织梦DEDECMS栏目获取无限子分类的办法(织梦dedecms教程)

12

在这篇文章中,我们将带领您了解织梦DEDECMS栏目获取无限子分类的办法的全貌,包括织梦dedecms教程的相关情况。同时,我们还将为您介绍有关DEDECMS中怎么获取无限栏目子分类、dedecms织

在这篇文章中,我们将带领您了解织梦DEDECMS栏目获取无限子分类的办法的全貌,包括织梦dedecms教程的相关情况。同时,我们还将为您介绍有关DEDECMS中怎么获取无限栏目子分类、dedecms织梦子栏目获取顶级栏目名称及链接url办法、dedecms织梦子栏目获取顶级栏目名称及链接url方法、dedecms织梦获取当前新闻页面二级栏目名称的办法的知识,以帮助您更好地理解这个主题。

本文目录一览:

织梦DEDECMS栏目获取无限子分类的办法(织梦dedecms教程)

织梦DEDECMS栏目获取无限子分类的办法(织梦dedecms教程)

 

织梦DEDECMS栏目获取无限子分类的办法 。

提示:首先要把/include/taglib/channerl.lib.php 文件的代码修改成以下的:

 

for($i=0;$i < $line;$i++)

{

if($col>1) $likeType .= “<dl>\r\n”;

for($j=0;$j<$col;$j++)

{

if($col>1) $likeType .= “<dd>\r\n”;

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,lib_channel_son($ctag,$row['id'],$dsql3));

}

}

}

$likeType .= $dtp2->GetResult();

}

if($col>1) $likeType .= “</dd>\r\n”;

}//Loop Col

if($col>1)

{

$i += $col – 1;

$likeType .= ” </dl>\r\n”;

}

}//Loop for $i

reset($dsql3);

$dsql2->FreeResult();

return $likeType;

}

?>

 

在源码里面用 [field:sonchannel0] [/field:sonchannel0] 调用,这个是用来取子栏目用得(使用【sonchannel+数字】作为标签名是为了防止嵌套的时候无法正确解析标签),这个的作用就是当你的栏目有很多子栏目无限分级的时候方便你取子栏目的。实例一下:

 

<ul id=”left_nav”>

                    {dede:channel type=’son’ typeid=’16′}

     <li><a href=http://www.dede58.com/a/dedejq/”[field:typelink/]“>[field:typename/]</a>

      <ul>

       [field:sonchannel0]

       <li><a href=http://www.dede58.com/a/dedejq/”[field:typelink/]“>[field:typename/]</a>

                             <ul>

        [field:sonchannel1]

        <li><a href=http://www.dede58.com/a/dedejq/”[field:typelink/]“>[field:typename/]</a>

                                 <ul>

         [field:sonchannel2]

         <li><a href=http://www.dede58.com/a/dedejq/”[field:typelink/]“>[field:typename/]</a>

                                     <ul>

          [field:sonchannel3]

          <li><a href=http://www.dede58.com/a/dedejq/”[field:typelink/]“>[field:typename/]</a></li>

          [/field:sonchannel3]

                                        </ul>

                                    </li>

         [/field:sonchannel2]

                                    </ul>

                                </li>

        [/field:sonchannel1]

                                </ul>

                            </li>

       [/field:sonchannel0]

      </ul>

                    </li>

     {/dede:channel}

                </ul>

 

以上typeid中的数字改成你的大分类的ID即可,因为在DEDE官方论坛没找到,所以这里发上来,希望能方便有用者。

注意:未免出错修改文件前请做好备份,以上代码可能有些引号又被自动转成全角的了,请修改成半角的 。

本文章网址:http://www.ppssdd.com/code/14208.html。转载请保留出处,谢谢合作!

DEDECMS中怎么获取无限栏目子分类

DEDECMS中怎么获取无限栏目子分类

DEDECMS中怎么获取无限栏目子分类

dedecms中怎么获取无限栏目子分类?

做企业网站大部分是使用DEDECMS,今天在给客户设计网站时,把DEDE自动内链和URL全拼格式搞定后,又遇到了个小问题,因为产品分类最多有四级,客户要求在左侧有个弹出式菜单调用各级子分类出来,而DEDECMS默认只能调用一级分类。经过努力,百度+GOOGLE+自己脑袋,终于搞定了这个东西,不敢独享,发出来给有需要的朋友分享。 

推荐学习:织梦cms

首先要把/include/taglib/channerl.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(); 
if(empty($typeid) && $envs[&#39;typeid&#39;]!=0) 
{ 
$typeid = $envs[&#39;typeid&#39;]; 
$reid = $envs[&#39;reid&#39;]; 
}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 ying_arctype where id=’$typeid’ “); 
if(is_array($dbrow)) $reid = $dbrow[&#39;reid&#39;]; 
} 
$likeType = ”; 
if($type==’top’) 
{ 
$sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description 
From ying_arctype where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row”; 
} 
else if($type==”son”) 
{ 
//if($_sys_globals[&#39;typeid&#39;]>0) $typeid = $_sys_globals[&#39;typeid&#39;]; 
if($typeid==0) { 
return ”; 
} 
$sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description 
From ying_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,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description 
From ‘ying_arctype’ where reid=’$reid’ And ishidden<>1 order by sortrank asc limit 0,$row”; 
} 
//And id<>’$typeid’ 
$dtp2 = new DedeTagParse(); 
$dtp2->SetNameSpace(“field”,”[","]“); 
$dtp2->LoadSource($innertext); 
$dsql2 = clone $dsql; 
$dsql->SetQuery($sql); 
$dsql->Execute(); 
$line = $row; 
$GLOBALS[&#39;autoindex&#39;] = 0; 
for($i=0;$i < $line;$i++) 
{ 
if($col>1) $likeType .= “<dl>\r\n”; 
for($j=0;$j<$col;$j++) 
{ 
if($col>1) $likeType .= “<dd>\r\n”; 
if($row=$dsql->GetArray()) 
{ 
if($type==’self’ && $row[&#39;id&#39;]==$typeid) //处理同级栏目中,当前栏目的样式 
{ 
if($currentstyle!=”) 
{ 
$linkOkstr = $currentstyle; 
$row[&#39;typelink&#39;] = GetOneTypeUrlA($row); 
$linkOkstr = str_replace(“~typelink~”,$row[&#39;typelink&#39;],$linkOkstr); 
$linkOkstr = str_replace(“~typename~”,$row[&#39;typename&#39;],$linkOkstr); 
$likeType .= $linkOkstr; 
} 
}else 
{ 
$row[&#39;typelink&#39;] = $row[&#39;typeurl&#39;] = 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,$row[&#39;id&#39;],$dsql2)); 
} 
} 
} 
$likeType .= $dtp2->GetResult(); 
} 
} 
if($col>1) $likeType .= “</dd>\r\n”; 
$GLOBALS[&#39;autoindex&#39;]++; 
}//Loop Col 
if($col>1) 
{ 
$i += $col – 1; 
$likeType .= ” </dl>\r\n”; 
} 
}//Loop for $i 
reset($dsql2); 
$dsql->FreeResult(); 
return $likeType; 
} 
function lib_channel_son($ctag,$typeid = 0,$dsql2) 
{ 
$attlist = “row|100,col|1,currentstyle|”; 
FillAttsDefault($ctag->CAttribute->Items,$attlist); 
extract($ctag->CAttribute->Items, EXTR_SKIP); 
$innertext = $ctag->GetInnerText(); 
$dsql3 = clone $dsql2; 
$likeType = ”; 
//if($_sys_globals[&#39;typeid&#39;]>0) $typeid = $_sys_globals[&#39;typeid&#39;]; 
if($typeid==0) { 
return ”; 
} 
$sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description 
From ying_arctype where reid=’$typeid’ And ishidden<>1 order by sortrank asc limit 0,$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>\r\n”; 
for($j=0;$j<$col;$j++) 
{ 
if($col>1) $likeType .= “<dd>\r\n”; 
if($row=$dsql2->GetArray()) 
{ 
$row[&#39;typelink&#39;] = $row[&#39;typeurl&#39;] = 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,$row[&#39;id&#39;],$dsql3)); 
} 
} 
} 
$likeType .= $dtp2->GetResult(); 
} 
if($col>1) $likeType .= “</dd>\r\n”; 
}//Loop Col 
if($col>1) 
{ 
$i += $col – 1; 
$likeType .= ” </dl>\r\n”; 
} 
}//Loop for $i 
reset($dsql3); 
$dsql2->FreeResult(); 
return $likeType; 
} 
?>
登录后复制

在模板里面用 [field:sonchannel0] [/field:sonchannel0] 调用,这个是用来取子栏目用得(使用【sonchannel+数字】作为标签名是为了防止嵌套的时候无法正确解析标签),这个的作用就是当你的栏目有很多子栏目无限分级的时候方便你取子栏目的。实例一下:

代码如下:

<ul id="left_nav"> 
{dede:channel type=&#39;son&#39; typeid=&#39;16&#39;} 
<li><a href="[field:typelink/]“>[field:typename/]</a> 
<ul> 
[field:sonchannel0] 
<li><a href="[field:typelink/]“>[field:typename/]</a> 
<ul> 
[field:sonchannel1] 
<li><a href="[field:typelink/]“>[field:typename/]</a> 
<ul> 
[field:sonchannel2] 
<li><a href="[field:typelink/]“>[field:typename/]</a> 
<ul> 
[field:sonchannel3] 
<li><a href="[field:typelink/]“>[field:typename/]</a></li> 
[/field:sonchannel3] 
</ul> 
</li> 
[/field:sonchannel2] 
</ul> 
</li> 
[/field:sonchannel1] 
</ul> 
</li> 
[/field:sonchannel0] 
</ul> 
</li> 
{/dede:channel} 
</ul>
登录后复制

以上typeid中的数字改成你的大分类的ID即可,因为在DEDE官方论坛没找到,所以这里发上来,希望能方便有用者。

注意:未免出错修改文件前请做好备份,以上代码可能有些引号又被自动转成全角的了,请修改成半角的,或者可以找萧涵索取此修改后的文件。

以上就是DEDECMS中怎么获取无限栏目子分类的详细内容,更多请关注php中文网其它相关文章!

dedecms织梦子栏目获取顶级栏目名称及链接url办法

dedecms织梦子栏目获取顶级栏目名称及链接url办法

 

打开include/helpers/extend.helper.php,添加一个函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

  //织梦58源码收集资源

    /**

     *  获取指定栏目id的优质栏目的名称

     *

     * @return     string

     */

    if ( ! function_exists('getTopChannelName'))

    {

    function getTopChannelName($id) {

       global $dsql;

            $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");

            if($typeinfo['reid']==0) return $typeinfo['typename'];

            else return getTopChannelName($typeinfo['reid']);

    }

    }

 

在栏目页这么使用:{dede:field name='id' function='getTopChannelName(@me)'/}

在内容详细页这么使用:{dede:field name='typeid' function='getTopChannelName(@me)'/}

附带获取优质栏目的url:

打开include/helpers/extend.helper.php,添加一个函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

//织梦58源码收集资源

    /**

     *  获取指定栏目id的优质栏目的url

     *

     * @return     string

     */

    if ( ! function_exists('getTopChannelUrl'))

    {

    function getTopChannelUrl($id) {

       global $dsql;

            $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");

            if($typeinfo['reid']==0) return GetOneTypeUrlA($typeinfo);

            else return getTopChannelUrl($typeinfo['reid']);

    }

    }

 

在栏目页这么使用:{dede:field name='id' function='getTopChannelUrl (@me)'/}

在内容详细页这么使用:{dede:field name='typeid' function='getTopChannelUrl(@me)'/}

本文章网址:http://www.ppssdd.com/code/12090.html。转载请保留出处,谢谢合作!

dedecms织梦子栏目获取顶级栏目名称及链接url方法

dedecms织梦子栏目获取顶级栏目名称及链接url方法

打开include/helpers/extend.helper.PHP,添加一个函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  //织梦58模板收集资源
    /**
     *  获取指定栏目id的顶级栏目的名称
     *
     * @return     string
     */
    if ( ! function_exists('getTopChannelName'))
    {
    function getTopChannelName($id) {
       global $dsql;
            $typeinfo = $dsql->Getone("SELECT * FROM `dede_arctype` WHERE id='{$id}'");
            if($typeinfo['reid']==0) return $typeinfo['typename'];
            else return getTopChannelName($typeinfo['reid']);
    }
    }

    

在列表页这么使用:{dede:field name='id' function='getTopChannelName(@me)'/}

在内容页这么使用:{dede:field name='typeid' function='getTopChannelName(@me)'/}

 

附带获取顶级栏目的url:

打开include/helpers/extend.helper.PHP,添加一个函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//织梦58模板收集资源
    /**
     *  获取指定栏目id的顶级栏目的url
     *
     * @return     string
     */
    if ( ! function_exists('getTopChannelUrl'))
    {
    function getTopChannelUrl($id) {
       global $dsql;
            $typeinfo = $dsql->Getone("SELECT * FROM `dede_arctype` WHERE id='{$id}'");
            if($typeinfo['reid']==0) return GetoneTypeUrlA($typeinfo);
            else return getTopChannelUrl($typeinfo['reid']);
    }
    }

     

在列表页这么使用:{dede:field name='id' function='getTopChannelUrl (@me)'/}

在内容页这么使用:{dede:field name='typeid' function='getTopChannelUrl(@me)'/}

@H_301_174@

dedecms织梦获取当前新闻页面二级栏目名称的办法

dedecms织梦获取当前新闻页面二级栏目名称的办法

 

Dedecms织梦做站的时候,需要在当前页面调用二级栏目名称(即本栏目上一级的栏目名称)的时候,织梦默认{dede:field name='typename' /} 就无法实现了,所以我给大家分享了一个办法,亲测可用:

一、在include/common.func.php的*下方加入:

//获取二级栏目名

function GetSecondTypename($id)

{

    global $dsql;

    $row = $dsql->GetOne("SELECT typename,topid,reid FROM dede_arctype WHERE id= $id");

    if ($row['reid'] == $row['topid'])

    {

        return $row['typename'];

    }

    else

    {

        $row1 = $dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= $row[reid]");

        return $row1['typename'];

    }

}

 

二、

在新闻页或者栏目栏目页调用时,在所要调用 名称的位置加上下面这行代码即可实现。

{dede:field name='typeid' function="GetSecondTypename(@me)" /}

本文章网址:http://www.ppssdd.com/code/12706.html。转载请保留出处,谢谢合作!

关于织梦DEDECMS栏目获取无限子分类的办法织梦dedecms教程的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于DEDECMS中怎么获取无限栏目子分类、dedecms织梦子栏目获取顶级栏目名称及链接url办法、dedecms织梦子栏目获取顶级栏目名称及链接url方法、dedecms织梦获取当前新闻页面二级栏目名称的办法等相关内容,可以在本站寻找。

本文标签: