我正在尝试使用以下语言功能动态设置标题、元描述和关键字:
$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; ?>">