我需要在codeigniter网站的侧边栏中实现广告。
广告是动态的,并从数据库中检索。我当前的设置是我有主模板文件,我将主视图文件的名称传递给变量,如下所示:
$data['main_content'] = 'some_view_file';
$this->load->view('template_file', $data);
我想到了以下步骤:
get_ads()
中创建一个功能MY_Controller
并检索所有广告并将其返回
$data['ads'] = $this->get_ads();
$data['main_content'] = 'some_view_file';
$this->load->view('template_file', $data);
但上述方法的问题是,我需要在加载视图之前在我的所有方法中设置$data['ads'] = $this->get_ads();
。
处理上述问题的更好方法是什么?
答案 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);