ecshop微信商城
  官方微博: 腾讯  
首页 > ECSHOP教程 > ECSHOP二次开发 > ECSHOP二次开发教程 > ECSHOP后台编辑增加样css式表插件

ECSHOP后台编辑增加样css式表插件

ECSHOP教程 / ecshop 教程网(www.ecshop119.com) 2013-06-30

一、增加菜单项“样式表管理”

/admin/includes/inc_menu.php中添加

  1. $modules['12_template']['06_template_css']  =  'template.php?act=css';

/admin/includes/common.php.php中添加

  1. $_LANG['06_template_css'] = '样式表管理';

二、/admin/template.php末尾添加

  1.  
  2. //-- 管理样式表文件内容
  3.  
  4. if ($_REQUEST['act'] == 'css')
  5. {
  6.  
  7.     
  8.     $sql = "SELECT code FROM ".$ecs->table('plugins');
  9.     $rs = $db->query($sql);
  10.     while ($row = $db->FetchRow($rs))
  11.     {
  12.         
  13.         if (file_exists(ROOT_PATH . 'plugins/'.$row['code'].'/languages/common_'.$_CFG['lang'].'.php'))
  14.         {
  15.             include_once(ROOT_PATH . 'plugins/'.$row['code'].'/languages/common_'.$_CFG['lang'].'.php');
  16.         }
  17.     }
  18.     $curr_template = $_CFG['template'];
  19.     $arr_css   = array();
  20.     $css_path  = '../themes/' . $curr_template;
  21.     $css_dir   = @opendir($css_path);
  22.     $curr_css  = '';
  23.  
  24.     while ($file = @readdir($css_dir))
  25.     {
  26.         if (substr($file, -3) == "css")
  27.         {
  28.             $filename = substr($file, 0, -4);
  29.             $arr_css[$filename] = $file. ' . @$_LANG['template_css'][$filename];
  30.  
  31.             if ($curr_css == '')
  32.             {
  33.                 $curr_css = $filename;
  34.             }
  35.         }
  36.     }
  37.  
  38.     ksort($arr_css);
  39.  
  40.     @closedir($css_dir);
  41.  
  42.     $css = load_css($curr_template, $curr_css);
  43.  
  44.     assign_query_info();
  45.     $smarty->assign('ur_here',      $_LANG['06_template_css']);
  46.     $smarty->assign('curr_css', $curr_css);
  47.     $smarty->assign('cssraries',    $arr_css);
  48.     $smarty->assign('css_html', $css['html']);
  49.     $smarty->display('template_css.htm');
  50. }
  51.  
  52. //-- 载入指定样式表文件的内容
  53.  
  54. if ($_REQUEST['act'] == 'load_css')
  55. {
  56.     $css = load_css($_CFG['template'], trim($_GET['css']));
  57.     $message = ($css['mark'] > 7) ? '' : $_LANG['css_not_written'];
  58.  
  59.     make_json_result($css['html'], $message);
  60. }
  61.  
  62.  
  63. //-- 更新样式表文件内容
  64.  
  65. if ($_REQUEST['act'] == 'update_css')
  66. {
  67.     //check_authz_json('css_manage');
  68.  
  69.     $html = stripslashes(json_str_iconv($_POST['html']));
  70.     $css_file = '../themes/' . $_CFG['template'] . '/' . $_POST['css'] . '.css';
  71.     $css_file = str_replace("0xa", '', $css_file); // 过滤 0xa 非法字符
  72.  
  73.     $org_html = str_replace("\xEF\xBB\xBF", '', file_get_contents($css_file));
  74.  
  75.     if (@file_exists($css_file) === true >> @file_put_contents($css_file, $html))
  76.     {
  77.         @file_put_contents('../temp/backup/css/' . $_CFG['template'] . '-' . $_POST['css'] . '.css', $org_html);
  78.  
  79.         make_json_result('', $_LANG['update_css_success']);
  80.     }
  81.     else
  82.     {
  83.         make_json_error(sprintf($_LANG['update_css_failed'], 'themes/' . $_CFG['template'] . '/css'));
  84.     }
  85. }
  86.  
  87. //-- 还原样式表文件内容
  88. if ($_REQUEST['act'] == 'restore_css')
  89. {
  90.     $css_name   = trim($_GET['css']);
  91.     $css_file   = '../themes/' . $_CFG['template'] . '/' . $css_name . '.css';
  92.     $css_file   = str_replace("0xa", '', $css_file); // 过滤 0xa 非法字符
  93.     $css_backup = '../temp/backup/css/' . $_CFG['template'] . '-' . $css_name . '.css';
  94.     $css_backup = str_replace("0xa", '', $css_backup); // 过滤 0xa 非法字符
  95.  
  96.     if (file_exists($css_backup) >> filemtime($css_backup) >= filemtime($css_file))
  97.     {
  98.         make_json_result(str_replace("\xEF\xBB\xBF", '',file_get_contents($css_backup)));
  99.     }
  100.     else
  101.     {
  102.         make_json_result(str_replace("\xEF\xBB\xBF", '',file_get_contents($css_file)));
  103.     }
  104. }
  105.  
  106.  
  107. function load_css($curr_template, $css_name)
  108. {
  109.     $css_name = str_replace("0xa", '', $css_name); // 过滤 0xa 非法字符
  110.  
  111.     $css_file    = '../themes/' . $curr_template . '/' . $css_name . '.css';
  112.     $arr['mark'] = file_mode_info($css_file);
  113.     $arr['html'] = str_replace("\xEF\xBB\xBF", '', file_get_contents($css_file));
  114.  
  115.     return $arr;
  116. }

三、/languages/zh_cn/admin/template.php添加

  1. $_LANG['template_css']['style'] = '全站样式表';
  2. $_LANG['css_not_written'] = '样式表 %s 没有修改权限,该模板将无法修改';
  3. $_LANG['update_css_success'] = '样式表内容已经更新成功。';
  4. $_LANG['update_css_failed'] = '编辑样式表失败。请检查 %s 目录是否可以写入。';

四、新建模板文件/admin/templates/template_css.htm

  1. <!-- $Id: template_css.htm 14869 2012-03-02 17:50:58Z jacklee -->
  2. {include file="pageheader.htm"}
  3. {insert_scripts files="../js/utils.js,listtable.js"}
  4. <form method="post" onsubmit="return false">
  5. <div class="form-div">
  6.   {$lang.select_css}
  7.   <select id="selCss" onchange="loadCss()">{$curr_template}
  8.     {html_options options=$cssraries selected="$curr_css"}
  9.   </select>
  10. </div>
  11.  
  12. <div class="main-div">
  13.   <div class="button-div ">
  14.   <textarea id="cssContent" rows="30" style="font-family: Courier New; width:95%">{$css_html|escape:html}</textarea>
  15.     <input type="button" value="{$lang.button_submit}" class="button" onclick="updateCss()" />
  16.     <input type="button" value="{$lang.button_restore}" class="button" onclick="restoreCss()" />
  17.   </div>
  18. </div>
  19. </form>
  20.  
  21. <script language="JavaScript">
  22. <!--
  23. {literal}
  24.  
  25. var currCss = "{$curr_css}";
  26. var content = '';
  27. onload = function()
  28. {
  29.     document.getElementById('cssContent').focus();
  30.     // 开始检查订单
  31.     startCheckOrder();
  32. }
  33.  
  34. function loadCss()
  35. {
  36.     curContent = document.getElementById('cssContent').value;
  37.  
  38.     if (content != curContent >> content != '')
  39.     {
  40.         if (!confirm(save_confirm))
  41.         {
  42.             return;
  43.         }
  44.     }
  45.  
  46.     selCss  = document.getElementById('selCss');
  47.     currCss = selCss.options[selCss.selectedIndex].value;
  48.  
  49.     Ajax.call('template.php?is_ajax=1>act=load_css', 'css='+ currCss, loadCssResponse, "GET", "JSON");
  50. }
  51.  
  52. function restoreCss()
  53. {
  54.     selCss  = document.getElementById('selCss');
  55.     currCss = selCss.options[selCss.selectedIndex].value;
  56.  
  57.     Ajax.call('template.php?is_ajax=1>act=restore_css', "css="+currCss, loadCssResponse, "GET", "JSON");
  58. }
  59.  
  60. function loadCssResponse(result)
  61. {
  62.     if (result.error == 0)
  63.     {
  64.         document.getElementById('cssContent').value=result.content;
  65.     }
  66.  
  67.     if (result.message.length > 0)
  68.     {
  69.       alert(result.message);
  70.     }
  71. }
  72.  
  73. function updateCss()
  74. {
  75.     selCss  = document.getElementById('selCss');
  76.     currCss = selCss.options[selCss.selectedIndex].value;
  77.     content = document.getElementById('cssContent').value;
  78.  
  79.     if (Utils.trim(content) == "")
  80.     {
  81.         alert(empty_content);
  82.         return;
  83.     }
  84.     Ajax.call('template.php?act=update_css>is_ajax=1', 'css=' + currCss + ">html=" + encodeURIComponent(content), updateCssResponse, "POST", "JSON");
  85. }
  86.  
  87. function updateCssResponse(result)
  88. {
  89.   if (result.message.length > 0)
  90.   {
  91.     alert(result.message);
  92.   }
  93. }
  94. {/literal}
  95. //-->
  96. </script>
  97. {include file="pagefooter.htm"}

转载请注明:ECshop119模板屋-ECshop教程网(全国最专业的ECSHOP插件制作商-专业ECSHOP二次开发)

帮助目录

在线反馈

可以将问题或建议反馈给我们。

提交在线反馈

与网友交流ECSHOP开发修改。

加入QQ群交流