我正在尝试使用以下语言功能动态设置标题,元描述和关键字:
$lang['/contact_title'] = "Contact Us";
$lang['/contact_desc'] = "Description for contact us page";
$lang['/contact_keywords'] = "key, words";
并在头文件中我使用它如下:
<title><?echo $this->lang->line($_SERVER['PATH_INFO']."_title");?></title>
<meta name="description" content="<?echo $this->lang->line($_SERVER['PATH_INFO']."_desc");?>">
到目前为止,这项工作很有效,但我怎样才能让它适用于动态游戏呢? 正则表达式是第一个虽然出现在我的脑海中,但不幸的是它不能用于语言类,就像我已经尝试过的路由一样。
我使用语言课的原因是因为,它的巨大列表,有很多控制器,我们将一次又一次地改变这个seo关键词,标题。所以为了避免麻烦我想在一个地方的所有seo细节。因此,将来如果我们想要进行更改,而不是访问所有控制器,我只能在一个文件中进行更改。
有人能建议我如何使用动态游戏吗?
答案 0 :(得分:0)
试一下
在控制器方法上添加:
$data['contact_title'] = "Contact Us";
$data['contact_desc'] = "Description for contact us page";
$data['contact_keywords'] = "key, words";
$this->load->view('header',$data);
最后致电header.php
:
<title><?php echo $contact_title; ?></title>
<meta name="description" content="<?php echo $contact_desc; ?>">
<meta name="keywords" content="<?php echo $contact_keywords; ?>">
答案 1 :(得分:0)
你不应该在那里使用任何正则表达式。所有数据都应由控制器传递,这就是MVC的工作原理。因此,根据您的情况,您应该在控制器中创建变量并将其传递给视图。你可以这样做:
在您的语言文件中(例如英语目录内):
$(document).on('change', '.disguise', function (e) {
//var params = $('').find('input').serialize(); // get all inputs from clicked row
$.ajax({
type: 'post',
dataType: 'json',
url: '/calculateHours',
data: params,
success: function (response) {
alert('Done...');
}
});
});
在切换语言后(默认情况下,它是在配置文件中定义的),您可以通过以下方式访问它:
$lang['page_title'] = 'Home page';
因此控制器中的代码应如下所示:
lang('page_title');
因此,使用codeigniter $data = array(
'page_title' => lang('page_title')
);
$this->load->view('view_name', $data);
// for usage in the view
<head>
<title><?= $page_title ?></title>
</head>
它将返回当前选定的lang。你可以改变它:
$this->session->userdata('lang');
然后系统将从您的应用程序/语言/德国/文件夹中读取文件。不要忘记先加载语言 - $this->session->set_userdata('lang','germany');