Codeigniter网站广泛的意见

时间:2012-06-25 10:00:33

标签: php codeigniter

我需要在codeigniter网站的侧边栏中实现广告。

广告是动态的,并从数据库中检索。我当前的设置是我有主模板文件,我将主视图文件的名称传递给变量,如下所示:

$data['main_content'] = 'some_view_file';
$this->load->view('template_file', $data);

我想到了以下步骤:

  1. 在我的get_ads()中创建一个功能MY_Controller并检索所有广告并将其返回
  2. 在我的每个控制器的方法中,我访问上面创建的函数并将其传递给模板
  3. $data['ads'] = $this->get_ads();
    $data['main_content'] = 'some_view_file';
    $this->load->view('template_file', $data);
    

    但上述方法的问题是,我需要在加载视图之前在我的所有方法中设置$data['ads'] = $this->get_ads();

    处理上述问题的更好方法是什么?

2 个答案:

答案 0 :(得分:3)

创建一个名为Ads.php的CodeIgniter库

class Ads
{

    private $CI;

    public function __construct()
    {
        $this->CI = & get_instance();
    }

    public function my_ads()
    {
        // get the ads from database //
        return $this->CI->db->select('field1, field2, field3')->from('ads_table')->get()->result();
    }

}

自动加载库(因为您需要在所有视图中使用广告)。转到 ./ application / config / autoload.php

/*
  | -------------------------------------------------------------------
  |  Auto-load Libraries
  | -------------------------------------------------------------------
  | These are the classes located in the system/libraries folder
  | or in your application/libraries folder.
  |
  | Prototype:
  |
  | $autoload['libraries'] = array('database', 'session', 'xmlrpc');
 */

$autoload['libraries'] = array('ads');

现在,您可以使用

检索整个CI系统中的数据
$ads = $this->ads->my_ads();

希望这会对你有所帮助。谢谢!

答案 1 :(得分:1)

MY_Controller中添加变量:

class MY_Controller extends CI_Controller {

      public $data;

      public function __construct() {
          $this->data['ads'] = $this->get_ads();      
          //etc.
      }
    //etc.
}

在每个控制器中更新$data变量并按如下方式调用视图:

$this->data['main_content'] = 'some_view_file';
$this->load->view('template_file', $this->data);