2

我正在研究codeigniter,我想知道动态更改标题的最佳方法是什么。例如。如果您在主页、单个帖子页面、类别页面等上,标题会发生变化。

我能想到的唯一解决方案是制作单独的函数并将当前 URL(来自地址栏)与单个帖子页面、类别页面、主页的结构进行比较

像这样的东西:

public function current_title() { 
   if($this->uri->segment(2) == 'post') { 
      // will return post title 
    }

   if($this->uri->segment(2) == 'category') { 
      // will return archive title 
    }

    if(current_url() == base_url()) { 
      // this is home page 
    }

如果有人以前使用过这个,任何建议都非常感谢

4

4 回答 4

2

I would not use the uri for this, but instead the controller and action name and the language class :

public function current_title() 
{
    $this->lang->load('titles.php', 'en');

    return $this->lang->line(
        $this->router->fetch_class().'.'.$this->router->fetch_method()
    );
}

You will have a key like MyClass.myMethod for your translation. Just add your titles in your titles.php file :

$lang['MyClass.myMethod'] = "The title";
$lang['MyOtherClass.myOtherMethod'] = "The other title";

Read more about translation :
http://ellislab.com/codeigniter/user-guide/libraries/language.html
http://ellislab.com/codeigniter/user-guide/helpers/language_helper.html

于 2013-07-03T15:53:42.653 回答
2

//in the controller you should do like this:

 class Home extends your_Controller {
      public function __construct() {
          parent:: __construct();
         }
       function index()
       { 
       $this->data['pageTitle'] = 'Your page title';
        $data['main_content'] = 'home';
        $this->load->view('includefolder/viewname', $data);
       }
    }
于 2013-07-03T15:54:07.030 回答
0

由于我们为每个视图都有一个控制器函数,因此您可以轻松地从 url 获取函数名称

$this -> router -> fetch_module();

所以你可以使用它。

于 2013-07-03T16:06:52.207 回答
0

我就是这样做的:

$PHPFile = basename($_SERVER['PHP_SELF'],'.php');
switch ($PHPFile) {
    case 'index': $PageTitle = 'Home'; break;
    case 'products': $PageTitle = 'Products'; break;
    case 'services': $PageTitle = 'Services'; break;
}

您可以使用字符串搜索或任何需要的东西。我使用这种方法是因为我将页面的标题作为库中的一个函数。

于 2013-07-03T15:46:30.047 回答