PHP内置就有_get和_set的方式,虽然作者也没用过。但其实这两个魔术方法,_get就是获取数据,_set就是写入数据,这一点大家都应该有听过。
再来是OPENCART的获取页面标题的TITLE的方法。
由于OPENCART是使用MVC+L的设计模式,在C控制器层中,部分会有返回视图,比如头部(headert.tpl)和尾部(footer.tpl),这样设计的好处就是,头尾基本不会变,变的只是内容体,而头部有个需要变更的就是TITLE了。(至于描述及关键字一般不考虑,如果是产品一般直接UPDATE成产品的参数)
直接来上代码解释
假设我做了一个后台的支付管理插件,那么后台的支付管理插件的TITLE的获取是:
$this->load->language(‘paymunt/paypal’); //获取贝宝语言包
$this->document->setTitle($this->language->get(‘heading_title’));
第二句就是重中之重了。
如果你有用心观察OPENCART的每一个language都会发现第一个基本就是$_[‘heading_title’]。
没错,这就是给页面的标题用set的模式写进setTitle()方法处理
而且document是一个对象类型。
系统又是如何知道写入的标题是什么呢?
假设在一个控制器中(如PAYPAL)用了以上的方法。
先给TITLE赋值。
这就要特别注意作者前面说的,OPENCART使用的是MVC+L,头尾是以return 返回视图的方式。
所以说,在paypal控制器中写入了TITLE的值之后。
在使用:$data[‘header’]=$this->load->controller(‘common/header’);
以下是完整的:paypal控制器标题参数
$this->load->language(‘paymunt/paypal’); //获取贝宝语言包
$this->document->setTitle($this->language->get(‘heading_title’)); //写入参数到document对象中
$data[‘header’]=$this->load->controller(‘shangjia/header’); //头部直接调用
我们来看看header.php控制器中:
$data[‘title’] = $this->document->getTitle(); //直接调用每一个模型/插件的heading_title;
关于作者