0

codeigniter 2.x を使用しています。私が必要とするのconfig/template.phpは、ビューファイル内からの配列に値を挿入することです/views/home.php

カスタム構成ファイルを作成しましたapplication/config/template.php

$config['site_name'] = "Sitename";
$config['site_lang'] = "En-en";
$config['page_name'] = "Pagename";
$config['css_page'] = "default";
$config['alias'] = "";

$config['head_meta'] = array(
    'description' => 'description',
    'keywords' => 'meta, keywords',
    'stylesheets' => array(
        'template.css'
    ),
    'scripts' => array(
        'jquery.js',
        'template.js'
    ),
    'charset' => 'UTF-8'
);
$config['sidebars'] = array();

次に、application/views/template/template.phpメインの HTML レイアウトとして使用します。最初にapplication/views/template/includes/inc-tpl-cfg.php、テンプレートの構成を配列を持つ 1 つのファイルにグローバル化するファイルを含めます。これにより、それらに少し簡単にアクセスできるようになります。その内容は次のinc-tpl-cfg.phpとおりです。

<?php

// No direct acces to this file
if (!defined('BASEPATH')) exit('No direct script access allowed');

/* Template configuration needs to be defined to make them accessible in the whole template */
$cfg_template = array(
    'sitename'      => $this->config->item('site_name'),
    'sitelang'      => $this->config->item('site_lang'),
    'pagename'      => $this->config->item('page_name'),
    'csspage'       => $this->config->item('css_page'),
    'charset'       => $this->config->item('charset','head_meta'),
    'description'   => $this->config->item('description','head_meta'),
    'keywords'      => $this->config->item('keywords','head_meta'),
    'stylesheets'   => $this->config->item('stylesheets','head_meta'),
    'scripts'       => $this->config->item('scripts','head_meta'),
    'sidebars'      => $this->config->item('sidebars')
);

/* Template variables */
$cfg_assetsUrl = base_url() . 'assets';

// If pagename exists than concatenate it with a sitename, else output only sitename
if(!empty($cfg_template['pagename'])){
    $title = $cfg_template['pagename'] . ' - ' . $cfg_template['sitename'];
}else{
    $title = $cfg_template['sitename'];
}

私のメイン テンプレート レイアウトの 1 つの部分は、サイドバー付きのブロックです。

<div id="tpl-sidebar">
  <?php foreach($cfg_template['sidebars'] as $sidebar):?>
    <?php $this->load->view('modules/'. $sidebar);?>
  <?php endforeach ;?>
</div>

application/views/home.phpそして最後に、 を 内の特定のdivブロックにロードしますapplications/views/template/template.php。これは次の/views/home.phpとおりです。

<?php

// No direct acces to this file
if (!defined('BASEPATH')) exit('No direct script access allowed');

// Page configuration
$this->config->set_item('page_name','Homepage');
$this->config->set_item('css_page','home');
$this->config->set_item('alias','home');

?>

    <p>
        WELCOME BLABLABLA
    </p>
</h3>

デフォルト値を定義/上書きしてconfig/template.php、各ビューに特定の値を使用できるセクションがあります。だから私の質問は、$config[sidebar]いくつかの新しいアイテムを挿入して、このビューファイル内の配列をrecent.php拡張するにはどうすればよいrss.phpですか?

大きなコードで申し訳ありません。

前もって感謝します。

4

3 に答える 3

1

コントローラーに構成変数を設定しないのはなぜですか? ビューはロジック用ではありません。

于 2012-08-12T15:40:48.840 に答える
1

You shouldn't do that in the views, setting that data should be done from the controllers. The views should only handle view logic, not setting the logic itself... Then you pass the vars from the controller, when it's all set and ready to go, into the view.

于 2012-08-12T15:47:56.747 に答える
0

はい、分かりました:

これは私が中に挿入する必要があるものですviews/home.php

$this->config->set_item('sidebars',array(
  'recent',
  'rss'
));

とにかくありがとう。

于 2012-08-12T15:42:37.570 に答える