Codeigniter语言数组中的动态文本

时间:2015-11-04 10:39:11

标签: php regex codeigniter

我正在尝试使用以下语言功能动态设置标题,元描述和关键字:

$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细节。因此,将来如果我们想要进行更改,而不是访问所有控制器,我只能在一个文件中进行更改。

有人能建议我如何使用动态游戏吗?

2 个答案:

答案 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');