美好生活,cc国际靠谱吗_cc国际和CC在线_cc国际娱乐会所怎么样记忆,从“心”开始!

cc国际靠谱吗_cc国际和CC在线_cc国际娱乐会所怎么样生活

您当前位置:主页 > cc国际靠谱吗_cc国际和CC在线_cc国际娱乐会所怎么样生活 >
cc国际靠谱吗_cc国际和CC在线_cc国际娱乐会所怎么样生活

关于织梦(DEDECMS)多语言静态与伪静态的配置操作说明

自己研究 ?-?fapdanves?-? ???2017-11-22

废话不多说,先上图。


1、include下添加配置文件 language.php
?? 我写的比较简单,大体是这样的
$langs=[
? [
? 'l'=>"中文",
? 'h'=>"首页",
? 'p'=>"上一页",
? 'n'=>"下一页",
? 'e'=>"未页",
? 't'=>"总页数",
? 'r'=>"条记录"
? ],
? [
? 'l'=>"英语",
? 'h'=>"TOP",
? 'p'=>"Previous",
? 'n'=>"Next",
? 'e'=>"END",
? 't'=>"Total Pages",
? 'r'=>"Reconds"
? ]
];
?? ?>
?? 一看就明白了,就不写注释了哟

2、include下arc.listview.class.php修改
1)在类ListView中增加$langarr;
2)在__construct方法中调用言配置文件
?? require_once('language.php');
?? $this->langarr = $langs;
3)修改静态分页函数GetPageListST
?? (1) GetPageListST($list_len,$lang,$listitem="index,end,pre,next,pageno") //增加一个参数$lang;
?? (2) 修改分页显示,大致如下:
??????? if($totalpage<=1 && $this->TotalResult>0)
??????? {
??????????? return "
  • ".$this->langarr[$lang]["t"]." 1,".$this->TotalResult."".$this->langarr[$lang]["r"]."
  • \r\n";?
    ??????? }
    ??????? if($this->TotalResult == 0)
    ??????? {
    ?? return "
  • ".$this->langarr[$lang]["t"]." 0,".$this->TotalResult."".$this->langarr[$lang]["r"]."
  • \r\n";
    }

    ?????? $maininfo = "
  • ".$this->langarr[$lang]["t"]." {$totalpage},".$this->TotalResult."".$this->langarr[$lang]["r"]."
  • \r\n";????????
    ??????? //获得上一页和主页的链接
    ??????? if($this->PageNo != 1)
    ??????? {??
    ?? $prepage.="
  • ".$this->langarr[$lang]["p"]."
  • \r\n";
    ??????????? $indexpage="
  • ".$this->langarr[$lang]["h"]."
  • \r\n";???
    ??????? }
    ??????? else
    ??????? {
    ?? $indexpage="
  • ".$this->langarr[$lang]["h"]."
  • \r\n";
    ??????? }

    ??????? //下一页,未页的链接
    ??????? if($this->PageNo!=$totalpage && $totalpage>1)
    ??????? {
    ??????????? $nextpage.="
  • ".$this->langarr[$lang]["n"]."
  • \r\n";
    ??????????? $endpage="
  • ".$this->langarr[$lang]["e"]."
  • \r\n";??
    ??????? }
    ??????? else
    ??????? {
    ?? $endpage="
  • ".$this->langarr[$lang]["e"]."
  • \r\n";
    ??????? }
    ??????? 注意:为了节省空间,并未全部复制代码,只贴出一修改的核心代码。
    ?? 说明:如果做静态的,后面关于伪静态的配置,都可以不用处理。
    4) 修改动态分页函数GetPageListDM(为了后续伪静态做准备,着实不喜欢静态页面)
    ?? (1) GetPageListDM($list_len,$lang,$listitem="index,end,pre,next,pageno") //增加一个参数$lang;
    ?? (2) 修改分页显示,大致如下:
    ???????? if($totalpage<=1 && $this->TotalResult>0)
    ??????? {
    ?? return "
  • ".$this->langarr[$lang]["t"]." 1,".$this->TotalResult."".$this->langarr[$lang]["r"]."
  • \r\n";?
    ??????? }
    ??????? if($this->TotalResult == 0)
    ??????? {
    ?? return "
  • ".$this->langarr[$lang]["t"]." 0,".$this->TotalResult."".$this->langarr[$lang]["r"]."
  • \r\n";
    }
    $maininfo = "
  • ".$this->langarr[$lang]["t"]." {$totalpage},".$this->TotalResult."".$this->langarr[$lang]["r"]."
  • \r\n";????????
    5)修改模版解析函数ParseDMFields,大致如下:
    $lang = trim($ctag->GetAtt("language"));language数值在分页函数pagelist中配置
    if(empty($lang)||$lang>=count($this->langarr)){$lang=0;}?
    ???? 因为上面修改两个分页函数,所以这里也要调整下
    ??????? if($ismake==0){$this->dtp->Assign($tagid,$this->GetPageListDM($list_len,$lang,$listitem));}
    ??????? else{$this->dtp->Assign($tagid,$this->GetPageListST($list_len,$lang,$listitem));}?

    3、include/helpers下channelunit.helper.php修改
    1)增加伪静态显示配置函数
    ?? 我的设想URL显示是:
    ?????? 中文显示成:http://域名/zh/view-{aid}.html与 http://域名/zh/list-{tid}.html
    ?????? 英文显示成:http://域名/en/view-{aid}.html与 http://域名/en/list-{tid}.html
    ?????? 其他语言配置文件中添加即可,显示类似,其中view与list可以根据自己的喜好修改。
    ?????? function langs() {return ["zh","en"];} 也可写在配置文件中,但是我觉得麻烦,所以就这里单独配置了
    2)修改GetFileName方法
    ?????? $langdir = langs();
    ?????? if($cfg_rewrite == 'Y'){return "/".$langdir[$money]."/view-".$aid.'.html';}
    ?????? 这里用了主表archives中的money,因为不做会员,这个字段确实没有什么用,也是因为用了这个字段,所以plus下view.php也要修改下,这里就不啰嗦了,很简单的,去掉一句限制语句,就可以了。
    3)修改GetTypeUrl方法
    ?????? $langdir = langs();
    ?????? if($isdefault==-1){$reurl = "/".$langdir[$siteurl]."/hope-".$typeid.".html";}
    ?????? 这里用了栏目表arctype表中的siteurl字段,多站点,其实也用的很少,有特殊需要,可以添加字段来处理。同时,这里为了提升查询效率,我把siteurl的字段类型改成了tinyint类型,长度1,默认0,即默认为中文。

    4、修改栏目显示文件
    ? ? 在后台目录中,这里一共有三个catalog_add.htm、catalog_add_quick.htm、catalog_edit.htm
    ?? 大致代码如下,找个地方放下就可以了。
    ?? 添加:
    ?????????
    ??????????? 语言类别:  
    ???????????
    ???????????
    ?????????
    ?? 修改:
    ?????????
    ??????????? 语言类别:  
    ???????????
    ???????????
    ?????????

    5、修改各种内容模型的添加与修改的逻辑与模版,让主表中的money字段
    ?? 这里其实考虑有点不全面,因为在独立模型中无此字段,当然可以添加然后进行简单的代码修改,也可以使用主表中别的字段,当然为了不干扰,最好自己加一个,不过我懒,就用现成的了。
    ?? 这里每个文档可以通过typeid这个字段来来查询对应的siteurl,然后把再赋值给money字段,就OK,这一步我居然浪费了差多半小时,其实非常简单,只要在主表入库或更新前加入以下代码就可以了。
    ??? $khh = $dsql->GetOne("Select siteurl From fap_arctype where id='$typeid'");
    ??? $money=$khh['siteurl'];

    6、剩下就是伪静态规则了,找到.htaccess添加对应伪静态规则即可

    至此,大告成了,多言语就这么OK了,后续如果要添加或者编辑,只要动两处理配置就可以,如果你比我更懒,可以把两处理配置合到一个文件中,或者在后台做一个配置管理,当然可能会有BUG,目前就是这些了。

    写在最后的,因为确实太懒,所以并没有写的非常详细,不过稍微有一点经验的朋友应该可以很容易看明白的,当然有需要可以联系我给我发源码。同时,由于时间仓促,难免有不足,欢迎大家批评指正,邮箱:dmj@i-meili.com

    ?
    补充于17.11.26 :关于内容页与搜索页的多语言

    1、内容页
    修改include目录下arc.archives.class.php中的动态分页函数GetPagebreakDM与上下篇链接函数GetPreNext,如果要做静态页面,则需要修改静态分页函数GetPagebreak。
    如上文,在这次休息中,偷情使用的是主表是money这个字段,所以在调用上就很简单了,直接调用使用,如使用动态分页函数时:
    ? ? ? ?$this->dtp->Assign($i,$this->GetPagebreakDM($this->TotalPage,$this->NowPage,$this->ArcID,$this->Fields['money']));
    如红字标示处:$this->Fields['money']?
    ?
    2、搜索页
    ?修改include目录下arc.searchview.class.php中的GetPageListDM函数,大体搜索可以参考arc.listview.class.php中分页函数的处理。

    3、关于搜索的补充
    咋一看搜索页好像挺简单的,其实不然,因为涉及多语言,我们肯定是希望不同语言的搜索显示页面不同的,最起码是语言上吧。所以有一点小麻烦来了,不过想明白了,也不麻烦。

    大体思路与栏目一样的,首先对应语言只能搜索对应语言下的结果,所反首先想到的当然是限制搜索的栏目了,看了plus下的源码,确实可以解决问题,那么语言怎么办呢?一样的思路,反控制层去找对应语言下的视图文件就OK了,想到这里,办法就来了~~

    HTML

    说明:typied对应各语言的顶级栏目,language的值对应lang.php中语言对应的下标,当然到这里,lang.php不得不做一些调整了,如下:

    lang.php源文件

    $langs=[
    [
    'l'=>"中文",
    'la'=>"zh",
    'h'=>"首页",
    'p'=>"上一页",
    'pa'=>"上一篇",
    'n'=>"下一页",
    'na'=>"下一篇",
    'e'=>"未页",
    't'=>"总页数",
    'r'=>"条记录",
    'null'=>"没有"
    ],
    [
    'l'=>"英语",
    'la'=>"en",
    'h'=>"TOP",
    'p'=>"Previous",
    'pa'=>"Previous",
    'n'=>"Next",
    'na'=>"Next",
    'e'=>"END",
    't'=>"Total Pages",
    'r'=>"Reconds",
    'null'=>"NULL"
    ]
    ];
    ?>
    下面再说核心的部分了,其实想明白了也很简单。
    修改plus下search.php中的SearchView函数,这个函数是在include目录下arc.searchview.class.php中定义的,边边角角的就不啰嗦了,无非就是获取变量,修改函数,传递参数这些了。

    至此,这个多语言,基本完工了,注意是基本,因为还有一个小地方没有处理,因为我这里用不上,而且很简单,所以就不浪费大家时间了。


    您也可以通过扫描二维码,在移动设备上查看。

    相关推荐

  • 点击查看更多关于dedecms(6)多语言(1)的相关内容
  • 首页365bet苹果客户端电话