DEDE 5.3的原有内容页的 TITLE 是 文章名称_网站名称 现在要改为 文章名称_二级栏目_一级栏目_网站名称:
具体方法如下:
找到 include/arc.archives.class.php 里的 第 62 行
$this->Fields = $this->dsql->GetOne($query);
下面加一个字段
$this->Fields['title_M'] = ereg_replace(" [<>] ","_",$this->TypeLink->GetPositionLink(false));
保存上传
然后替换模板文件,在TITLE里嵌入这个字段
找到 templets/default/article_article.htm 里的 第 5 行
<title>{dede:field.title/}_{dede:global.cfg_webname/}</title>
替换成:
<title>{dede:field.title/}_{dede:field.title_M/}_{dede:global.cfg_webname/}</title>
保存上传
生成HTML,更新缓存,刷新 就 OK。
第1种:
在/include/inc_archives_view.php文件中。
查找tp.typedir,然后替换成tp.typedir,tp.typename。
最后在文章模板中用{dede:field name='typename'/}调出来。这样就OK啦。。
第2种:
就“{dede:field name='title'/}-{dede:field name='typename'/}-{dede:global name='cfg_webname'/}”这样就可以显示啦。
第3种:
本来想修改inc_archives_view.php来实现,
后来发现用“position”更简便。。。(不知道有没有人发过,现在分享一下,有不足之处还请高手多多指点哦:)
代码如下:
{dede:field name='title'/}-{dede:field name='position' runphp='yes'}
$tc="-"; //分隔符
$tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
@me=html2text(@me); //去除html标签
$tf=split($tw,@me); //分解成数组
for($ta=(count($tf)-2);$ta>=1;$ta--){ //循环赋值给$tk
$tk.=trim($tf[$ta]).$tc;
}
$tk=substr($tk,0,-1);
@me=$tk; //赋值给@me
{/dede:field}-{dede:global name='cfg_webname'/}
将以上代码放在<title></title>之间就可以实现“文章标题-2级栏目-1级栏目-网站名”的形式了
另外:文章页里显示栏目的方法
文章页里没有单独的标签用于显示栏目名称,也不能用{dede:filed name='****' /}这种形式,因为在archives表及其附加表中没有栏目名称这个字段。那么,我们如何在文章页显示栏目名称呢?
我们可以用有附加函数的标签。那么我们首先需要自己编写一个函数,用来处理标签里的内容。
function My_GetCName($typeid){
$dsql = new DedeSql(false);
$row = $dsql->GetOne("select typename From #@__arctype where ID=$typeid; ");
return $row['typename'];
}
将这个函数加到 网站目录\include\inc_functions.php 这个文件中。
在文章页模版中需要引用栏目标题的地方加入这个标签。
{dede:field name='typeid' function='My_GetCName(@me)'/}
