用织梦dedecms建设时,在文章内容页中,默认调用的上一篇、下一篇都是汉字,如下图:
但在英文内容页中,通常也是中文的上一篇、下一篇,通常我们希望英文内容页显示英文的Preview、Next ,如下图:
本文就来讲解一下,用织梦做中英双语网站时,英文内容页调用上一篇、下一篇英文显示的方法。方法原理:需要对织梦分页文件底层代码部分的修改,具体方法如下:
1、需要修改includearc.archives.class.php 文件
(1)打开includearc.archives.class.php,找到
$this->dtp->Assign($i,$this->GetPreNext($ctag->GetAtt('get')));
更改为
$this->dtp->Assign($i,$this->GetPreNext($ctag->GetAtt('get'), $ctag->GetAtt('sitelang')));
(2)找函数 GetPreNext 找到
function GetPreNext($gtype='')
更改为
function GetPreNext($gtype='', $site_lang)
(3)需要增加判断代码了直接在
function GetPreNext($gtype='', $site_lang)
{
//添加在这里
$str_pre = '';
$str_next = '';
$str_pre_words = '';
$str_next_words = '';
if($site_lang == 'cn')
{
$str_pre = '上一篇';
$str_next = '下一篇';
$str_pre_words = '上一篇:没有了';
$str_next_words = '下一篇:没有了';
}elseif($site_lang == 'en')
{
$str_pre = 'Preview';
$str_next = 'Next';
$str_pre_words = 'Preview:no';
$str_next_words = 'Next:no';
}
//到这里结束,上面是添加的代码,下面是正常的代码
$rs = '';...........}
(4)将 if(is_array($preRow)) 里面的上一篇下一篇 上一篇:没有了,下一篇:没有换成变量。
找到
$this->PreNext['pre'] = "上一篇:<a href='$mlink'>{$preRow['title']}</a> ";
改为
$this->PreNext['pre'] = $str_pre .":<a href='$mlink'>{$preRow['title']}</a> ";
找到
$this->PreNext['pre'] = "上一篇:没有了 ";
改为
$this->PreNext['pre'] = $str_pre_words;
找到
$this->PreNext['next'] = "下一篇:<a href='$mlink'>{$nextRow['title']}</a> ";
改为
$this->PreNext['next'] = $str_next . ":<a href='$mlink'>{$nextRow['title']}</a> ";
找到
$this->PreNext['next'] = "下一篇:没有了 ";
改为
$this->PreNext['next'] = $str_next_words;
到此为止,英文上一篇下一篇的代码已经添加完成。
2、在前台模板页面如何调用中英文上一篇下一篇
(1)打开你的英文内容页模板,以默认模板为例:打开templetsdefaultarticle_article.htm,找到调用上一篇、下一篇的代码:
<li>{dede:prenext get='pre'/}</li>
<li>{dede:prenext get='next'/}</li>
(2)如果是中文站的内容页,就更改为:
<li>{dede:prenext get='pre' sitelang='cn'/}</li>
<li>{dede:prenext get='next' sitelang='cn'/}</li>
(3)如果是英文站的内容页,就更改为:
<li>{dede:prenext get='pre' sitelang='en'/}</li>
<li>{dede:prenext get='next' sitelang='en'/}</li>
做完以上工作后,调用上一篇下一篇的代码,在不同内容页中显示的中英文就可以指定了。