语言数组中的Codeigner动态文本


Codeigniter dynamic text in language array

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

$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");?>"> 

到目前为止,这很有效,但我如何才能让它适用于动态标题Regex是我脑海中第一个想到的,但不幸的是,它不适用于语言类,就像我已经尝试过的那样适用于路由。

我使用语言类的原因是,它的巨大列表,有许多控制器,我们将一次又一次地更改这个seo关键字、标题。所以为了避免这种麻烦,我希望所有的seo详细信息都在一个地方。因此,在未来,如果我们想进行更改,而不是访问所有的控制器,我只能在一个文件中进行更改。

有人能给我一个如何使用动态标题的想法/解决方案吗?

您不应该在那里使用任何regex。所有数据都应该由控制器传递,MVC就是这样工作的。因此,根据您的情况,您应该在控制器中创建变量并将其传递给视图。你可以这样做:

在您的语言文件中(例如在英文目录中):

$lang['page_title'] = 'Home page';

切换语言后(默认情况下,它是在配置文件中定义的),您可以通过以下方式访问它:

lang('page_title');

所以控制器中的代码应该是这样的:

$data = array(
   'page_title' => lang('page_title')
);
$this->load->view('view_name', $data);
// for usage in the view
<head>
   <title><?= $page_title ?></title>
</head>

因此,使用代码点火器$this->session->userdata('lang');,它将返回当前选定的语言。您可以更改它:

$this->session->set_userdata('lang','germany');

然后系统将从您的应用程序/language/dgerman/文件夹中读取文件。不要忘记先加载语言-$this->lang->load('lang_file', $this->session->userdata('lang'))

试试这个

在控制器方法上添加以下内容:

$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; ?>">