You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
495 lines
18 KiB
495 lines
18 KiB
<?php
|
|
|
|
/**
|
|
* ECSHOP 管理中心入驻商家店铺模板管理程序
|
|
* ============================================================================
|
|
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
|
|
* 网站地址: http://www.ecmoban.com;
|
|
* ----------------------------------------------------------------------------
|
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
|
|
* 使用;不允许对程序代码以任何形式任何目的的再发布。
|
|
* ============================================================================
|
|
* $Author: wang $
|
|
*/
|
|
|
|
define('IN_ECS', true);
|
|
|
|
require(dirname(__FILE__) . '/includes/init.php');
|
|
require_once('includes/lib_template.php');
|
|
|
|
//获得商家店铺模板信息
|
|
$adminru = get_admin_ru_id();
|
|
$sql="select id,seller_theme,store_style from ".$ecs->table('seller_shopinfo')." where ru_id = '".$adminru['ru_id']."'";
|
|
$shop_info=$db->getRow($sql);
|
|
|
|
$sql="select count(*) from ".$ecs->table('seller_shopinfo')." where ru_id = '".$adminru['ru_id']."'";
|
|
$shop_id = $db->getOne($sql);
|
|
if($shop_id < 1){
|
|
$lnk[] = array('text' => '设置店铺信息','href'=>'index.php?act=merchants_first');
|
|
sys_msg('请先设置店铺基本信息', 0, $lnk);
|
|
exit;
|
|
}
|
|
|
|
/*------------------------------------------------------ */
|
|
//-- 店铺橱窗列表
|
|
/*------------------------------------------------------ */
|
|
if ($_REQUEST['act'] == 'list')
|
|
{
|
|
admin_priv('seller_store_other');//by kong
|
|
/* 获得当前的模版的信息 */
|
|
$curr_template = $shop_info['seller_theme'];
|
|
$curr_style = $shop_info['store_style'];
|
|
|
|
/* 获得可用的模版 */
|
|
$available_templates = array();
|
|
$template_dir = @opendir(ROOT_PATH . 'seller_themes/');
|
|
while ($file = readdir($template_dir))
|
|
{
|
|
if ($file != '.' && $file != '..' && is_dir(ROOT_PATH. 'seller_themes/' . $file) && $file != '.svn' && $file != 'index.htm')
|
|
{
|
|
$available_templates[] = get_seller_template_info($file);
|
|
}
|
|
}
|
|
|
|
$available_templates = get_array_sort($available_templates, 'sort');
|
|
|
|
@closedir($template_dir);
|
|
|
|
/* 获得可用的模版的可选风格数组 */
|
|
$templates_style = array();
|
|
if (count($available_templates) > 0)
|
|
{
|
|
foreach ($available_templates as $value)
|
|
{
|
|
$templates_style[$value['code']] = read_tpl_style($value['code'], 2);
|
|
}
|
|
}
|
|
|
|
$db->query($sql);
|
|
|
|
assign_query_info();
|
|
|
|
$smarty->assign('ur_here',$_LANG['template_manage']);
|
|
$smarty->assign('curr_tpl_style', $curr_style);
|
|
$smarty->assign('template_style', $templates_style);
|
|
$smarty->assign('curr_template', get_seller_template_info($curr_template, $curr_style));
|
|
$smarty->assign('available_templates', $available_templates);
|
|
$smarty->display('merchants_template_list.htm');
|
|
}
|
|
/*------------------------------------------------------ */
|
|
//-- 安装模版
|
|
/*------------------------------------------------------ */
|
|
|
|
if ($_REQUEST['act'] == 'install')
|
|
{
|
|
$tpl_name = trim($_GET['tpl_name']);
|
|
$tpl_fg=0;
|
|
$tpl_fg = trim($_GET['tpl_fg']);
|
|
|
|
$custom_dirname = $ecs->url();
|
|
|
|
//正则去掉js代码
|
|
$preg = "/<script[\s\S]*?<\/script>/i";
|
|
|
|
$template_info = get_seller_template_info($tpl_name);
|
|
$sql = "UPDATE " .$GLOBALS['ecs']->table('seller_shopinfo'). " SET seller_theme = '$tpl_name', store_style = '$tpl_fg', win_goods_type = '" .$template_info['win_goods_type']. "'" .
|
|
" WHERE ru_id = '".$adminru['ru_id']."'";
|
|
$step_install = $db->query($sql, 'SILENT');
|
|
|
|
//安装模板装修代码
|
|
//店铺头部装修
|
|
//检测是否设置过此模板的头部
|
|
$sql="select count(*) as count, content from ".$GLOBALS['ecs']->table('seller_shopheader')." where seller_theme='$tpl_name' and ru_id = '".$adminru['ru_id']."'";
|
|
$header_info=$GLOBALS['db']->getRow($sql);
|
|
|
|
if($header_info['count']==0)
|
|
{
|
|
$header_path = ROOT_PATH.'seller_themes/'.$tpl_name.'/header.txt';
|
|
|
|
if(file_exists($header_path))
|
|
{
|
|
$content=file_get_contents($header_path);
|
|
|
|
$header_content=!empty($content)?preg_replace($preg,"",stripslashes($content)):'';
|
|
$header_content=addslashes(iconv("GB2312", "UTF-8", $header_content));
|
|
|
|
if(strlen($header_content)>=3)//默认有3个字符
|
|
{
|
|
$patterns = array();
|
|
$patterns[0] = '/themes/' ;;
|
|
$replacements = array();
|
|
$replacements[0] = $custom_dirname . 'themes' ;
|
|
|
|
$header_content = preg_replace($patterns, $replacements, $header_content);
|
|
$sql="insert into".$GLOBALS['ecs']->table('seller_shopheader')."(content,seller_theme,ru_id) values ('$header_content','$tpl_name',".$adminru['ru_id'].")";
|
|
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
}elseif($header_info['content'] == ''){
|
|
|
|
$header_path = ROOT_PATH.'seller_themes/'.$tpl_name.'/header.txt';
|
|
if(file_exists($header_path))
|
|
{
|
|
$content=file_get_contents($header_path);
|
|
|
|
$header_content=!empty($content)?preg_replace($preg,"",stripslashes($content)):'';
|
|
$header_content=addslashes(iconv("GB2312", "UTF-8", $header_content));
|
|
|
|
if(strlen($header_content)>=3)//默认有3个字符
|
|
{
|
|
$patterns = array();
|
|
$patterns[0] = '/themes/' ;;
|
|
$replacements = array();
|
|
$replacements[0] = $custom_dirname . 'themes' ;
|
|
|
|
$header_content = preg_replace($patterns, $replacements, $header_content);
|
|
$sql = "UPDATE " .$GLOBALS['ecs']->table('seller_shopheader'). " SET content = '$header_content' WHERE seller_theme = '$tpl_name' AND ru_id = '" .$adminru['ru_id']. "'";
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
}
|
|
|
|
//模板幻灯片安装
|
|
//检测是否设置过此模板的幻灯片
|
|
$sql = "select count(id) from " . $GLOBALS['ecs']->table('seller_shopslide') . " where seller_theme='$tpl_name' and ru_id = '" . $adminru['ru_id'] . "'";
|
|
$count = $GLOBALS['db']->getOne($sql);
|
|
|
|
if ($count == 0) {
|
|
$silde_path = ROOT_PATH . 'seller_themes/' . $tpl_name . '/slides.txt';
|
|
|
|
if (file_exists($silde_path)) {
|
|
$str = mc_read_txt($silde_path);
|
|
$str = get_preg_replace($str);
|
|
$slide_arr = explode(',', $str);
|
|
if ($slide_arr) {
|
|
$sql = "insert into " . $GLOBALS['ecs']->table('seller_shopslide') . " (ru_id,img_url,img_link,img_desc,is_show,seller_theme,install_img) values ";
|
|
foreach ($slide_arr as $key => $val) {
|
|
$val = addslashes($val);
|
|
if ($key + 1 < count($slide_arr)) {
|
|
$sql.="($adminru[ru_id],'$val','','',1,'$tpl_name', 1),";
|
|
} else {
|
|
$sql.="($adminru[ru_id],'$val','','',1,'$tpl_name', 1)";
|
|
}
|
|
}
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
}
|
|
|
|
//橱窗自定义装饰代码
|
|
//检测是否设置过此模板的自定义区域
|
|
$sql = "select count(*) from " . $GLOBALS['ecs']->table('seller_shopwindow') . " where seller_theme='$tpl_name' and win_type=0 and ru_id = '" . $adminru['ru_id'] . "'";
|
|
$count = $GLOBALS['db']->getOne($sql);
|
|
|
|
if ($count == 0) {
|
|
$custom_path = ROOT_PATH . 'seller_themes/' . $tpl_name . '/custom/';
|
|
|
|
$dir = @opendir($custom_path);
|
|
while ($file = @readdir($dir)) {
|
|
$file = iconv("GB2312", "UTF-8", $file);
|
|
if ($file != '.' && $file != '..' && !is_dir(ROOT_PATH . 'seller_themes/' . $file)) {
|
|
$content_path = ROOT_PATH . 'seller_themes/' . $tpl_name . '/custom/' . $file;
|
|
|
|
$ext = pathinfo($content_path);
|
|
$cus_name = substr($file, 0, strrpos($file, '.')); //文件名作为自定义区域的名称录入数据库
|
|
$win_order = str_replace('custom', '', $cus_name);
|
|
|
|
if ($ext['extension'] == 'txt') {
|
|
$content_path = iconv("UTF-8", "GB2312", $content_path);
|
|
$content = file_get_contents($content_path, true);
|
|
|
|
$custom_content = !empty($content) ? preg_replace($preg, "", stripslashes($content)) : '';
|
|
$custom_content = addslashes(iconv("GB2312", "UTF-8", $custom_content));
|
|
|
|
if (strlen($custom_content) >= 3) {//默认有3个字符
|
|
$patterns = array();
|
|
$patterns[0] = '/themes/';
|
|
;
|
|
$replacements = array();
|
|
$replacements[0] = $custom_dirname . 'themes';
|
|
|
|
$custom_content = preg_replace($patterns, $replacements, $custom_content);
|
|
|
|
$sql = "insert into" . $GLOBALS['ecs']->table('seller_shopwindow') . "(win_type,win_name,win_order,ru_id,is_show,win_custom,seller_theme) values ('0','$cus_name','$win_order'," . $adminru['ru_id'] . ",1,'$custom_content','$tpl_name')";
|
|
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@closedir($custom_path);
|
|
}
|
|
|
|
if ($step_install)
|
|
{
|
|
clear_all_files(); //清除模板编译文件
|
|
|
|
$error_msg = '';
|
|
make_json_result(read_style_and_tpl($tpl_name, $tpl_fg), ' 模板安装成功');
|
|
}
|
|
else
|
|
{
|
|
make_json_error($db->error());
|
|
}
|
|
}
|
|
|
|
/*------------------------------------------------------ */
|
|
//-- 设置使用店铺默认模板
|
|
/*------------------------------------------------------ */
|
|
elseif($_REQUEST['act'] == 'user_default'){
|
|
$adminru = get_admin_ru_id();
|
|
$sql = "UPDATE " .$GLOBALS['ecs']->table('seller_shopinfo'). " SET seller_theme = '' WHERE ru_id = '" .$adminru['ru_id']. "'";
|
|
$GLOBALS['db']->query($sql);
|
|
|
|
make_json_result('', ' 默认模板设置成功');
|
|
}
|
|
|
|
/**
|
|
* 读取模板风格列表
|
|
*
|
|
* @access public
|
|
* @param string $tpl_name 模版名称
|
|
* @param int $flag 1,AJAX数据;2,Array
|
|
* @return
|
|
*/
|
|
function read_tpl_style($tpl_name, $flag=1)
|
|
{
|
|
if (empty($tpl_name) && $flag == 1)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
/* 获得可用的模版 */
|
|
$temp = '';
|
|
$start = 0;
|
|
$available_templates = array();
|
|
$dir = ROOT_PATH . 'seller_themes/' . $tpl_name . '/';
|
|
$tpl_style_dir = @opendir($dir);
|
|
while ($file = readdir($tpl_style_dir))
|
|
{
|
|
if ($file != '.' && $file != '..' && is_file($dir . $file) && $file != '.svn' && $file != 'index.htm')
|
|
{
|
|
if (preg_match("/^(style|style_)(.*)*/i", $file)) // 取模板风格缩略图
|
|
{
|
|
$start = strpos($file, '.');
|
|
$temp = substr($file, 0, $start);
|
|
$temp = explode('_', $temp);
|
|
if (count($temp) == 2)
|
|
{
|
|
$available_templates[] = $temp[1];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@closedir($tpl_style_dir);
|
|
|
|
if ($flag == 1)
|
|
{
|
|
$ec = '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="colortable" onMouseOver="javascript:onSOver(0, this);" onMouseOut="onSOut(this);" onclick="javascript:setupTemplateFG(0);" bgcolor="#FFFFFF"><tr><td> </td></tr></table>';
|
|
if (count($available_templates) > 0)
|
|
{
|
|
foreach ($available_templates as $value)
|
|
{
|
|
$tpl_info = get_template_info($tpl_name, $value);
|
|
|
|
$ec .= '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="colortable" onMouseOver="javascript:onSOver(\'' . $value . '\', this);" onMouseOut="onSOut(this);" onclick="javascript:setupTemplateFG(\'' . $value . '\');" bgcolor="' . $tpl_info['type'] . '"><tr><td> </td></tr></table>';
|
|
|
|
unset($tpl_info);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ec = '0';
|
|
}
|
|
|
|
return $ec;
|
|
}
|
|
elseif ($flag == 2)
|
|
{
|
|
$templates_temp = array('');
|
|
if (count($available_templates) > 0)
|
|
{
|
|
foreach ($available_templates as $value)
|
|
{
|
|
$templates_temp[] = $value;
|
|
}
|
|
}
|
|
|
|
return $templates_temp;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 读取当前风格信息与当前模板风格列表
|
|
*
|
|
* @access public
|
|
* @param string $tpl_name 模版名称
|
|
* @param string $tpl_style 模版风格名
|
|
* @return
|
|
*/
|
|
function read_style_and_tpl($tpl_name, $tpl_style)
|
|
{
|
|
$style_info = array();
|
|
$style_info = get_seller_template_info($tpl_name, $tpl_style);
|
|
|
|
$tpl_style_info = array();
|
|
$tpl_style_info = read_tpl_style($tpl_name, 2);
|
|
$tpl_style_list = '';
|
|
if (count($tpl_style_info) > 1)
|
|
{
|
|
foreach ($tpl_style_info as $value)
|
|
{
|
|
$tpl_style_list .= '<span style="cursor:pointer;" onMouseOver="javascript:onSOver(\'screenshot\', \'' . $value . '\', this);" onMouseOut="onSOut(\'screenshot\', this, \'' . $style_info['screenshot'] . '\');" onclick="javascript:setupTemplateFG(\'' . $tpl_name . '\', \'' . $value . '\', \'\');" id="templateType_' . $value . '"><img src="../themes/' . $tpl_name . '/images/type' . $value . '_';
|
|
|
|
if ($value == $tpl_style)
|
|
{
|
|
$tpl_style_list .= '1';
|
|
}
|
|
else
|
|
{
|
|
$tpl_style_list .= '0';
|
|
}
|
|
$tpl_style_list .= '.gif" border="0"></span> ';
|
|
}
|
|
}
|
|
$style_info['tpl_style'] = $tpl_style_list;
|
|
|
|
return $style_info;
|
|
}
|
|
|
|
/**
|
|
* 获得商家店铺模版的信息 wang店铺模板选择
|
|
*
|
|
* @access private
|
|
* @param string $template_name 模版名
|
|
* @param string $template_style 模版风格名
|
|
* @return array
|
|
*/
|
|
function get_seller_template_info($template_name, $template_style='')
|
|
{
|
|
if (empty($template_style) || $template_style == '')
|
|
{
|
|
$template_style = '';
|
|
}
|
|
|
|
$info = array();
|
|
$ext = array('png', 'gif', 'jpg', 'jpeg');
|
|
|
|
$info['code'] = $template_name;
|
|
$info['screenshot'] = '';
|
|
$info['stylename'] = $template_style;
|
|
|
|
if ($template_style == '')
|
|
{
|
|
foreach ($ext AS $val)
|
|
{
|
|
if (file_exists('../seller_themes/' . $template_name . "/screenshot.$val"))
|
|
{
|
|
$info['screenshot'] = '../seller_themes/' . $template_name . "/screenshot.$val";
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach ($ext AS $val)
|
|
{
|
|
if (file_exists('../seller_themes/' . $template_name . "/screenshot_$template_style.$val"))
|
|
{
|
|
$info['screenshot'] = '../seller_themes/' . $template_name . "/screenshot_$template_style.$val";
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
$info_path = '../seller_themes/' . $template_name . '/tpl_info.txt';
|
|
if ($template_style != '')
|
|
{
|
|
$info_path = '../seller_themes/' . $template_name . "/tpl_info_$template_style.txt";
|
|
}
|
|
if (file_exists($info_path) && !empty($template_name))
|
|
{
|
|
$custom_content=addslashes(iconv("GB2312", "UTF-8", $info_path));
|
|
$arr = array_slice(file($info_path), 0, 9);
|
|
|
|
//ecmoban模板堂 --zhuo start
|
|
$arr[1]=addslashes(iconv("GB2312", "UTF-8", $arr[1]));
|
|
$arr[2]=addslashes(iconv("GB2312", "UTF-8", $arr[2]));
|
|
$arr[3]=addslashes(iconv("GB2312", "UTF-8", $arr[3]));
|
|
$arr[4]=addslashes(iconv("GB2312", "UTF-8", $arr[4]));
|
|
$arr[5]=addslashes(iconv("GB2312", "UTF-8", $arr[5]));
|
|
$arr[6]=addslashes(iconv("GB2312", "UTF-8", $arr[6]));
|
|
$arr[7]=addslashes(iconv("GB2312", "UTF-8", $arr[7]));
|
|
$arr[8]=addslashes(iconv("GB2312", "UTF-8", $arr[8]));
|
|
//ecmoban模板堂 --zhuo end
|
|
|
|
$template_name = explode(':', $arr[1]);
|
|
$template_uri = explode(':', $arr[2]);
|
|
$template_desc = explode(':', $arr[3]);
|
|
$template_version = explode(':', $arr[4]);
|
|
$template_author = explode(':', $arr[5]);
|
|
$author_uri = explode(':', $arr[6]);
|
|
$tpl_dwt_code = explode(':', $arr[7]);
|
|
$win_goods_type = explode(':', $arr[8]);
|
|
|
|
$info['name'] = isset($template_name[1]) ? trim($template_name[1]) : '';
|
|
$info['uri'] = isset($template_uri[1]) ? trim($template_uri[1]) : '';
|
|
$info['desc'] = isset($template_desc[1]) ? trim($template_desc[1]) : '';
|
|
$info['version'] = isset($template_version[1]) ? trim($template_version[1]) : '';
|
|
$info['author'] = isset($template_author[1]) ? trim($template_author[1]) : '';
|
|
$info['author_uri'] = isset($author_uri[1]) ? trim($author_uri[1]) : '';
|
|
$info['dwt_code'] = isset($tpl_dwt_code[1]) ? trim($tpl_dwt_code[1]) : '';
|
|
$info['win_goods_type'] = isset($win_goods_type[1]) ? trim($win_goods_type[1]) : '';
|
|
$info['sort'] = substr($info['code'], -1, 1);
|
|
}
|
|
else
|
|
{
|
|
$info['name'] = '';
|
|
$info['uri'] = '';
|
|
$info['desc'] = '';
|
|
$info['version'] = '';
|
|
$info['author'] = '';
|
|
$info['author_uri'] = '';
|
|
$info['dwt_code'] = '';
|
|
$info['sort'] = '';
|
|
}
|
|
|
|
return $info;
|
|
}
|
|
//回车替换
|
|
function get_preg_replace($str, $type = '|'){
|
|
$str = preg_replace("/\r\n/",",",$str); //替换空格回车换行符 为 英文逗号
|
|
$str = get_str_trim($str);
|
|
$str = get_str_trim($str, $type);
|
|
|
|
return $str;
|
|
}
|
|
|
|
function get_str_trim($str, $type = ','){
|
|
$str = explode($type,$str);
|
|
$str2 = '';
|
|
|
|
for($i=0; $i<count($str); $i++){
|
|
$str2 .= trim($str[$i]) . $type;
|
|
}
|
|
|
|
return substr($str2, 0, -1);
|
|
}
|
|
|
|
//读取文件内容
|
|
function mc_read_txt($file){
|
|
$pathfile=$file;
|
|
if (!file_exists($pathfile)) {
|
|
return false;
|
|
}
|
|
$fs = fopen($pathfile,"r+");
|
|
$content = fread($fs,filesize($pathfile));//读文件
|
|
fclose($fs);
|
|
|
|
if(!$content) return false;
|
|
return $content;
|
|
}
|
|
?>
|
|
|