通过清心醉

分析Opencart前端获取幻灯片的流程

小O这点做的和小M有点像

通过top/left/right布局,来调用对应的模型数据

$modules = $this->model_design_layout->getLayoutModules($layout_id, ‘content_top’);

#->根据布局ID和位置来提取布局内的模块

#->模型中读取layout_module根据排序提取布局ID和位置对应的模型数据

#->数据中会有一个$module[‘code’]的参数,使用的是类型.ID做连接

#->$part = explode(‘.’, $module[‘code’]);

#->然后使用foreach循环提取code值

$setting_info = $this->model_extension_module->getModule($part[1]);  #->根据PART来获取,PART稍后分析
#->操作数据模型-> module WHERE module_id='”.(int)$module_id.”‘”;

public function getModule($module_id) {
$query = $this->db->query(“SELECT * FROM ” . DB_PREFIX . “module WHERE module_id = ‘” . (int)$module_id . “‘”);
if ($query->row) {
return json_decode($query->row[‘setting’], true);
} else {
return array();
}
}

#->模型中,如果有存在对应的模型ID,解码JSON的setting数据到数组并返回

#->来看看JSON原型:{“name”:”Home Page”,”banner_id”:”7″,”width”:”1140″,”height”:”380″,”status”:”1″}

#->可以了,提取了有banner_id参数了

#->接下来$part[0]其实应该是类型 html/slideshow等

#->比如slideshow就是幻灯了

#->自然就要包含/module/slideshow控制器了

#->$data[‘modules’][] = $this->load->controller(‘module/’ . $part[0], $setting_info);

#-> 这样,在ControllerModuleSlideshow控制器里,index()方法中的参数也就存在了

最后作者说下part的参数值:通过打印出我们可以看到:

array(2) { [0]=> string(9) “slideshow” [1]=> string(2) “27” }
array(2) { [0]=> string(4) “html” [1]=> string(2) “32” }

第一就是类型了,第二是module的参数ID;这样就可以很精准的获取了!

 

关于作者

清心醉 administrator

发表评论

请输入验证码: