IBM Websphere Portal主题与皮肤开发

2024-02-18 07:38

本文主要是介绍IBM Websphere Portal主题与皮肤开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

IBM Websphere Portal主题皮肤开发

 

北京东华合创数码科技公司郑文平

 

内容简介:

Portal的主题与皮肤开发说穿了还是普通jsp的开发,只不过大量使用了ibm自带的标签库,开发起来显得比较麻烦。但是,如果您深刻洞悉了与主题、皮肤相关的这几个文件之间的调用关系,使用起来就能运用自如了。这里是作者从大量的项目经验中总结出的几点体会,贡献出来,希望与大大家分享。

在这篇文章里我想从以下几个方面来介绍websphere portal的主题与皮肤开发:

1、初级入门:什么是Portal的主题与皮肤开发?

2、中级开发:如何更换Portal系统的logo图标;

3、中级进阶:开发个性化的主题;

4、高级探索:开发自适应分辨率的主题与皮肤;

5、高手过招:更改Portal系统的登录方式;

6、Portal的皮肤开发简介。

 

一、初级入门:Portal的主题与皮肤开发:

 

要了解如何开发portal的主题,首先要了解websphere portal的显示流程。IBMWebSphere Portal使用不同的Java Server PageJSP、级联样式表(Cascading Style SheetCSS)和图像来显示门户页面。它使用位于X:/WebSphere/AppServer/installedApps/YourComputerName /wps.ear/wps.war目录下themesskinsscreens目录中的JSP来构造门户页面。这些目录中的每一个都包含htmlwmlchtml子目录,WebSphere Portal将它们用于服务不同客户机,例如桌面浏览器和移动设备。我们这里以通常使用的html方式下的主题开发为例,介绍Portal的主题开发。

 

用于显示门户页面的JSP流程:本文描述了缺省主题定义的Default.jspHead.jspAdminLinkBarInclude.jspToolBarInclude.jspPlaceBarInclude.jspPageBarInclude.js以及延伸出来的PageBeginInclude.jspPageEndInclude.jsp的内容和流程。下面简单介绍这几个jsp。注意:这部分内容属于最初级的开发,您要弄懂这些介绍,必须具备一定的jsp基础、css基础和标签库的基础,最好做过相应的开发。

1Default.jsp

所有屏幕聚集都从Default.jsp开始。用于缺省主题的Default.jsp位于wp_root/app/wps.ear/wps.war/themes/html。这个JSP包含其它用于显示标题、公司徽标、工具栏的JSP以及用于往可用位置及页面植入内容的JSP。在Default.jsp的末尾处,screenRender JSP标记选择被请求的屏幕(例如loginforgotpassword)。以下介绍的jsp是以这样的顺序先后调用的。

2Head.jsp

Head.jsp生成标题并嵌入指向样式表文件的链接。它还定义了支持BIDI(双向)文本所需的变量。这个JSP的内容将在这里描述。您也可以通过<title></title>在这里定死portal网站的标题,这比IBM公布的以标签的方式写来的容易,也更易使用。如果您开发了多套主题,而且这几套主题的page title如果也一样的话(除了虚拟门户,一般是这样子),您可以把这几个文件放到themes/html的根目录下,其他主题的default.jsp都来调用这个文件就可以了。

 

3AdminLinkBarInclude.jsp

       AdminLinkBarInclude.jsp主要用来显示了“新建页面”、“编辑页面”、“分配页面许可权”三个标签

4ToolBarInclude.jsp

ToolBarInclude.jsp显示欢迎消息以及为用户提供的链接工具栏。门户网站上显示什么样的链接工具栏取决于用户上下文。例如,登录的用户看到“我的门户网站”、“管理”(尽管理员可见)、“编辑我的‘概要文件’”、“注销”等之类的链接;而注销的用户看到“忘记密码”、“登录”、“帮助”之类的链接。

5PlaceBarInclude.jsp

PlaceBarInclude.jsp用来显示一级菜单,即“首页”、“文档管理器”、“公司概况”、“业务简介”等,属于最高层的目录,您在任何一个一级菜单上都可以通过“新建页面”来创建二级菜单,你创建的内容将被存储到数据库(原始使用的是cloundscape),您也可以把它倒入到db2oracle等任何一个portal所支持的数据库中,此内容将在我的下一篇文章中详细论述,这里不再一一提及。

 

6PageBarInclude.jsp

用来显示二级菜单,当您点击一级菜单中的任一标签时,系统会调用该文件,并检索出该菜单的所有子菜单,默认显示在PlaceBar的下面。

 

二、中级开发:如何更换Portal系统的logo图标;

1Default.jsp的工作原理:

aspectratio="t" v:ext="edit">

 

 我们看这个例子,Default.jsp大致上将Portal系统的默认页面划分为这样一个表格:

 

-1Default.jsp总体调用效果

 

PageBegin:用来显示页面生成以前的提示文字,例如:Portal系统正在加载,请稍候……

Portal系统主体部分:用来显示详细的Portal页面;

PageEnd.jsp用来显示页面生成以后的东西。例如公司版权信息等。

 

-2Portal系统正文部分的调用关系:

徽标部分,在default中调用

我的门户菜单,在ToolBar中调用

个性化菜单,在AdminLink中调用

PortalBody部分,用来显示各个portlet以及高层次的三级菜单。

页面的结尾,用来显示公司版权信息等。

  

 

2、换一个logo

 打开Default.jsp,您会开到一个表格,在表格的左上角,有这样一段语句,用来显示默认主题的Logo徽标:

 

<td width="100%" valign="top" align="<%=bidiAlignLeft%>" nowrap>

        <img align="absmiddle" alt='<wps:text key="title" bundle="nls.engine">Portal Title</wps:text>' title='<wps:text key="title" bundle="nls.engine"/>' src='<wps:urlFindInTheme file="logo.gif"/>'>

            <a href="#wpsMainContent"><img width="1" height="1" border="0" src='<%= wpsBaseURL %>/images/dot.gif' alt='<wps:text key="link.skiptocontent" bundle="nls.engine"/>' title='<wps:text key="link.skiptocontent" bundle="nls.engine"/>'>

</a>

     </td>

  上面已经介绍过,整个Portal系统的页面由Default.jsp分割成一个大的表格,用来显示或者调用不同的jsp。我们在这个大表格的最左上角化出一个<td>,用来显示公司的徽标。这段语句就是在这个单元格内插入一个图片,叫做Logo.gif

明白了吗?您可以将这个文件名改称您想插入的任意一张图片的名字,只要将这张图片放到.war/images/目录下就可以了。这里支持几乎所有的图片格式,您可以任意摆放,大小、位置等都有您说了算。到这里,您可能已经想到了:那么,我养插入一个Flash呢?别着急,下面将会提到这点。

3、用flashlogo

     Flash作徽标是个不错的注意,它可以使您的门户网站看起来更丰富、生动一些。但是,Flash,也就是.swf格式的文件,是不能直接通过这种方式来插入的,因为我们的浏览器并不能识别它。要插入一个动画,必须位置制定相应的驱动。您可以用以下这段代码,为之生成:

 

<td width="510" border="0" cellpadding="0" cellspacing="0" height="81" valign="middle" align="left">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="510" height="81">

              <param name=movie value="<%= wpsBaseURL %>/images/firstpagelogo.swf">

              <param name=quality value=high>

                   <embed src="firstpagelogo.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="510" height="81">

                   </embed>

</object>

</td>

 

这里在插入了一个名字为firstpagelogo.swf的影片做公司徽标,他的大小是510*81,请将这个影片文件放在.war/images目录下,重启服务器,看看您的首页上,是不是已经出现了?

 

三、中级进阶:开发个性化的Portal主题

1、理解、开发各级菜单;

Default.jsp调用PlaceBarInclude.jsp文件来显示一级菜单,如果一级菜单下面还有二级菜单,那么当您点击该一级菜单是,Default将调用PageBarInclude.jsp来显示二级菜单。当然,您也可以不再调用该文件,那么系统将缺省调用Portlet的皮肤里面的LayerContainer.jsp文件,用来以三级菜单代替二级菜单,这便是个性化的左侧管理菜单。

打开这两个文件,您会发现里面的内容非常简单。请看下面的清单:

l        首先由这样一个标签:

<wps:if navigationAvailable="yes" screen="Home,LoggedIn,LoggedOut">

       意思是如果菜单时可用的,那么当您登录进去以后将执行如下操作。使用这句代码,必须引入Portal的标签库,具体的过程这里不再赘述。接下来绘制了一个表格,用来显示里面的操作。表格内的内容,下面将作介绍。

l        菜单的左右协调:如果您一共定义了十几个一级菜单,而一栏只能显示8个,剩下的菜单怎么办?我们在这里放置了两个三角形的小图标,如果右边还有更多的菜单,小图标会自动出现,当您点击时,就会显示出剩余的菜单。 具体的代码是通用的,这里不再赘述。我们需要强调的是:菜单条在这里支划分为两种情况:一是选中的情况下,一是为选中的情况下,即:

     <wps:if nodeInSelectionPath="yes">

       <table>这里用来显示选中该菜单的情况下该菜单条的显示方式。</table>

</wps:if>

<wps:if nodeInSelectionPath="no">

       <table>这里用来显示未选中该菜单的情况下该菜单条的显示方式。</table>

</wps:if>

例如:

<td Background="<%= wpsBaseURL %>/images/title_back01.jpg" height="30">                                                     

    <img border="0" src='<%= wpsBaseURL %>/images/b01.jpg' alt="">

<a href='<%=wpsNavModelUtil.createSelectionChangeURL(wpsNavNode)%>' class="wpsSelectedPlaceLink">

<%= com.ibm.wps.model.LocaleHelper.getTitle((com.ibm.portal.Localized)wpsNavNode, com.ibm.wps.engine.RunData.from( pageContext.getRequest()).getLocale())%>

这篇关于IBM Websphere Portal主题与皮肤开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720482

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD