opencms常见问题

来源:互联网 发布:淘宝网官方网站登录 编辑:程序博客网 时间:2024/04/30 15:28

1 : <cms:user> user 标签提供了读当前用户的属性的方法

2 : <cms:property> 读取当前文件的属性

3 : <cms:link> 该标签为一个 VFS 资源生成有效的 OpenCms URL

4 : <cms:label> 读取 OpenCms 本地化属性文件中的字符串(仅当需扩展 OpenCms 工作区时使用)

5 : <cms:include> 用于运行中从 OpenCms VFS 动态包含文件,包含的文件被当成一个请求的附加参数。

6 : <cms:template> template 标签允许您把一个 JSP 页面分割成多个元素,以便使用 <cms:include> 引入。

7 : <cms:contentcheck> 检查 XML 内容的项目是否存在

8 : <cms:contentloop> 该标签用来循环取出 XML 内容列的全部元素

9 : <cms:contentshow> 该标签用于显示 XML 内容的列的值

10 : <cms:contentload> 载入一个 XML 内容资源的 collection ,根据给定的 collector 属性,确定是单个资源还是资源列表

11 : <cms:info> info 标签显示系统的运行信息以及底层支撑的

Java/Servlet/OS

环境信息。这个标签是通过标准的

System.getProperty(value)

来获得 Java 虚拟机信息的。如果给出的 property 的值没有对应的键值时,会返回错误信息。
二、一些问题

1. 路径问题: 代码:
<cms:contentload collector="allInFolderDateReleasedDesc" param="TEEMA_Ad/Home/Banner_Text/|teemaAd" editable="true">

如果在OPENCMS后台打开JSP页面时,该param下内容无法显示,须另开窗口,对应URL才可显示。

 

2.如何显示目录下的内容。

<% if  (getResourceCount(__cms,  " TEEMA_Ad/Home/Wide_Block_1/|teemaAd " ,  false )  >   0 ) {  %>  
   

< cms:contentload collector = " allInFolderDateReleasedDesc "  param = " TEEMA_Ad/Home/Wide_Block_1/|teemaAd " 
editable = " true " > 

  < img src = " /eeonline/cms<cms:contentshow element= " Image / Image " /> "  width = " 440 "  height = " 75 " > 

            <%    }  %> 

                   </ cms:contentload > 

<% 

    }

%>  

 

3 .创建文件类别 在opencms-modules.xml中:

< explorertype name = " teemaNews "  key = " fileicon.teemaNews "  icon = " article.gif "  reference = " xmlcontent " > 

< newresource page = " structurecontent "  uri = " newresource_xmlcontent.jsp?newresourcetype=teemaNews "  order = " 4 "
 autosetnavigation = " false "  autosettitle = " false " /> 

< accesscontrol > 
< accessentry principal = " GROUP.Administrators "  permissions = " +r+v+w+c " /> 

< accessentry principal = " GROUP.Projectmanagers "  permissions = " +r+v+w+c " /> 

< accessentry principal = " GROUP.Users "  permissions = " +r+v+w+c " /> 

</ accesscontrol > 

</ explorertype > 

=============================================== 

< type  class = " org.opencms.file.types.CmsResourceTypeXmlContent "  name = " teemaNews "  id = " 1003 " > 

< properties > 
< property > 
< name > content - conversion </ name > 
< value type = " shared " ><! [CDATA[cleanup;xhtml]] ></ value > 
</ property > 
< property > 
< name > template - elements </ name > 
< value type = " shared " ><! [CDATA[ / system / modules / com.teema.eeonline / pages / detail - news.html]] ></ value > 
  </ property > 
  </ properties > 
< param name = " schema " >/ system / modules / com.teema.eeonline / schemas / teemaNews.xsd </ param > 
</ type > 

 

在后台schemas中,新建文件,类别为xsd,然后eidt source。代码请参考相关文件。

 

4 .模板文件的使用     选择文件,右键属性->高级


然后在template中输入对应的模板路径。


本工程的模板目录路径为上图所示,每个模板的功能,都有相应的说明。

 

5 . 文件包含与变量问题

a) 不能在包含的js文件里,引用父JSP文件的变量。

b) 最好不要用 <jsp include 来包含文件而采用<%@ include file,否则如果模板文件没有发布,无法识别其改动。

 

6. 关于文件发布

   a) 同步后,要进行发布,更改后的文件才能生效。

b) 个别文件的改动发布,如果改动到模块文件所包含的文件,发布时,不能只发布包含文件 ,而模板文件也要改动再发布。

 

7 .关于 ContentLoad Tag 中的变量
    
1) go to WEB-INF/opencms.tld and add  <rtexprvalue>true</rtexprvalue>
2) Alternatively you could put the value into the pageContext  (<c:set var="file">/sites/default/xyz.html</c:set>) 
and then use a macro "<cms:contentload...param="${pageContext.file}">..." .

8 . Accessing files with a new CmsObject instance  
import org.opencms.file.CmsObject;
import org.opencms.file.CmsProject;
import org.opencms.main.CmsException;
import org.opencms.main.OpenCms;

// ...

cmsObject = OpenCms.initCmsObject( "Guest" );
cmsObject.loginUser( "Admin", "admin" );
           
CmsProject cmsProject = cmsObject.readProject( "Offline" );
cmsObject.getRequestContext().setCurrentProject( cmsProject );
           
cmsObject.getRequestContext().setSiteRoot( "/" );
    
      
9. 后台页面form文本域的提交,所在的类CmsToolManager.initParams(CmsToolDialog wp)