澳门新葡萄京娱乐场帝国cms模板实现多国语言切换

语言包解决方案

EcmsToSendMail()

思路:
欲在速度和易用之间取得一个平衡点.于是采用了由html文件生成php文件的办法
也想在分离显示逻辑和分离html代码之间平衡一下 例如一个论坛首页:
代码:‘1’,’forum_cat_id’=>’0′,’forum_name’=>’PHP学习’),
array(‘forum_id’=>’2′,’forum_cat_id’=>’0′,’forum_name’=>’MYSQL学习’)
); $forums = array(
array(‘forum_id’=>’3′,’forum_cat_id’=>’1′,’forum_name’=>’PHP高级教程’),
array(‘forum_id’=>’4′,’forum_cat_id’=>’1′,’forum_name’=>’PHP初级教程’),
array(‘forum_id’=>’5′,’forum_cat_id’=>’2′,’forum_name’=>’MYSQL相关资料’)
); if { if ($tpl->chk_cache//检查判断是否需要重新生产PHP模板文件. {
$tpl->load_tpl;//加载html模板文件. //替换PHP语句
$tpl->assign_block(“{block_cat}”,””);
$tpl->assign_block(“{/block_cat}”,”}?>”);
$tpl->assign_block(“{block_forum}”,””);
$tpl->assign_block(“{/block_forum}”,”}n}?>”);
//生产PHP模板文件. $tpl->write_cache; } } //包含PHP模板文件.
include($tpl->parse_tpl; ?> 对应的html模板文件:
代码:{block_cat}

1、复制gb语言包,放入目录:e/data/language/中,重命名为:”zh”;另加入语言包(除gb语言包以外):针对模板的中文进行的语言包制作命名为:template.php数组名为:template_r将开发中所有前台显示的语言加入其中作为数组元素,其数组元素与其他语言文件数组元素格式一致如添加其他语言文件名与”zh”文件夹中一致,红色必须包含,否则错误!

函数:EcmsToSendMail()功能:帝国CMS邮件发送函数位置:帝国CMS
SendEmail.inc.php版本:6.5

{=$cat[‘forum_name’]}

  1. 制作语言包启动切换功能 在全局公共模板变量header中添加(可自定义位置):

    script type=”text/javascript” !– function setlang(lang) { document.cookie = “WZ_lang=”+lang; } //– /scriptinput type=”button” value=”English” onclick=”setlang(‘en’)” /input type=”button” value=”中文” onclick=”setlang(‘zh’)” /

  2. 制作调用语言包公用头部信息命名为:[!—temp.language–]内容如下:

    !–code.start–?php$lang = $_COOKIE[WZ_lang] //调取语言?($_COOKIE[WZ_lang].’/’):’zh/’; $WZ_dir = count(explode(‘/’,$_SERVER[PHP_SELF]))-2;$WZ_lang_url_str =”;for($WZ_i=0;$WZ_i$WZ_dir;$WZ_i++){ //取得相对路径$WZ_lang_url_str .= ‘../’; }@include_once($WZ_lang_url_str.’e/data/language/’.$lang.’pub/fun.php’);//载入语言包@include_once($WZ_lang_url_str.’e/data/language/’.$lang.’pub/q_message.php’);@include_once($WZ_lang_url_str.’e/data/language/’.$lang.’pub/template.php’);?!–code.end–

EcmsToSendMail($email,$subject,$content);

{block_forum}

4.
修改gb语言包中的fun.php和q_message.php,以e/data/language/gb/pub/fun.php文件为例!只修改前台用到的数组元素,后台务做任何修改!修改方法:键名=?php
echo $fun_r[键名];?,修改实例:找到:

$emai: 邮件地址可为数组$subject: 邮件标题$content: 邮件内容

{=$forum[‘forum_name’]}

'pripage'='',

说明

{/block_forum}

修改为:

函数遵循后台配置,后台配置使用什么方法发送邮件,函数将会使用什么方法发送邮件;1.mail函数这个方法必须配置服务器邮件环境,环境不受待见得话会出来就是个垃圾邮件~2.smtp这个方法不用配置服务器,使用163等邮箱smtp即可
就是老屏蔽

{/block_cat}
经过处理,里面的{block_forum}{block_cat}标签被替换成PHP循环语句,用于显示数组种所有元素.
生成的PHP模板文件: 代码:

'pripage'='?php echo $fun_r[pripage];?',

EcmsToSendMail()使用示例view plaincopy to clipboardprint?
!–php.code.start– //文件位置e/trylife/ecms-function/test-sendmail.php
require(../../class/connect.php); require(../../class/db_sql.php);
$link=db_connect(); $empire=newmysqlquery(); #$mail=’trylife@qq.com’;
$email=array(‘trylife@qq.com’,’94592590@qq.com’);
$subject=’TestEmpireCMSsendmail’; $content=’thisismailcontents’;
@include(ECMS_PATH.’e/class/SendEmail.inc.php’);
EcmsToSendMail($email,$subject,$content); db_close(); $empire=null;
!–php.code.end–

=$cat[‘forum_name’]?>

  1. template.php的操作方法
    针对出现汉字的模板进行修改,以默认新闻列表模板为例:
    模板中出现”您当前的位置:” 将汉字修改为:

    !–code.start–?php echo $template_r[‘ here’];?!–code.end–

=$forum[‘forum_name’]?>

在template.php中添加元素 here=您当前的位置:, here=You are here:,
其他语言包都以此方法添加对应语言

} }?>

}?> default_index.php被包含在index.php,这样就可以正常显示了.
这样,HTML模板文件可以用dw来进行修改美化,美工人员应该会方便一些.
template.php 代码:

$template,储存模板数据. var $template = ”; //模板路径. var $tpl_path =
”; //模板前缀. var $tpl_prefix = ”; //cache路径. var $cache_path =
”; //css文件路径. var $css_path = ”; //header文件路径. var
$header_path = ”; //footer文件路径 var $footer_path = ”; /** *
初始化模板路径. */ function Template { //模板前缀.
$this->tpl_prefix = $root; //模板文件路径. $this->tpl_path =
‘./templates/’ . $root . ‘/’; //生成的PHP文件存放路径.
$this->cache_path = ‘./template_data/’ .$this->tpl_prefix .
‘_’; return true; } /** *
chk_cache,检查”编译”后的模板是否需要更新,判断依据:最后修改时间,”编译”文件是否存在.
*/ function chk_cache { $tpl_file = $this->tpl_path . $tpl_index
. ‘.html’; $cache_file = $this->cache_path . $tpl_index . ‘.php’;
//判断是否需要更新. if(!file_exists { return true; } elseif >
filemtime { return true; } } /** * 输出模板文件. */ function
parse_tpl($tpl_index,$message=”) { return $this->cache_path .
$tpl_index . ‘.php’; } /** * 加载模板文件. */ function load_tpl {
$tpl_file = $this->tpl_path . $tpl_index . ‘.html’; $fp = fopen;
$this->template = fread($fp, filesize; fclose; } /** *
替换变量,并且”编译”模板. */ function write_cache { $cache_file =
$this->cache_path . $tpl_index . ‘.php’; //变量显示.
$this->template = preg_replace/is”, “=\2?>”,
$this->template); //界面语言替换. $this->template =
preg_replace}/ies”, “$lang[‘main’][‘\1’]”,
$this->template); $fp = fopen; flock; fwrite; fclose; } /** *
替换block. */ function assign_block { $this->template =
str_replace($search,$replace,$this->template); } } ?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注