Manifest-Version: 1.0
Built-By: djaeggi
Created-By: Apache Maven Bundle Plugin
Import-Package: com.day.cq.portlet.toolbar.layout
Bnd-LastModified: 1234178347159
Export-Package: com.day.cq.portlet.toolbar.layout
Bundle-Version: 0.0.1.SNAPSHOT
Bundle-Name: Company CQ5 Portal Director Portlet Toolbar Layout
Bundle-Description: This bundle provides a custom layout for the CQ5 P
ortal Director Portlet Toolbar.
Build-Jdk: 1.5.0_16
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.day.cq.portlet.company.toolbarlayout
Tool: Bnd-0.0.255
HTML/CSS/图像位于/com/day/cq/portlet/toolbar/layout文件夹中的事实是portlet强制规定的,无法更改。 按照相同的思路,MANIFEST.MF中的Import-Package和Export-Package标头也必须命名为/com/day/cq/portlet/toolbar/layout。 Bundle-SymbolicName必须是唯一的完全限定的包名称。
您可以使用maven等工具构建它,或手动创建具有相关标题集的jar文件,如本节所示。
Portlet的工具栏基本上有两种视图状态。 每个视图和相关的按钮可以用相应的HTML文件定制。
发布视图只有一个按钮,可用于将工具栏切换到“管理”视图。 发布视图由publish.html文件表示,位于 上一个捆绑包. 在HTML中,您可以使用以下占位符,在呈现时,这些占位符将被Portlet替换为相应的内容:
发布视图占位符
占位符字符串
“管理”视图包含四个按钮:“编辑”、“网站”选项卡、“刷新”和“上一步”。 “管理”视图由manage.html文件表示,位于 上一个捆绑包. 在HTML中,您可以使用以下占位符,在呈现时,这些占位符将被Portlet替换为相应的内容:
管理视图占位符
占位符字符串
无论按钮出现在哪个视图中,它们都使用相同的常用HTML(在button.html中定义)。
在HTML中,您可以使用以下占位符,在呈现时,这些占位符将被Portlet替换为相应的内容:
占位符字符串
<a href="#" onclick="{onclick}">
<img src="/wps/PA_CQ5_Portlet/cqbridge/static/{id}.gif" alt="{text}"
title="{text}"/>
安装自定义布局
要安装自定义布局,请访问portlet的OSGI Web控制台捆绑包部分,并上传捆绑包。
如果需要上载或创建用于安装的包,请参阅AEM文档中的包管理器,以了解详细说明。
所有链接都将被重写,以便在门户上下文中工作。 默认情况下,使用带有渲染参数的链接。 可以将门户DirectorHTML重写器配置为使用操作链接。
您还可以定义要查询以显示内容路径的其他请求参数。 这很有用,例如,当存在从外部到特定内容的链接时。
此外,可以使用为链接重写定义的排除正则表达式列表来配置门户DirectorHTML重写器。 例如,如果您有外部系统的相对链接,则应将它们添加到此排除列表中。
AEM内容Portlet具有内置的本地化功能,可确保AEM中的内容使用正确的语言。
此过程分两步完成:
门户目录区域设置检测器通过从门户获取区域设置来检测门户用户的区域设置。 必须使用AEM中的可用语言列表配置此服务。
门户Director区域设置处理程序处理当前请求的本地化。 例如,它会采用所请求内容的路径 /content/geometrixx/en/company.html根据配置,它重写了 en 用户的实际区域设置。
可以为Portal Director区域设置处理程序配置检查区域设置信息的路径 — 通常这包括 /content 以及路径中区域设置信息的位置。 默认情况下,区域设置处理程序遵循AEM中结构化多语言站点的重新通用方式。
如果您的站点对于处理路径中的区域设置信息没有严格的规则,则可以使用您自己的实施替换区域设置处理程序。
可选OSGi服务
可以实施可选的OSGi服务来自定义portlet的各个部分。 每个服务都对应一个Java接口。 此接口可以通过捆绑包实施并部署到portlet中。
RequestTracker
每当portlet显示内容时,都会通知请求跟踪器。 这使您可以跟踪portlet的调用情况。
InvocationContextListener
在对portlet的每个请求的开始和结束处调用的监听程序。 监听器可用于更改或添加当前请求的信息。
错误处理程序
呈现阶段错误的自定义错误处理程序。
HttpProcessor
此服务可用于向AEM的每个http调用添加信息。
PortletAction
向Portlet添加自己的操作 — 可以通过Portlet操作链接调用此操作。
PortletDecoratorService
此服务可用于装饰Portlet的内容。
ResourceProvider
添加您自己的资源提供程序,以通过指向客户端的portlet资源链接提供某些资源。
TextMapper
允许您发布处理HTML、CSS和JavaScript文件。
工具栏按钮
将您自己的按钮添加到工具栏。
UrlMapper
添加服务以应用自定义url映射或重写。
UserInfoProvider
添加您自己的用户信息。 此服务可用于将信息从门户获取到portlet。
替换默认服务
以下服务在内容portlet中具有默认实施(具有相应的Java接口)。 要进行自定义,需要将包含新服务实施的捆绑部署到portlet应用程序中。
实施此类服务时,请确保将 service.ranking 正值的服务的属性。 默认实施使用排名0,而Portlet使用排名最高的服务。
Portlet事件
Portlet API (JSR-286)指定Portlet事件。 AEM内容Portlet具有集成的网桥,可将AEM Portlet的Portlet事件作为OSGi事件分发 — 这使得处理Portlet事件变得可插拔。
如果要处理特定事件,请在部署描述符中声明这些事件作为接收事件(或通过门户服务器进行配置),并实施声明EventHandler接口的OSGi服务(请参阅OSGi EventAdmin规范)。
每当portlet事件发生时,都会发送一个特定的OSGi事件,以调用您的处理程序。 该处理程序获取所有上下文信息,并可相应地更新Portlet的状态或发送新事件。 基本上,在handle方法内可以使用portlet事件阶段的所有功能。
将AEM用作门户
使用Portlet组件将Portlet窗口添加到AEM页中。 您安装到应用程序服务器的共享库使Portlet组件能够检测已部署的Portlet应用程序。
要使用AEM作为门户,请执行以下任务:
安装Portlet组件和共享库。
将Portlet组件添加到Sidekick。
配置并部署包含要在Portal组件中显示的Portlet的Web应用程序。
将Portlet组件添加到页面中,然后选择要显示的Portlet。
仅当AEM部署为Web应用程序时才可以使用Portlet组件。 (请参阅使用应用程序服务器安装AEM.)
安装portlet组件
AEM快速入门JAR文件包含Portlet组件文件。 要获取文件(cq-portlet-components.zip),您可以执行“快速入门”或提取内容。
执行或提取快速入门JAR文件的内容,并相应地找到cq-portlet-components.zip文件:
执行快速启动:crx-quickstart/opt/portal
提取快速入门内容:static/opt/portal
打开部署到应用程序服务器的CQ5创作实例的包管理器。 (https://appserverhost:端口/cq5author/crx/packmgr)
使用包管理器可以 上传并安装 cq-portlets-components.zip包。
该软件包将cq-portlet-director-sharedlibs-x.x.x.jar安装在存储库的/libs/portal/director文件夹中。
将cq-portlet-director-sharedlibs-x.x.x.jar复制到硬盘。 使用任何方法获取文件,例如FileVault或WebDAV客户端。
将cq-portlet-director-sharedlibs.x.x.x.jar文件移动到应用程序服务器的共享库文件夹中,以便这些类可用于已部署的portlet应用程序。
将Portlet组件添加到Sidekick
将portlet组件添加到段落系统中,以便作者可以使用。
在Sidekick中,单击标尺图标以进入设计模式。
在 Design of par 标题在第一段上方,单击 编辑.
在 常规 组件类别中,选中Portlet组件旁边的复选框,然后单击确定。
配置和部署Portlet应用程序
将Portlet部署到应用程序服务器Web容器,以便它们可用于Portal组件。 在部署portlet应用程序之前,需要配置应用程序,以便加载AEM portal容器servlet。 此配置使Portlet组件能够访问portlet。
提取portlet应用程序WAR文件的内容。
提示: jar xf nameofapp.war命令将解压文件。
在文本编辑器中打开web.xml文件。
在Web应用程序元素中添加以下servlet配置:
<servlet>
<servlet-name>slingportal</servlet-name>
<servlet-class>org.apache.sling.portal.container.api.ContainerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>slingportal</servlet-name>
<url-pattern>/SlingPortletInvoker</url-pattern>
</servlet-mapping>
保存web.xml文件并重新封装WAR文件。
提示: 此 jar cvf nameofapp.war * 命令将当前目录的内容添加到nameofapp.war文件中。
将portlet应用程序部署到应用程序服务器。 有关信息,请参阅应用程序服务器的文档。
向AEM页面添加Portlet
使用门户组件向网页添加Portlet窗口。 使用组件属性指定要显示的portlet。
在网页上,拖动 Portlet 组件从常规组到页面的Sidekick。
将组件拖动到页面后,请重新加载页面以确保它正常工作。
在Portlet中安装、配置和使用AEM
要访问AEM WCM提供的内容,门户服务器需要安装AEM Portal Director Portlet。 要执行此操作,请使用本节中提供的步骤安装、配置Portlet并将其添加到门户页面。
默认情况下,portlet连接到localhost:4503上的发布实例,并连接到localhost:4502上的创作实例。 这些值可以在部署portlet的过程中更改。 门户控制器可在存储库的/libs/portal/directory下作为内容使用。 您需要先下载应用程序war文件,然后才能使用它。
正在下载war文件
使用Webdav或CRXDE Lite,导航到/libs/portal/director。
下载 cq-portlet-webapp.war.
这些过程使用Websphere门户作为示例,尽管它们尽可能通用;请注意,对于其他Web门户,过程有所不同。 尽管这些步骤对于所有Web门户基本上相同,但您需要为特定Web门户重新调整这些步骤的用途。
安装portlet
要安装portlet ,请执行以下操作:
使用管理员权限登录到门户。
导航到Web门户的Portlet管理部分。
单击安装并浏览到您下载的AEM portlet应用程序(cq-portlet-webapp.war),然后输入有关该portlet的其他重要信息。
对于其他重要的portlet信息,您可以接受默认值或更改值。 如果您接受默认值,则可在https://上找到Portlet<wps-host>:<port>/wps/PA_CQ5_Portlet。 通过Portlet提供的OSGi管理控制台位于https://<wps-host>:<port>/wps/ PA_CQ5_Portlet/cqbridge/system/console (默认的用户名/密码是admin/admin)。
通过选择该选项或复选框并保存更改,确保Portlet应用程序自动启动。 您会看到一条消息,指出您的安装已成功。
配置Portlet
安装Portlet后,您需要对其进行配置,以便它知道底层AEM实例(创作和发布)的URL。 您还可以配置其他选项。
要配置portlet ,请执行以下操作:
在应用程序服务器的门户管理窗口中,导航到portlet管理(其中列出了所有portlet),然后选择AEM Portal Director portlet。
根据需要配置portlet。 例如,您可能需要更改创作和发布实例的URL以及起始路径的URL。 有关默认配置的说明,请参见 Portlet首选项.
如果Portlet配置为连接到在上下文路径上运行的AEM创作和发布实例,而上下文路径不是**/**,则需要启用强制 CQUrlInfo 在这些AEM实例的Html库管理器配置中(例如,通过Felix Webconsole),或编辑将不起作用,并且不会显示首选项对话框。
导航到portlet的OSGI管理控制台。 默认位置为 https://<wps-host>:<port>/wps/PA_CQ5_Portlet/cqbridge/system/console/configMgr. 默认的用户名/密码为 管理员/管理员.
选择 Day Portal Director CQ服务器配置 配置并编辑以下值:
作者基本URL:AEM创作实例的基本URL。
发布基本URL:AEM发布实例的基本URL。
“作者”用作“发布”:创作实例是否用作发布实例(用于开发)?
内容URL
从AEM请求内容时, portlet使用当前显示模式(发布或创作)和当前路径来组合完整的URL。 对于默认值,第一个URL为 https://localhost:4503/content/geometrixx/en.portlet.html. 的值 htmlSelector 会自动添加到扩展之前的URL中。
如果portlet切换到帮助模式,并且 appendHelpViewModeAsSelector 已选中,则 help 例如,还会附加选择器, https://localhost:4503/content/geometrixx/en.portlet.html.help. 如果portlet窗口最大化,并且 appendMaxWindowStateAsSelector ,则也会附加选择器,例如, https://localhost:4503/content/geometrixx/en.portlet.max.help.
可以在AEM中评估选择器,并且不同的模板可用于不同的选择器。
在AEM中使用内容Url映射
通常,起始路径直接指向AEM中的内容。 但是,如果要在AEM中而不是在portlet首选项中维护起始路径,则可以在AEM中指向内容映射的起始路径,如 /var/portlets. 在这种情况下,在AEM中运行的脚本可以使用portlet中提交的信息来确定哪个url是起始URL。 它应该发布到正确URL的重定向。
将Portlet添加到门户页
要将portlet添加到门户页面,请执行以下操作:
确保您位于应用程序服务器的管理窗口中,并导航到您管理页面的位置。 (例如,在WebSphere 6.1中,单击 管理页面)。
选择Portlet的名称,然后选择现有页面或创建新页面。
编辑页面布局。
选择Portlet并将其添加到容器中。
保存更改。
使用Portlet
要访问添加到Portlet的页面,请执行以下操作:
在Portlet的个性化菜单中,按照您在门户中配置的Portlet对其进行配置。
打开配置(Portlet显示在Portlet的配置中配置的发布开始URL)并根据需要进行编辑,然后保存。