【问题标题】:Codeigniter Dynamic Page Title not workingCodeigniter 动态页面标题不起作用
【发布时间】:2023-03-15 09:42:01
【问题描述】:

我环顾四周,发现了一些提到这一点的线程,但由于某种原因,当我将页面标题添加到扩展 MY_Controller 的 Public_Controller 时,它不起作用。如果我不向扩展 Public_Controller 的其他控制器添加页面标题,那么它们的页面标题应该是“测试标题”。然而,事实并非如此。这是我所拥有的

Public_Controller.php:

class Public_Controller extends MY_Controller
{
function __construct()
{
    parent::__construct();
    $this->data['pageTitle'] = 'Test Title'; // pages without a title should display this
    ....
}

}

Home.php(我的默认控制器...扩展 Public_Controller):

class Home extends Public_Controller {

public function __construct() {
    parent:: __construct();
}

function index()
{ 
   $this->data['pageTitle'] = 'Your page title';

   $data['main_content'] = 'home';

   // My header which contains the <title> is in the template
   $this->load->view('includes/template', $data);
}

}

如果我按照应有的方式执行此操作,则上述方法有效,但如果页面没有设置,我希望页面显示标题:

$data['pageTitle'] = 'Your page title';

页眉区域:

<title><?php echo $pageTitle; ?> </title>

知道为什么这不起作用吗?

【问题讨论】:

  • $data 属性在哪里定义?尝试定义 public $data = array();在 Public_Controller 中

标签: php codeigniter codeigniter-2


【解决方案1】:

你希望你可以这样做:

<title><?php echo (isset($pageTitle)) ? $pageTitle : 'Default title text'; ?> </title>

这样,如果没有设置标题,它将输出默认值。

【讨论】:

  • 如果您希望标题是动态的怎么办。例如配置文件的标题。必须通过模态显示时如何设置标题? @cryptic
【解决方案2】:

这样做-

$data['pageTitle'] = 'Your page title';

改为

$this->data['pageTitle'] = 'Your page title';

【讨论】:

  • 当我在 Public_Controller 中这样做时它不起作用。不过,如果我在家庭控制器中这样做,它确实有效。但是,我想成为 abel 将 Public_Controller 标题用于我没有像在 Home 中那样手动设置的页面
  • @KraigBalla 您是否在两个文件中都进行了此更改?因为它应该可以工作。
  • @KraigBalla:将默认标题存储在 sesssion 中,在打印标题之前,只需检查 $pageTitle 已设置。如果它设置比打印 $pageTitle 否则会话值。
  • @SureshKamrushi 会话不应用于此类操作。只需正确完成代码即可设置标题。您的代码可以工作,我只是不认为 OP 对两个文件都进行了更改,因为您的示例说“您的页面标题”,所以 OP 可能刚刚更改了该行。
  • @SureshKamrushi 那么这是让 Public_Controller 工作的唯一方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 2019-06-03
  • 2010-10-12
相关资源
最近更新 更多