以修改download中的模板channel_level2.html为例,介绍下模板在后台的加载过程。
1. 首先找到对应的struts-core-admin.xml.
<!--模板管理-->
<package name="core.template" namespace="/admin/core/template" extends="core-default">
<action name="Com_*" method="{1}" class="core.templateAct">
<result name="list">/WEB-INF/core_sys/template/list.html</result>
<result name="add">/WEB-INF/core_sys/template/add.html</result>
<result name="edit">/WEB-INF/core_sys/template/edit.html</result>
<result name="left">/WEB-INF/core_sys/template/left.html</result>
<result name="right">/WEB-INF/core_sys/template/right.html</result>
<result name="main">/WEB-INF/core_sys/template/main.html</result>
<result name="solution">/WEB-INF/core_sys/template/solution.html</result>
<result name="exportTpl">/WEB-INF/core_sys/template/export_tpl.html</result>
<result name="importTpl">/WEB-INF/core_sys/template/import_tpl.html</result>
</action>
</package>
2. 对应的edit.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>edit</title>
<#include "/WEB-INF/core_sys/head.ftl"/>
<script type="text/javascript">
function ajaxSubmit() {
$.postJson('${base}/admin/core/template/ajax/update.do', {
'tplName' : $('#tplName').val(),
<#if tplName?starts_with("tag_")>
'tplContent' : $('#tplContent').val(),
<#else>
'tplContent' : FCKeditorAPI.GetInstance('FCKeditor1').GetHTML(true),
</#if>
'relPath' : $('#relPath').val(),
'uploadRuleId': ${uploadRuleId}
}, function(data) {
if (data.success) {
alert(data.msg);
} else {
alert(data.msg);
}
});
}
</script>
</head>
<body>
<div class="body-box">
<div class="rhead">
<div class="rpos">当前位置: 模板管理 - 修改</div>
<form class="ropt" method="post">
<input type="submit" value="返回列表" onclick="this.form.action='Com_list.do?relPath=${parentPath?j_string}';"/>
</form>
<div class="clear"></div>
</div>
<@p.form labelWidth="15" onsubmit="ajaxSubmit();return false;">
<@p.td label="模板文件名">${tplName}<@p.hidden id="tplName" name="tplName"/></@p.td><@p.tr/>
<@p.td>
<#if tplName?starts_with("tag_")>
<div>按ctrl+s可以直接保存</div>
<@p.textarea id="tplContent" name="tplContent" style="width:100%;" cols="70" rows="20" onkeydown="if((event.keyCode==115||event.keyCode==83)&&event.ctrlKey){ajaxSubmit();return false;}"/>
<#else>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('FCKeditor1');
oFCKeditor.BasePath='${base}/fckeditor/';
oFCKeditor.Config["CustomConfigurationsPath"]="${base}/fckeditor/myconfig.js?"+(new Date()*1);
//oFCKeditor.Config["CustomConfigurationsPath"]="${base}/fckeditor/myconfig.js";
oFCKeditor.ToolbarSet='template';
oFCKeditor.Config["TabSpaces"]=2;
oFCKeditor.Config["LinkUpload"] = false;
oFCKeditor.Config["ImageUpload"] = false;
oFCKeditor.Config["FlashUpload"] = false;
<#if uploadRuleId??>
oFCKeditor.Config["uploadRuleId"]=${uploadRuleId};
</#if>
<#if !parentPath?contains("include") && !tplName?starts_with("inc_")>
oFCKeditor.Config["FullPage"]=true;
</#if>
oFCKeditor.Config["EnterMode"]='p';
oFCKeditor.Config["FormatOutput"]=true;
oFCKeditor.Config["FillEmptyBlocks"]=false;
oFCKeditor.Config["FromSrc"]="\\$\\{root\\},\\$\\{sysResRoot\\},\\$\\{base\\}";
oFCKeditor.Config["ToView"]="${web.userResUrl},${web.sysResUrl},${web.webUrl}";
oFCKeditor.Config["FromView"]="${web.userResUrl},${web.sysResUrl},${web.webUrl}";
oFCKeditor.Config["ToSrc"] ="${r'${root}'},${r'${sysResRoot}'},${r'${base}'}";
oFCKeditor.Height=350;
oFCKeditor.Value="${tplContent?js_string}";
oFCKeditor.Create();
</script>
</#if>
</@p.td><@p.tr/>
<#--
<@p.td><@p.editor id="tplContent" name="tplContent" height="400" fullPage="true"/></@p.td><@p.tr/>
-->
<@p.td>
<input type="hidden" name="uploadRuleId" value="${uploadRuleId}"/>
<@p.hidden id="relPath" name="relPath" />
<@p.submit value="保存"/> <@p.reset value="重置"/>
</@p.td>
</@p.form>
</div>
</body>
</html>
3. 找到submit出发的action标签 p,在freemarker.properties中
auto_import="/WEB-INF/ftl_lib/ponyjava.com/index.ftl" as p, "/WEB-INF/ftl_lib/jeecms/index.ftl" as cms
4.找到P标签定义的ftl,button.ftl
<#--
<input type="submit"/>
-->
<#macro submit
value="提交"
id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey=""
onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange=""
>
<input type="submit"<#rt/>
value="${value}"<#rt/>
<#if id!=""> id="${id}"</#if><#rt/>
<#include "common-attributes.ftl"/><#rt/>
<#include "scripting-events.ftl"/><#rt/>
/><#rt/>
</#macro>
4. 继续研究后台是怎么更新的。。。
分享到:
相关推荐
非常超值的JEECMS模板,非常漂亮美观!简洁设计!纯手工打造!
熟悉Freemarker的语法,如变量、条件语句、循环等,是制作Jeecms模板的基础。同时,理解Jeecms的目录结构和模板文件命名规则也非常重要。 3. **模板目录结构** 模板通常位于`/WEB-INF/templates`目录下,包括了...
本篇文章将主要探讨其默认模板——`template-default`,帮助读者深入理解Jeecms模板体系以及如何运用。 首先,我们来看模板设计。`template-default`作为Jeecms的基础模板,它的设计直接影响到网站的整体布局和风格...
JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频...doc/jeecms模板置标使用手册.doc
这篇学习文档将带你深入理解Freemarker的基础知识和高级特性,并通过Jeecms模板标签的使用,让你更好地掌握实际开发中的应用。 1. **Freemarker基础** - **模板语言**:Freemarker使用简单的文本模板语言,将数据...
首先,我们来看看`jeecms模板标签说明.doc`,这个文档通常会包含Jeecms所有可用的模板标签及其用法。模板标签分为多种类型,如文章标签、分类标签、图片标签、下载标签等,每种标签都有其特定的功能。例如,`{...
在提供的文件`jss_CMS标签说明.doc`和`jeecms模板标签说明.doc`中,详细列出了Jeecms系统中所有可用的标签及其用法。这些文档是学习和使用Jeecms标签的重要参考资料,包含了标签的属性介绍、示例代码以及实际应用...
9. **JEECMS标签简介**:JEECMS官方帮助文档中的JEE CMS标签简介.txt列出了系统提供的各种标签及其用法,这对于理解和使用JEECMS模板语言非常关键。 10. **jeecms学习笔记**:jeecms学习笔记.txt可能是某位开发者的...
**二、JEECMS模板** 2.1 3.x模板教程之上传资源:JEECMS提供了便捷的资源上传功能,允许用户上传图片、文档等媒体资源,用于网站内容的展示。 2.2 创建资源:通过后台管理界面,可以创建各种类型的内容资源,包括...
非常漂亮的一套模板,持续更新当中,每天更新一点点!现在的还不是最终完美版哦,不过接近完美版了!
### JEECMS3.x模板标签使用说明 #### 页面处理时间标签 **标签示例:** `[@process_time/]` 此标签用于展示当前页面的加载处理时间。它可以帮助开发者和管理员了解页面加载速度,并据此优化系统性能。 #### 页面...
"Jeecms-3.1.1网站制作模板"是一个基于SSH(Struts2、Spring、Hibernate)框架的开源项目,专为构建高效、可扩展的网站提供了一套完整的解决方案。SSH是Java Web开发中常用的三个框架的组合,它们分别负责表现层、...
JEECMS 是一个基于 Java 的内容管理系统,提供了强大的内容管理功能、灵活的模板系统和扩展性强的插件架构。JEECMS 的核心目标是提供一个灵活、可扩展、易用的内容管理系统,以满足不同行业和领域的需求。 二、...
jeecms模板使用说明书,主要介绍了首页、新闻栏目、新闻内容、单页、投票模块、全文搜索、评论、留言管理、专题标签的使用以及常用参数说明
二、核心模板全部使用文件形式保存,自由导入/导出模板,极大方便了用户模板设计、网站升级转移、全站换肤; 三、首页、栏目页缓存处理,在启动了页面缓存后,有利于提高系统反应速度,降低系统资源的消耗; 四、...
- **模板引擎**:内置高效模板引擎,方便设计者快速构建个性化网站模板。 - **搜索引擎优化**:Jeecms注重SEO,内置各种优化机制,如自定义URL、关键词设置等,有助于提高网站在搜索引擎中的排名。 - **安全防护*...
【Jeecms标签】是Jeecms内容管理系统中的一种特殊语法,用于在模板中动态插入内容,例如网站信息、文章列表、栏目导航等。Jeecms的标签使用方式分为三种,分别为 `${}`、`[@cms.]` 和 `[@cms.;]` 格式。 1. `${标签...
【标题】"JEECMS 3.04 显示与模板标签字符 GBK UTF8对照"涉及的关键技术点主要集中在字符编码、模板引擎以及JEECMS的系统兼容性上。JEECMS是一款基于Java的企业级内容管理系统,而在这个特定版本中,针对中文字符的...
3. 自定义模板:Jeecms提供自定义模板功能,用户可以根据自己的需求设计和修改页面布局,实现个性化网站设计。 4. 高效缓存机制:内置高效的缓存机制,可以显著提升网站性能,降低服务器负载。 5. 强大的权限管理:...