自我评价:走在路上的菜鸟,想着CMS|WEB|SEO,做着可以成为牛掰程序seoer的梦!

当前位置:博客 > 问题汇总 >

[已解决]织梦文章栏目页调取当前页面顶级栏目名称的方法

作者:灰牛站长•发布时间:2021-09-04 20:34:32•浏览

遇到问题:动态预览模板发现个别织梦文章列表页面无法获取当前分类的顶级栏目,怎么办?

无法获取当前页面顶级栏目名称

解决办法:正确调取代码写法,点击跳转

直接百度{dede:field name='typeid' function="GetTopTypename(@me)"/}搜索,参考文章DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法

记录报错代码

<h4 class="nt nt1"><a href="" title="{dede:field name='typeid' function="GetTopTypename(@me)"/}">{dede:field name='typeid' function="GetTopTypename(@me)"/}</a></h4>

include/common.func.php对应代码

  //获取顶级栏目名
  function GetTopTypename($id)
  {
      global $dsql;
      $row = $dsql->GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");
      if ($row['topid'] == '0')
      {
          return $row['typename'];
      }
      else
      {
          $row1 = $dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]");
          return $row1['typename'];
      }
  }
  //获取顶级栏目英文名
  function GetTopTypenameen($id)
  {
      global $dsql;
      $row = $dsql->GetOne("SELECT typenameen,topid FROM dede_arctype WHERE id= $id");
      if ($row['topid'] == '0')
      {
          return $row['typenameen'];
      }
      else
      {
          $row1 = $dsql->GetOne("SELECT typenameen FROM dede_arctype WHERE id= $row[topid]");
          return $row1['typenameen'];
      }
  }
  //获取顶级栏目图片
  function GetTopTypeimg($id)
  {
      global $dsql;
      $row = $dsql->GetOne("SELECT typeimg,topid FROM dede_arctype WHERE id= $id");
      if ($row['topid'] == '0')
      {
          return $row['typeimg'];
      }
      else
      {
          $row1 = $dsql->GetOne("SELECT typeimg FROM dede_arctype WHERE id= $row[topid]");
          return $row1['typeimg'];
      }
  }  
  //获取顶级栏目描述
  function GetTopDescription($id)
  {
      global $dsql;
      $row = $dsql->GetOne("SELECT description,topid FROM dede_arctype WHERE id= $id");
      if ($row['topid'] == '0')
      {
          return $row['description'];
      }
      else
      {
          $row1 = $dsql->GetOne("SELECT description FROM dede_arctype WHERE id= $row[topid]");
          return $row1['description'];
      }
  }

以下为正确调取代码写法:

方法一:在include/common.func.php的最下方加入:

//获取顶级栏目名
function GetTopTypename($id)
{
    global $dsql;
    $row = $dsql-<GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");
    if ($row['topid'] == '0')
    {
        return $row['typename'];
    }
    else
    {
        $row1 = $dsql-<GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]");
        return $row1['typename'];
    }
}

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

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

在文章页中用下面这个方法来调用

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

方法二:修改 include/helpers/extend.helper.php 结尾增加以下代码

/*  获取顶级栏目相关信息
 *
 * @access    public
 * @param     string  $tid  栏目id
 * @param     string  $field栏目字段
 * @return    string
 */
if ( ! function_exists('getToptype'))
{
function getToptype($tid,$field)
{
global $dsql,$cfg_Cs;
if(!is_array($cfg_Cs))
{
require_once(DEDEDATA."/cache/inc_catalog_base.inc");
}
if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0)
{
$topid = $tid;
}
else
{
$topid = GetTopid($cfg_Cs[$tid][0]);
}
$row = $dsql-<GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid");
if($field=='id') return $topid;
if($field=='typename') return $row['typename'];//栏目名称
if($field=='typeurl') return GetOneTypeUrlA($row);//栏目链接
if($field=='typenamedir') return $row['typenamedir'];//栏目英文名称
if($field=='seotitle') return $row['seotitle'];//栏目SEO标题
if($field=='description') return $row['description'];//栏目描述
if($field=='content') return $row['content'];//栏目内容
}
}

调用:

{dede:field.typeid function="gettoptype(@me,typename)"/}  //栏目名称
{dede:field.typeid function="gettoptype(@me,typeurl)"/}   //栏目链接

相关文章

手机端