店铺首页挂件创建和使用说明[TianYan出品]
2016-07-07 16:47 来源:www.chinab4c.com 作者:ecshop专家
首先感谢 biby 编写的"ecmall商铺首页挂件实现及类淘宝分类首页自定义",提供了很多非常有价值的参考意见。 具体功能如下: 1.实现店铺首页挂件自定义 2.实现商城挂件与店铺挂件分离存储 3.实现挂件存储文件、权限、路经与商城挂件分离 修改过程: 1.下载挂件文件,覆盖到系统根目录[不限版本问题直接覆盖] 2.修改 app\store.app.php function index() { ..../前接 $this->assign('store', $store); /* TianYan 设置店铺id */ $this->assign('store_id', $id); /* 取得友情链接 */ ....\后接 } 3.修改 app\frontend.base.php覆盖这个函数 /** * 视图回调函数[显示小挂件] * * @author Garbin * @paramarray $options * @return void */ function display_widgets($options,$widgetname='widget.base.php') { $area = isset($options['area']) ? $options['area'] : ''; $page = isset($options['page']) ? $options['page'] : ''; $store_id = isset($options['store_id']) ? $options['store_id'] : ''; //TianYan 增加用于前台店铺挂件显示 if (!$area || !$page) { return; } include_once(ROOT_PATH . '/includes/'.$widgetname); /* TianYan 修改判断挂件类型获取该页面的挂件配置信息 */ $widgets = ($widgetname=='widget.base.php')?get_widget_config($this->_get_template_name(), $page):get_widget_config($this->_get_template_name(), $page,$store_id); /* 如果没有该区域 */ if (!isset($widgets['config'][$area])) { return; } /* 将该区域内的挂件依次显示出来 */ foreach ($widgets['config'][$area] as $widget_id) { $widget_info = $widgets['widgets'][$widget_id]; $wn=$widget_info['name']; $options=$widget_info['options']; $widget =& widget($widget_id, $wn, $options); $widget->display(); } } 4.修改 my_theme.app.php /*---TianYan 增加页面设置----*/ function page_set() //新增加的函数 { $this->assign('pages',$this->_get_editable_pages());//这里有一个从管理员后台复制来的函数,获取可以编辑的页面,像管理员后台是有首页和分类页可以可视化编辑,就是由这个函数设置. $this->_curlocal(LANG::get('member_center'),'index.php?app=member', Lang::get('page_set'));//这里是去语言文件获取汉字并且设置我们的用户中心的“当前位置”。 $this->_curitem('my_store');//设置左侧激活的项目这里是“店铺设置”,同样是获取语言文件里的汉字。 /* 当前所处子菜单 */ $this->_curitem('my_theme'); $this->_curmenu('page_set'); $this->display('my_theme.pageset.html');//调用我们自建的一个模板文件显示。 } /*三级菜单*/ function _get_member_submenu() { $array = array( array( 'name' => 'theme_menu', 'url'=> 'index.php?app=my_theme', ), /*---TianYan 新增加的菜单---*/ array( 'name' => 'page_set', 'url'=> 'index.php?app=my_theme&act=page_set', ), ); return $array; } function _get_editable_pages() //新增加的函数 { return array( 'store_index'=>'store_id_index', ); } 未完待续。。。。 |
回答:
5.修改 eccore\view\template.php 文件 function select($tag) { ..../前接 case 'widgets': $t = $this->get_para(substr($tag, 8), 0); return '<?php $this->display_widgets(' . $this->make_array($t) . '); ?>'; break; case 'store_widgets'://TianYan 显示店铺挂件 $t = $this->get_para(substr($tag, 8), 0); return '<?php $this->display_widgets(' . $this->make_array($t) . ',"store_widget.base.php"); ?>'; break; case 'html_radios': 后接/...... } //重新覆盖以下这个函数 function display_widgets($arr,$widgetname='widget.base.php') { /* 请求控制器 */ $controller =& cc(); $controller->display_widgets($arr,$widgetname); } 6.修改includes/global.lib.php 两个函数,直接覆盖即可 /** * 获取挂件列表 * * @author Garbin * @return array */ function list_widget($wpath='/external/widgets') { $widget_dir = ROOT_PATH . $wpath; static $widgets = null; if ($widgets === null) { $widgets = array(); if (!is_dir($widget_dir)) { return $widgets; } $dir = dir($widget_dir); while (false !== ($entry = $dir->read())) { if (in_array($entry, array('.', '..')) || $entry{0} == '.' || $entry{0} == '$') { continue; } if (!is_dir($widget_dir . '/' . $entry)) { continue; } $info = get_widget_info($entry,$wpath.'/'); $widgets[$entry] = $info; } } return $widgets; } /** * 获取挂件信息 * * @author Garbin * @paramstring $id * @return array */ function get_widget_info($name,$wpath='/external/widgets/') { $widget_info_path = ROOT_PATH . $wpath . $name . '/widget.info.php'; return include($widget_info_path); } 7.\themes\store\default\header.html 增加一个可编辑代码在</head> .../上接 <!--<editmode></editmode>--> </head> |
店铺前台挂件需要注意说明的事情 1.在店铺首页store.index.html模板中,挂件拖放的区域要增加一个store_id <div class="left" area="top_left" widget_type="area"> <!--{store_widgets page=store_index area=top_left store_id=$store_id}--> </div> 2.店铺挂件存储目录为 external\store_widgets 区别与商城挂件目录 rar文件中包含一个图片挂件。 3.编写main.widget.php 挂件上传文件目录位置的时候注意存储路经应当设置为店铺自己的目录 return $uploader->save('data/files/store_'.$_SESSION['user_info']['user_id'].'/template', $uploader->random_filename()); |
实际效果展示 1.可以设置店铺首页,商品分类页和店铺导航页的模板布局 2.目前拥有10个独立的店铺挂件 3.用户店铺设置好之后实际的效果图 |
感谢版主的贡献 |
不错,如果能设置成特定会员(比如收费会员)才可以用挂件的话那就更完美了 |
邦德来 支持老大! |
非常好~~~赞一下 |
不错,不错。 清除独立文件这个功能还能用不? |
顶一个!支持下!这样的好东西! |
好东西!顶!!! |
很爽哈,不错。 现在可以店铺首页挂件化了 |
就是价格有点高 |
首页的那个呢? |
附件 app/template.app.php有误 function _save_page_config($template_name, $page, $page_config) { $page_config_file = ROOT_PATH . '/data/files/store_' .$_SESSION['user_info']['user_id'].'/'. $template_name . '.' . $page . '.config.php'; $php_data = "<?php\n\nreturn " . var_export($page_config, true) . ";\n\n?>"; return file_put_contents($page_config_file, $php_data, LOCK_EX); } |
最近更新
常用插件
- ecshop 手机注册验证插件
ecshop 手机注册验证插件 ,需要通过手机获短信,然后注册验证 价格:...
- ecshop根据订单批量发红包
ecshop根据订单批量发红包 ,大家肯定对ecshop红包不陌生,但是对ecshop订...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop使用手机验证码登陆
ecshop使用手机验证码登陆,这个功能很新颖,有些特殊的ecshop站点,他到...
- ecshop中nginx实现url的重写
上几章为了让ecshop很好的在nginx上运行。我们搭配了ecshop的nginx下的工作...
ecshop热门问答
ecshop热门资料
ecshop性能
phpmssql
ecshop头发
汽车外贸模板
ecshopnewred
ecshopfckeditor漏洞
ecshop点击率
ecshoppay
ecshop改错
ecshopmap
ecshop人生
ecshop提交订单错误
ecshop免费版
ecshopMoneyBooker
ecshopECSHOP模板
ecshop加盟
ecshop自助
ecshopsmarty
ecshop底版
ecshopExplorer
ecshop求新
ecshop来历不明
ecshop专卖
ecshop下载安装
ecshop斜线
ecshop环境影响
ecshopaffiche
ecshop备注
ecshop状态码
ecshopcoffee