引入:

opencms中引入了直接编辑页面的能力,因为我本身对页面编辑特性不是很感兴趣,所以这里就从技术角度分享一些常见的分析opencms中页面的方法。


实践:找到指定文件的对应代码

比如,我们要分析在VFS中的"Offline"模式下的/site/default/demo/text-block 模块下的index.html.

首先,我们在workplace中选中此文件,然后右键选择Properties, 然后切换到第二个tab,可以查看它用的模板的路径:

opencms 页面编辑模式研究_第1张图片

此路径为:/system/modules/com.alkacon.bootstrap.formatters/templates/bootstrap-page.jsp


我们发起数据库查询,根据此路径查询CMS_OFFLINE_STRUCTURE表,获取该页面对应的RESOURCE_ID.  SQL语句为:

select * from cms_offline_structure where 
resource_path='/system/modules/com.alkacon.bootstrap.formatters/templates/bootstrap-page.jsp';

我们在根据RESOURCE_ID查找CMS_OFFLINE_RESOURCES表,获取真实的页面代码. SQL语句是:

select * from cms_offline_contents where resource_id ='be01129d-1a1a-11e3-9358-000c29f9a2ec';

这时就可以打开这个BLOB文件查看其内容了:

<%@page buffer="none" session="false" trimDirectiveWhitespaces="true" %><%--
--%><%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %><%--
--%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%--
--%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
--%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
--%>


    OpenCms | ${cms.title}
    
    
    
    
    
    ">
    ">
    
    

    /system/modules/com.alkacon.bootstrap.formatters/resources/img/favicon_120.png"/>
    /system/modules/com.alkacon.bootstrap.formatters/resources/img/favicon_16.png" type="p_w_picpath/png"/>

    
    
    
        
    
    
        
    
    
    
        
    
    
    /system/modules/com.alkacon.bootstrap.formatters/resources/css/themes/${colortheme}.css">
    /system/modules/com.alkacon.bootstrap.formatters/resources/css/themes/headers/header1-${colortheme}.css">
    %(link.weak:/system/modules/com.alkacon.bootstrap.formatters/resources/css/page.css:52f716c6-20f8-11e3-b4d8-000c297c001d)">

    
        
    
    
        
    
    

    
        jQuery(document).ready(function() {
            App.init();
        });