2

私の CodeIgniter Web サイトのコントローラーは次のように設定されています。

$this->load->view('head', $data); // Contains <head> stuff
$this->load->view('header', $data); // Nav and sidebars
$this->load->view($this->uri->segment(1), $data); // Main page content
$this->load->view('footer', $data); // Footer

私の質問は、<title>タグのコンテンツをどこに保存するかについてです。理想的には、ページ コンテンツ (3 番目に読み込まれたビュー) を使用することです<title>が、最初のビューで読み込まれたタグにそれをどのように取り込むのでしょうか?

検索エンジン ボットと互換性がないため、JavaScript でタイトルを設定するのは良くないと読みました。

すべてのページを含む大きなビューファイルがあるという提案も読みました

4

8 に答える 8

2

ページのタイトルを変更するには、これがより良い方法です。構成ファイルに次のパラメーターを追加します。

$config['pageTitle'] = 'Book Store';

テンプレートページで:

<title><?=$this->config->config["pageTitle"]?></title>

好きなページで、この構成を実際に変更します。

$this->config->config["pageTitle"] = $detail[0]['Title'];

いつでも簡単にタイトルを変更できます。

于 2017-10-07T16:11:43.760 に答える
1

コンパイルされた HTML ドキュメントの head (ロードした最初のビュー) ではなく、ロードした 3 番目のビューにタグを配置する理由がよくわかりません。次のようなものを持っていないのはなぜですか:

$data['title'] = 'my page title';

$this->load->view('head', $data);
于 2012-07-07T17:17:03.753 に答える
1

私は自分の問題を解決する方法を考えました. http://joshhighland.com/blog/2008/11/09/how-i-do-layouts-and-views-in-codeigniter/からアイデアを得ました。そのページを見ると、最初のコード抽出の下部近くに次のような行があります。

$layout_data['content_body'] = $this->load->view('home/homePage', $body_data, true);

これにより、ビューが文字列としてその変数にロードされます。次に、その文字列に対して関数を実行して、必要なタイトルを抽出し (HTML コメントに保存します) $layout_data['pageTitle']、. 次に、リンクの残りのレイアウト方法に従うことで、問題を解決できます。

于 2012-07-09T00:24:25.920 に答える
0

論理的には、<title>タグはタグ内にある必要があり<head>、「ヘッド」ビューに配置することは理にかなっています。したがって、ヘッドビューに渡す $data 配列には、タグの要素が含まれている必要があります。あなたのスクリプトから、4 つのビューすべてに同じ $data 配列を渡していることがわかりますか? 1 つのビューで使用されている要素を渡すことになり、他の 4 つのビューでは使用されない可能性があるため、あまり良い方法ではありません。ビューごとに異なる配列を形成することをお勧めします。

于 2012-07-07T17:11:10.197 に答える
0

ヘルパー関数を書いてみませんか?

ヘルパー helpers/header_helper.php

function set_title($title) {
    $ci &= get_instance();
    $ci->header_title = $title;
}

function get_title() {
    $ci &= get_instance();
    return $ci->header_title;
}

これを自動ロードするように設定することができますconfig/autoload.php

ビューでは関数get_title()を呼び出すことができ、コントローラーは を呼び出すことができますset_title()

于 2012-07-07T20:32:37.150 に答える