AEM門戶和Portlet

本檔案說明下列項目:

  • AEM Portal架構
  • 管理和設定AEM as a portal
  • 使用AEM作為入口網站
  • 安裝、配置和顯示portlet中的AEM內容(例如,Web伺服器)

AEM Portal Architecture

AEM門戶體系結構包括門戶和portlet的定義。

什麼是門戶?

門戶是Web應用程式,它提供個性化、單一登錄、來自不同來源的內容整合,並承載資訊系統的展示層。

您可以在AEM中運行符合JSR 286的portlet。 Portlet元件允許您在頁上嵌入Portlet。 請參閱管理AEM內容Portlet

什麼是portlet?

Portlet是部署在容器內的Web元件,用於生成動態內容。 Portlet介面被打包並部署為.war檔案,位於Portlet容器內。 如果您正在運行AEM as a portal,則需要該portlet的.war檔案來運行該portlet。

要將AEM內容配置為顯示在門戶中,請參閱在portlet中安裝、配置和使用AEM。

AEM Portal Director

注意

自AEM 6.4起,AEM Portal Director已淘汰。請參閱已棄用和已移除的功能

管理AEM內容Portlet

AEM內容Portlet允許您在門戶中顯示AEM內容。 此portlet在/crx-quickstart/opt/portal上可用,並且可以通過各種方式定制。 例如,您可以部署自己的驗證服務來產生AEM覆寫預設行為所需的驗證資訊,借此自訂SSO/驗證處理。 外掛程式使用已定義的API,可讓您根據API建立外掛程式,以新增您自己的功能。 插件可部署到正在運行的portlet中。 若要正常運作,它需要AEM製作和發佈執行個體的設定以及內容路徑,才能在啟動時顯示。

某些配置可通過Portlet首選項進行更改,其他配置則可通過OSGi服務配置進行更改。 您可以使用​config​檔案或OSGi Web控制台來更改這些配置。

Portlet首選項

可以在部署門戶伺服器時配置門戶首選項,或在部署門戶Web應用程式之前編輯​WEB-INF/portlet.xml​檔案。 預設情況下, portlet.xml檔案顯示如下:

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="https://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="https://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd"
             version="1.0">
   <portlet>
      <portlet-name>RSSWeatherPortlet</portlet-name>
      <portlet-class>org.jboss.portlet.weather.WeatherPortlet</portlet-class>
      <init-param>
         <name>default_zipcode</name>
         <value>05673</value>
      </init-param>
      <init-param>
         <name>RSS_XSL</name>
         <value>/WEB-INF/Rss.xsl</value>
      </init-param>
      <init-param>
         <name>base_url</name>
         <value>https://xml.weather.yahoo.com/forecastrss?p=</value>
      </init-param>
      <expiration-cache>180</expiration-cache>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>VIEW</portlet-mode>
         <portlet-mode>EDIT</portlet-mode>
      </supports>
      <portlet-info>
         <title>Weather Portlet</title>
      </portlet-info>
      <portlet-preferences>
         <preference>
            <name>expires</name>
            <value>180</value>
         </preference>
         <preference>
            <name>RssXml</name>
            <value>https://xml.weather.yahoo.com/forecastrss?p=33145</value>
            <read-only>false</read-only>
         </preference>
      </portlet-preferences>
   </portlet>
</portlet-app>

可以使用以下首選項來配置Portlet:

startPath

這是Portlet的起始路徑:它會定義最初顯示的內容。

重要:如果portlet設定為連線至AEM製作和發佈執行個體,且這些執行個體的內容路徑不同於 /,則您必須在這些AEM執行個體的Html Library Manager設定中(例如透過Felix Webconsole)啟用強制CQUrlInfo,或編輯將無法運作,且偏好設定對話方塊將不會顯示。

htmlSelector 附加至每個URL的選取器。 預設情況下,這是portlet,因此對html頁面的所有請求都使用結尾為.portlet.html的url。 這可讓AEM內使用自訂指令碼來轉譯portlet。
addCssToPortalHeader

預設情況下,包含在AEM的HTML頁面中的CSS檔案會包含在Portlet中。 禁用此選項會排除預設的CSS檔案。

如果啟用此選項,則會根據入口網站的行為,將CSS檔案新增至html頁面的標題或內嵌於html頁面中。

includeToolbar 預設情況下,在內容portlet內呈現一個工具欄,以便管理功能。 禁用此選項後,不會呈現任何工具欄。
urlParameterNames

可能包含要為Portlet顯示的新內容URL的替代URL參數名稱的清單。 此清單會由上到下處理,而使用包含值的第一個參數。 若找不到URL,則會使用預設URL參數。 提供的URL依原樣使用,不需進一步修改。

此設定是按部署的portlet進行的 — 它還用於在「Day Portal Director Portlet Bridge」的OSGi配置中全局配置一些url參數。

preferenceDialog AEM中「偏好設定」對話方塊的路徑 — 如果保留為空白,則會使用內建的偏好設定對話方塊。 預設值為/libs/portal/content/prefs.html。
initialRedirect 預設情況下,Portlet在第一次調用時執行整個門戶頁面的javascript重定向。 這是為了支援現代門戶伺服器的拖放方案。 在生產環境中,很少需要此重新導向,因此,可以將此偏好設定設為false時關閉。

OSGi Web控制台

假設入口伺服器在主機localhost上運行,埠8080,並且AEM portlet web應用程式在Web應用程式上下文​cqportlet​中裝載,則Web控制台的URL為http://localhost:8080/cqportlet/cqbridge/system/console。 預設的用戶和密碼為​admin

開啟​Configurations​頁簽,然後選擇​Portal Directory CQ Server Configuration。 您可在此指定製作和發佈例項的基礎URL。 配置Portlet中介紹了此過程。

注意

OSGi Web主控台僅用於在開發(或測試)期間變更設定。 請務必封鎖對生產系統主控台的要求。

提供配置

為支援自動部署和配置設定,AEM內容portlet具有內置的配置支援,該配置支援嘗試從提供給portlet應用程式的類路徑中讀取配置。

啟動時,讀取系統屬性​com.day.cq.portet.config​以檢測當前環境。 此屬性的值通常類似於​devprodtest​等。 如果未設定環境,則不會讀取任何配置。

如果設定了環境,則在類路徑中搜索配置檔案,其中​env​被環境的實際值替換。 ​此檔案應列出此環境的所有配置檔案。 系統會根據設定檔案的位置來搜尋這些檔案。 例如,如果檔案包含行my.service.xml, ,則從類路徑中讀取此檔案(位於com/day/cq/portlet/my.service.config.)檔案的名稱由服務的持久性ID組成,後跟​.config。 在上一個範例中,永續性ID為​my.service。 設定檔案的格式是Apache Sling OSGi安裝程式使用的格式。

這表示,對於每個環境,都需要新增對應的設定檔案。 應應用於所有環境的配置需要在所有這些檔案中輸入 — 如果它僅用於單一環境,則只需在該檔案中輸入。 此機制可確保完全控制要讀取哪個環境的組態。

可以使用不同的系統屬性來檢測環境。 指定系統屬性​com.day.cq.portet.configproperty,其中包含要使用的系統屬性名稱,而不是​com.day.cq.portet.config

快取和快取失效

Portlet在其預設配置中,將從AEM WCM收到的響應快取到用戶特定的快取中。 當發佈執行個體的內容發生變更時,快取必須失效。 為此,在AEM WCM中,必須在製作執行個體上設定復寫代理。 也可手動清除快取。 本節將介紹這兩個過程。

可以使用其自己的快取來配置portlet,以便在不需要訪問AEM的情況下顯示portlet中的內容。 入口網站在/libs/portal/director中以內容形式提供。 若要存取內容,請啟動AEM執行個體,並使用CRXDE Lite或Webdav從該位置下載檔案。

您可以在運行時部署此包,或在部署前將其添加到portlet Web應用程式WEB-INF/lib/resources/bundles

部署快取後,portlet將快取來自發佈實例的內容。 使用AEM的調度程式刷新可使Portlet快取失效。 要配置Portlet以使用其自己的快取:

  1. 在作者中設定以入口伺服器為目標的復寫代理。

  2. 假設入口伺服器在主機​localhostport 8080 上運行,並且AEM portlet web應用程式在上下文​cqportlet​中裝載,則用於刷新快取的URL為http://localhost:8080/cqportlet/cqbridge/cqpcache?Path=$(path)。 使用GET作為方法。

    注意: 您可以傳送名為Path的http標題,而不使用請 求參數

通過複製代理清除快取

就像一般的Dispatcher失效一樣,您也可以將復寫代理設定為目標門戶的AEM Portlet快取。 配置複製代理後,每個常規頁面激活都會刷新門戶快取。

如果運行AEM Portlet的多個入口節點,則需要按本過程所述為每個節點建立代理。

要為門戶配置複製代理,請執行以下操作:

  1. 登入製作例項。

  2. 在「網站」標籤中,按一下​工具​標籤。

  3. 按一下「新建頁面……」復寫代理​新建中的​​功能表。

    screen_shot_2012-02-15at40647pm

  4. 在​模板​中,選擇​複製代理,並輸入代理的名稱。 按一下​建立

    screen_shot_2012-02-15at40817pm

  5. 按兩下您剛建立的複製代理。 由於尚未設定,因此會顯示為無效。

    screen_shot_2012-02-15at41001pm

  6. 按一下「編輯」。

  7. 在​設定​標籤中,選取​啟用​核取方塊,選取​Dispatcher排清​作為序列化類型,然後輸入重試逾時(例如60000)。

    screen_shot_2012-02-15at42101pm

  8. 按一下​Transport​頁簽。

  9. 在​URI 欄位中,輸入portlet的刷新URI(URL)。 URI的格式如下:

    https://<wps-host>:<port>/<wps-context>/<cq5-portlet-context>/cqbridge/cqpcache
    

    screen_shot_2012-02-15at42322pm

  10. 按一下​Extended​標籤。

    screen_shot_2012-02-15at42515pm

  11. 在​HTTP方法​欄位中,鍵入​GET

  12. 在​HTTP標題​欄位中,按一下​+​以添加新條目並鍵入​路徑:{path}

  13. 如有必要,按一下​Proxy​頁簽,然後向代理輸入代理資訊。

  14. 按一下​OK​以保存更改。

  15. 要測試連接,請按一下​Test Connection​連結。 將顯示一條日誌消息,指明複製測試是否成功。 例如:

    screen_shot_2012-02-15at42639pm

手動刷新Portlet快取

通過訪問為複製代理配置的相同URL,可以手動刷新Portlet快取。 如需URL的形式,請參閱排清快取 。 此外,URL需要以URL參數Path=<path>來擴充,以指出要排清的項目。

例如:

https://10.0.20.99:10040/wps/PA_CQ5_Portlet/cqbridge/cqpcache?Path=* 刷新完成的快取。https://10.0.20.99:10040/wps/PA_CQ5_Portlet/cqbridge/cqpcache?Path=/content/mypage/xyz 從快 /content/mypage/xyz 取中刷新。

門戶安全

入口是驅動認證機制。 您可以透過技術使用者、入口網站使用者、群組等身分登入AEM。 Portlet無權訪問門戶中用戶的密碼,因此,如果Portlet不知道成功登錄用戶的所有憑據,則必須使用SSO解決方案。 在這種情況下, AEM Portlet會將所有必要的資訊轉發給AEM,會將這些資訊轉發給基礎的AEM儲存庫。 此行為可插拔,可自定義。

發佈時的驗證

本節介紹Portlet在與基礎AEM WCM實例通信時可使用的可用身份驗證模式。

依預設,不會將任何使用者資訊傳送至AEM的發佈例項;內容一律會顯示為匿名使用者。 如果應從AEM傳送使用者特定資訊,或需要發佈的使用者驗證,則必須開啟此功能。

訪問Portlet的Authentication Configuration

Portlet在AEM WCM實例中使用的身份驗證配置選項可在Web控制台中使用(OSGi配置)。

注意

使用AEM時,有數種方法可管理OSGi服務(主控台或存放庫節點)的組態設定。

如需完整詳細資訊,請參閱設定OSGi

要訪問Portlet的身份驗證配置:

  1. 透過下列URL存取Web主控台:

    http://localhost:8080/cqportlet/cqbridge/system/console

    例如,在其預設設定中:

    https://wps-host:10040/wps/PA_CQ5_Portlet/cqbridge/system/console

  2. 登入Web主控台。 預設憑據為admin/admin

  3. 在控制台中,選擇​Configuration

  4. 在​Configuration​菜單中,選擇要配置的特定服務。 服務由OSGi框架中的portlet提供。

    服務名稱 說明
    Day Portal Director Authenticator 設定用於AEM WCM例項的驗證模式。 視選取的模式而定,可指定技術使用者或SSO Cookie的名稱。 此外,也可以啟用AEM WCM發佈例項的驗證。
    日門戶Director檔案快取 配置Portlet快取其從AEM WCM實例接收的響應的方式的參數。
    Day Portal Director HTTP用戶端服務 配置Portlet如何通過HTTP連接到基礎AEM WCM實例。 例如,您可以指定代理伺服器。
    日門戶Director地區處理程式 配置Portlet支援的區域設定。 對AEM WCM例項的請求是根據使用者地區設定;例如,使用者語言德文會要求/content/geometrixx/de/
    日門戶Director特權管理器 根據當前登錄的用戶配置Portlet是否應測試Websites頁簽。
    Day Portal Director工具列轉譯器 自定義Portlet工具欄的呈現。
  5. 此外,您還可以設定Web主控台和記錄服務。 例如,您可以按一下Apache Felix OSGi Management Console連結,以變更Web主控台的管理憑證。

技術用戶模式

在預設模式中,Portlet為AEM WCM製作實例發出的所有請求都使用相同的技術用戶進行身份驗證,而不管當前門戶用戶是什麼。 技術使用者模式預設為啟用。 在OSGi管理控制台的相應配置螢幕中啟用/禁用此模式:

如果啟用「發佈時驗證」「發佈時驗證」,指定的技術使用者必須存在於AEM WCM製作執行個體和發佈執行個體上。 請務必為使用者授予足夠的存取權限,以便編寫工作。

SSO

Portlet支援SSO,且AEM現成可用。 驗證器服務可配置為使用SSO,並將格式為​Basic​的當前門戶用戶作為名為cqpsso的Cookie傳輸到AEM。 AEM應已設定為使用路徑/的SSO驗證處理常式。 此處也需要設定Cookie名稱。

AEM存放庫的crx-quickstart/repository/repository.xml需據以設定:

<LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
  ...
  <param name="trust_credentials_attribute" value="TrustedInfo"/>
  <param name="anonymous_principal" value="anonymous"/>
</LoginModule>

SSO驗證模式

Portlet可以使用單一登錄(SSO)方案來驗證AEM WCM。 在此模式中,目前登入入口網站的使用者會以SSO Cookie的形式轉送至AEM WCM。 如果使用SSO模式,則對基礎AEM WCM實例(最常用的形式是將AEM WCM連接到LDAP,或通過事先手動建立用戶)了解具有AEM Portlet訪問權限的所有門戶用戶。 此外,在portlet中啟用SSO之前,需要將基礎AEM WCM製作例項(以及發佈例項,若​啟用發佈時驗證)設定為接受基於SSO的請求。

要配置Portlet以使用SSO驗證模式,請完成以下步驟(在以下各節中詳細說明):

  • 啟用AEM WCM的存放庫以接受信任的憑證。
  • 在AEM WCM中啟用SSO驗證。
  • 在AEM Portlet中啟用SSO驗證。

使AEM WCM的儲存庫接受受信任的憑據

在為AEM WCM啟用SSO之前,必須將基礎存放庫設定為接受AEM WCM提供的信任憑證。 要執行此操作,請配置AEM repository.xml。

  1. 在安裝AEM WCM的檔案系統中,開啟下列檔案:

    //crx-quickstart/repository/repository.xml

  2. 在XML檔案中,查找​LoginModule​的條目,並將trust_credentials_attribute添加到其配置中:

    <LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
      ...
      <param name="trust_credentials_attribute" value="TrustedInfo"/>
      <param name="anonymous_principal" value="anonymous"/>
    </LoginModule>
    
  3. 重新啟動AEM WCM,讓變更生效。

在AEM WCM中啟用SSO驗證

若要在AEM WCM中啟用SSO,請存取AEM WCM的Apache Felix Web Management Console(OSGi)中的相關設定項目:

  1. 通過其URI(https://<AEM-host>:<port>/system/console)訪問控制台。

  2. 在「配置」菜單中,選擇「SSO驗證處理程式」。 在此範例中,SSO處理常式會根據AEM Portlet提供的Cookie接受所有路徑的SSO請求。 您的設定可能有所不同。

    路徑 / 為所有請求啟用SSO處理程式
    Cookie名稱 cqpsso Portlet提供的Cookie的名稱,如Portlet的OSGi控制台中所配置。
  3. 按一下​Save​以啟用SSO。 SSO現在是主要的驗證方案。

對於AEM WCM收到的每個請求,首先會嘗試SSO型驗證。 失敗時,會執行回退至通常的基本驗證方案。 因此,若沒有SSO,仍可正常連線至AEM WCM。

在AEM Portlet中啟用SSO驗證

為了使基礎AEM WCM實例接受SSO請求,必須將portlet的驗證模式從​Technical​切換到​SSO

要在AEM Portlet中啟用SSO驗證,請執行以下操作:

  1. 透過主控台的URI(網址為https://<aem-host>:<port>/system/console)存取主控台。

  2. 在「配置」菜單中,從可用配置清單中選擇Day Portal Director Authenticator。

  3. 在模式中,選擇SSO。 保留其他參數的預設值。

    chlimage_1-11

  4. 按一下「保存」為portlet啟用SSO。

    為了測試目的,在AEM WCM中建立具有管理員權限的同一個用戶後,使用門戶的管理用戶訪問portlet。

執行此程式後,請求會使用SSO進行驗證。 HTTP通信中的典型代碼段顯示以下SSO和Portlet特定標題:

C-12-#001898 -> [GET /mynet/en/_jcr_content/par/textimage/image.img.png HTTP/1.1 ]
C-12-#001963 -> [cq5:locale: en ]
C-12-#001979 -> [cq5:used-locale: en ]
C-12-#002000 -> [cq5:locales: en,en_US ]
C-12-#002023 -> [cqp:user: wpadmin ]
C-12-#002042 -> [cqp:portal: IBM WebSphere Portal/6.1 ]
C-12-#002080 -> [cqp:windowid: 7_CGAH47L000CE302V2KFNOG0084 ]
C-12-#002124 -> [cqp:windowstate: normal ]
C-12-#002149 -> [cqp:portletmode: view ]
C-12-#002172 -> [User-Agent: Jakarta Commons-HttpClient/3.1 ]
C-12-#002216 -> [Host: 10.0.0.68:4502 ]
C-12-#002238 -> [Cookie: $Version=0; cqpsso=Basic+d3BhZG1pbg%3D%3D ]
C-12-#002289 -> [ ]

啟用PIN身份驗證

如果您未使用AEM內容portlet的預設內聯編輯功能,但希望門戶外部門戶的創作和管理部分直接在AEM製作實例中,則應啟用PIN驗證。 您還需要更改管理按鈕的配置。

要開啟網站管理頁面或從portlet中編輯頁面,AEM內容portlet將使用新的pin身份驗證。 預設情況下,PIN驗證將被禁用,因此,必須在AEM中進行以下配置更改:

  1. 在repository.xml檔案中新增信任的資訊,以在AEM中啟用信任的驗證:

    <LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
      ...
      <param name="trust_credentials_attribute" value="TrustedInfo"/>
    </LoginModule>
    
  2. 在OSGi配置控制台中,預設位於http://localhost:4502/system/console/configMgr ,從下拉菜單中選擇​CQ PIN Authentication Handler

  3. 編輯​URL根路徑​參數,僅包含單一值​/

權限

Portlet的某些功能受權限保護。 當前用戶需要具有此權限才能訪問此功能。 預先定義的權限如下:

  • "toolbar" :這是查看/使用Portlet中工具欄的一般權限。
  • "prefs" :如果用戶具有此權限,則允許用戶查看/更改Portlet的首選項。
  • "cq-author:edit" :有了此權限,允許用戶調用內容的編輯視圖。
  • "cq-author:preview" :有了此權限,用戶可以查看預覽。
  • "cq-author:siteadmin" :透過此權限,可讓使用者在AEM中開啟網站管理員。

管理權限的最佳方法是使用門戶角色並將角色分配給這些權限。 這可透過OSGi設定完成。 「Day Portal Director Privilege Manager」可為每個權限配置一組角色。 如果用戶具有其中一個角色,則用戶具有相應的權限。

此外,還可以根據每個portlet實例庫的訪問來定義此角色。 portlet的首選項對話框包含上述每個權限的輸入欄位。 對於每個權限,都可以配置以逗號分隔的portlet角色清單。 如果已配置值,則此操作將覆蓋「Day Portal Director Privilege Manager」服務中的全局配置,並且可能需要從此全局設定中添加相同的角色,因為這些角色未合併! 如果未指定值,則使用全局配置。

自定義AEM Portlet應用程式

提供的AEM Portlet應用程式會像AEM一樣,在Web應用程式內啟動OSGi容器。 此架構可讓您善用OSGi的所有優點:

  • 易於更新和擴展
  • 提供Portlet的熱更新,而不需要與Portal伺服器進行任何交互
  • 易於自定義portlet

工具欄按鈕

工具欄及其按鈕是可配置的,可以定制。 您可以將自己的按鈕新增至工具列,或定義要在哪個模式中顯示的按鈕。 每個按鈕都是可透過OSGi設定設定的OSGi服務。

OSGi Web控制台列出​Configuration​頁簽上的所有按鈕配置。 對於每個按鈕,您可以定義此按鈕的顯示模式。 這可讓您移除所有模式,以停用按鈕。

預設情況下, AEM內容portlet使用內嵌編輯功能。 不過,如果您偏好切換至AEM製作例項進行編輯,請啟用​SiteAdmin Button​和​ContentFinder Button,但停用​Edit Button。 在此情況下,請務必在AEM中正確配置PIN驗證。

通過portlet的Felix Web Console(在預定義位置包含自定義的CSS/HTML)安裝包,可以自定義portlet的工具欄佈局。

束結構

以下是範例套件結構:

$ jar tvf target/toolbarlayout-0.0.1-SNAPSHOT.jar | awk '{print $8}'
META-INF/
META-INF/MANIFEST.MF
/com/day/cq/portlet/toolbar/layout/
/com/day/cq/portlet/toolbar/layout/author.gif
/com/day/cq/portlet/toolbar/layout/back.gif
/com/day/cq/portlet/toolbar/layout/button.html
/com/day/cq/portlet/toolbar/layout/edit.gif
/com/day/cq/portlet/toolbar/layout/manage.html
/com/day/cq/portlet/toolbar/layout/publish.html
/com/day/cq/portlet/toolbar/layout/refresh.gif
/com/day/cq/portlet/toolbar/layout/siteadmin.gif
/com/day/cq/portlet/toolbar/layout/toolbar.css

META-INF資料夾包含OSGi將其標識為捆綁包所需的MANIFEST.MF檔案。 顯示如下:

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中的「匯入套件」和「匯出套件」標題也必須命名為/com/day/cq/portlet/toolbar/layout。 Bundle-SymbolicName必須是唯一的完全限定包名。

您可以使用Maven等工具來建置,或手動建立這類jar檔案,並設定如本區段所示的相關標題。

Portlet工具欄視圖

Portlet的工具欄基本上有兩種視圖狀態。 每個視圖和關聯的按鈕都可以用相應的HTML檔案進行自定義。

發佈視圖

發佈檢視只有一個按鈕可將工具列切換為「管理」檢視。 發佈檢視由上一個套件組合中的publish.html檔案表示。 在HTML中,可以使用以下佔位符,這些佔位符在呈現時將替換為portlet中各自的內容:

發佈視圖佔位符

佔位符字串 說明
佔位符由​Manage 按鈕替換,該按鈕將portlet狀態切換為管理狀態。

管理視圖

管理視圖有四個按鈕:編輯、網站索引標籤、重新整理及返回。 管理視圖由前一個包中的manage.html檔案表示。 在HTML中,可以使用以下佔位符,這些佔位符在呈現時將替換為portlet中各自的內容:

管理視圖佔位符

佔位符字串 說明
預留位置已由 Edit​按鈕取代,該按鈕會在AEM編輯模式中以目前頁面開啟新視窗。
佔位符,替換為開啟AEM WCM的「網站」頁簽的按鈕。
刷新當前視圖。
將Portlet切換回發佈視圖。

按鈕

按鈕,無論其顯示哪個檢視,都會使用在button.html中定義的相同通用HTML。

在HTML中,可以使用以下佔位符,這些佔位符在呈現時將替換為portlet中各自的內容:

管理和發佈視圖按鈕

佔位符字串 說明
按鈕的名稱,例如​作者、返回、重新整理​等。
按鈕的CSS ID。
按鈕目標的URL。
按鈕的標籤。
Javascript onclick​函式(包含{url})。

button.html檔案的範例:

<div class="cqp_button">

 <a href="#" onclick="{onclick}">

 <img src="/wps/PA_CQ5_Portlet/cqbridge/static/{id}.gif" alt="{text}"
title="{text}"/>

 </a>
</div>

安裝自定義佈局

要安裝自定義佈局,請訪問portlet的OSGI Web控制台​Bundles​部分並上載該包。

套件

如果您需要上傳或建立安裝的套件,請參閱AEM檔案中的套件管理器以取得詳細指示。

所有連結會重寫為在入口網站內容中運作。 預設情況下,會使用包含呈現參數的連結。 可將Portal Director HTML重寫器設定為改用動作連結。

您也可以定義要查詢的其他請求參數,以顯示內容路徑。 例如,如果有從外部連結至特定內容,這個功能就很實用。

此外, Portal Director HTML重寫器可以設定為連結重寫定義的規則運算式清單。 例如,如果您有外部系統的相對連結,則應將其新增至此排除清單。

本土化

AEM內容portlet具有內置的本地化功能,可確保來自AEM的內容使用正確的語言。

這需要兩個步驟來完成:

  1. 門戶目錄區域設定檢測器通過從門戶獲取區域設定來檢測門戶用戶的區域設定。 必須以AEM中可用語言的清單來設定此服務。
  2. Portal Director地區設定處理常式會處理目前請求的本地化。 它會取用所請求內容的路徑,例如/content/geometrixx/en/company.html,並根據設定,以使用者的實際地區設定重新寫入​en

Portal Director Locale Handler可以配置路徑以檢查區域設定資訊 — 通常這包括/content下的所有內容以及路徑中區域設定資訊的位置。 依預設,地區設定處理常式會遵循在AEM中重新建構多語言網站的慣例。

如果您的網站沒有處理路徑中地區設定資訊的嚴格規則,則可以將地區設定處理常式取代為您自己的實施。

可選OSGi服務

可選的OSGi服務可以實施以自定義Portlet的各個部分。 每個服務都對應至Java介面。 此介面可通過包實施並部署到portlet中。

RequestTracker 每當Portlet顯示內容時,請求追蹤器就會收到通知。 這允許您跟蹤Portlet的調用。
InvocationContextListener 在對Portlet的每個請求的開始和結束時調用的偵聽器。 監聽程式可用於更改或添加當前請求的資訊。
ErrorHandler 呈現階段期間錯誤的自訂錯誤處理常式。
HttpProcessor 此服務可用來將資訊新增至AEM的每個http叫用。
PortletAction 向portlet添加自己的操作 — 可以通過portlet操作連結調用此操作。
PortletDecoratorService 此服務可用於裝飾portlet的內容。
ResourceProvider 添加您自己的資源提供程式,以通過portlet資源連結將某些資源傳送至客戶端。
TextMapper 可讓您後續處理HTML、CSS和Javascript檔案。
工具欄按鈕 將您自己的按鈕新增至工具列。
UrlMapper 新增服務以套用自訂URL對應或重新寫入。
UserInfoProvider 新增您自己的使用者相關資訊。 此服務可用於從門戶獲取到門戶的資訊。

替換預設服務

以下服務在內容portlet中具有預設實施(具有相應的Java介面)。 要自定義,需要將包含新服務實施的捆綁包部署到portlet應用程式中。

實作此類服務時,請務必將服務的​service.ranking​屬性設為正值。 預設實施使用排名 0 ,Portlet使用排名最高的服務。

名稱 說明 預設行為
驗證器 提供驗證資訊給AEM 對製作和發佈使用可設定的技術使用者。 或可使用SSO。
HTMLRewriter 重寫連結、影像等 將AEM連結重新寫入入口連結,可透過UrlMapper和TextMapper擴充
HttpClientService 處理所有http連接 標準實作
LocaleHandler 處理區域設定資訊 重寫與地區相關的內容連結。
LocaleDetector 檢測用戶的區域設定。 使用門戶提供的地區設定。
PrivilegeManager 檢查用戶權限 如果允許使用者編輯內容,則檢查對製作例項的存取權
工具欄呈現器 轉譯工具列 新增工具列功能

Portlet事件

Portlet API(JSR-286)指定Portlet事件。 AEM內容Portlet具有整合橋,將AEM Portlet事件作為OSGi事件分發到Portlet中 — 這使得處理Portlet事件可插拔。

如果要處理特定事件,請在部署描述符中將這些事件聲明為接收事件(或通過門戶伺服器配置),並實施聲明EventHandler介面的OSGi服務(請參閱OSGi EventAdmin規範)。

每當Portlet事件發生時,都會調用您的處理程式發送特定的OSGi事件。 處理程式獲取所有上下文資訊,並可以相應地更新Portlet的狀態或發送新事件。 基本上,在handle方法內,可以使用portlet事件階段的所有功能。

使用AEM作為入口

使用Portlet元件將Portlet窗口添加到AEM頁。 您安裝到應用程式伺服器的共用庫使Portlet元件能夠檢測已部署的Portlet應用程式。

若要使用AEM作為入口網站,請執行下列工作:

  1. 安裝Portlet元件和共用庫。
  2. 將Portlet元件添加到Sidekick。
  3. 配置並部署Web應用程式,該應用程式包含要顯示在Portal元件中的Portlet。
  4. 將Portlet元件添加到頁中,並選擇要顯示的Portlet。
注意

只有當AEM部署為Web應用程式時,才能使用Portlet元件。 (請參閱使用應用程式伺服器安裝AEM。)

安裝Portlet元件

AEM Quickstart JAR檔案包含portlet元件檔案。 若要取得檔案(cq-portlet-components.zip),您可以執行快速入門,或解壓縮內容。

  1. 執行或解壓縮Quickstart JAR檔案的內容,並相應地找到cq-portlet-components.zip檔案:

    • 執行快速入門:crx-quickstart/opt/portal
    • 提取快速入門內容:靜態/選擇/入口網站
  2. 開啟已部署至應用程式伺服器之CQ5製作執行個體的套件管理器。 (https://appserverhost:port/cq5author/crx/packmgr)

  3. 使用包管理器上載並安裝 cq-portlets-components.zip包。

    該軟體包將cq-portlet-director-sharedlibs-x.x.x.jar安裝在儲存庫的/libs/portal/director資料夾中。

  4. 將cq-portlet-director-sharedlibs-x.x.x.jar複製到硬碟。 使用任何方法獲取檔案,例如FileVault或WebDAV客戶端。

  5. 將cq-portlet-director-sharedlibs.x.x.x.jar檔案移動到應用程式伺服器的共用庫資料夾,以便這些類可用於部署的portlet應用程式。

將Portlet元件添加到Sidekick

將portlet元件添加到段落系統,以便供作者使用。

  1. 在Sidekick中,按一下尺標表徵圖以進入「設計」模式。

  2. 在第一段上方的Design of par標題旁,按一下​編輯

  3. 在​General​元件類別中,選擇Portlet元件旁邊的複選框,然後按一下OK。

chlimage_1-20

配置和部署Portlet應用程式

將portlet部署到應用程式伺服器Web容器,以便Portal元件可以使用這些Portlet。 在部署portlet應用程式之前,您需要配置應用程式,以便載入AEM portal容器servlet。 此配置使Portlet元件能夠訪問Portlet。

  1. 提取Portlet應用程式WAR檔案的內容。

    提示: jar xf nameofapp **.war命令提取檔案。

  2. 在文字編輯器中開啟web.xml檔案。

  3. 在Web-app元素內新增下列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>
    
  4. 保存web.xml檔案並重新包裝WAR檔案。

    提示:jar cvf nameofapp.war * 令將當前目錄的內容添加到nameofapp.war檔案中。

  5. 將portlet應用程式部署到應用程式伺服器。 如需詳細資訊,請參閱應用程式伺服器的檔案。

向AEM頁添加portlet

使用Portal元件將Portlet窗口添加到您的網頁。 使用元件屬性指定要顯示的Portlet。

  1. 在網頁上,將​Portlet​元件從Sidekick中的「常規」組拖到該頁。

    注意

    將元件拖曳至頁面後,請重新載入頁面,以確保其正常運作。

  2. 按兩下元件以開啟Portlet屬性。

  3. 在​Portlet實體​下拉菜單中,從清單中選擇該portlet。

  4. 根據是否要查看Portlet的標題欄,選擇或清除​隱藏標題欄​複選框。

  5. 在​Portlet窗口​欄位中,根據需要輸入唯一的Portlet窗口ID。

    注意

    如果您打算在同一頁上使用同一Portlet多次,請為每個Portlet指定不同的窗口ID。

  6. 按一下​「確定」。Portlet會顯示在您的AEM頁面上。

    chlimage_1-12

在Portlet中安裝、配置和使用AEM

若要存取AEM WCM提供的內容,入口網站伺服器必須與AEM Portal Director Portlet搭配使用。 要執行此操作,請使用本節中提供的步驟,安裝、配置Portlet並將Portlet添加到門戶頁。

預設情況下,Portlet將連接到localhost:4503處的發佈實例,以及localhost:4502處的作者實例。 在部署Portlet期間可以更改這些值。 入口控制器在/libs/portal/directory下的儲存庫中作為內容。 您需要先下載應用程式戰爭檔案,才能使用它。

下載戰爭檔案

  1. 使用Webdav或CRXDE Lite,導覽至/libs/portal/director。

  2. 下載​cq-portlet-webapp.war

注意

雖然這些程式盡可能通用,但這些程式以Websphere入口網站為例;請注意,其他Web門戶的程式各不相同。 儘管這些步驟在所有Web門戶上基本相同,但您需要為特定Web門戶重新調整這些步驟的用途。

安裝Portlet

要安裝Portlet,請執行以下操作:

  1. 以管理員權限登入入口網站。

  2. 導航到Web門戶的Portlet Management部分。

  3. 按一下「安裝」 ,然後瀏覽到您下載的AEM portlet應用程式(cq-portlet-webapp.war),並輸入有關portlet的其他重要資訊。

    對於其他基本Portlet資訊,您可以接受預設值或更改值。 如果您接受預設值,則可在https://<wps-host>:<port>/wps/PA_CQ5_Portlet找到Portlet。 Portlet提供的OSGi管理控制台位於https://<wps-host>:<port>/wps/ PA_CQ5_Portlet/cqbridge/system/console(預設用戶名/密碼為admin/admin)。

  4. 通過選擇該選項或複選框並保存更改,確保Portlet應用程式自動啟動。 您會看到訊息,表示您的安裝成功。

配置Portlet

安裝Portlet後,您需要配置它,以便它知道基礎AEM實例(製作和發佈)的URL。 您也可以設定其他選項。

要配置Portlet:

  1. 在應用伺服器的Portal管理窗口中,導航到Portlet管理,其中列出了所有Portlet,然後選擇AEM Portal Director Portlet。

  2. 視需要配置Portlet。 例如,您可能需要變更製作和發佈例項的URL,以及開始路徑的URL。 Portlet首選項中介紹了預設配置。

    注意

    如果將Portlet配置為連接到AEM製作和發佈運行在不同於 /​的上下文路徑上的實例,則需要在這些AEM實例的Html庫管理器配置(例如,通過Felix Webconsole)或編輯中啟用強制​CQUrlInfo,並且首選項對話框將不會顯示。

  3. 將設定變更儲存至應用程式伺服器。

  4. 導覽至Portlet的OSGI管理控制台。 預設位置為https://<wps-host>:<port>/wps/PA_CQ5_Portlet/cqbridge/system/console/configMgr。 預設的使用者名稱/密碼為​admin/admin

  5. 選取​Day Portal Director CQ伺服器設定​設定並編輯下列值:

    • 作者基礎URL:AEM製作例項的基礎URL。
    • 發佈基礎URL:AEM發佈例項的基礎URL。
    • 作者是作為發佈使用:製作例項是否用作發佈例項(供開發使用)?

    chlimage_1-13

  6. 按一下「儲存」。您現在可以將Portlet添加到門戶頁面並使用門戶。

內容URL

從AEM請求內容時,Portlet使用當前顯示模式(發佈或製作)和當前路徑來組合完整的URL。 使用預設值時,第一個url為http://localhost:4503/content/geometrixx/en.portlet.htmlhtmlSelector的值會自動新增至擴充功能之前的URL。

如果Portlet切換到幫助模式,並且選擇了appendHelpViewModeAsSelector,則help選擇器也會附加,例如http://localhost:4503/content/geometrixx/en.portlet.html.help。 如果Portlet窗口最大化,並且選擇了appendMaxWindowStateAsSelector,則選擇器也附加,例如http://localhost:4503/content/geometrixx/en.portlet.max.help

可在AEM中評估選取器,而不同範本可用於不同選取器。

在AEM中使用內容Url對應

通常起始路徑會直接指向AEM中的內容。 但是,如果要在AEM中而不是在Portlet首選項中維護起始路徑,則可以將起始路徑指向AEM中的內容映射,如/var/portlets。 在這種情況下,在AEM中運行的指令碼可以使用portlet中提交的資訊來決定啟動URL。 它應會發出重新導向至正確的URL。

將Portlet添加到門戶頁

要將Portlet添加到門戶頁,請執行以下操作:

  1. 請確定您位於應用程式伺服器的管理視窗中,並導覽至您管理頁面的位置。 (例如,在WebSphere 6.1中,按一下「管理頁面」)。

  2. 選擇Portlet的名稱,然後選擇現有頁或建立新頁。

  3. 編輯頁面配置。

  4. 選擇該portlet並將其添加到容器中。

  5. 儲存您的變更。

使用Portlet

要訪問添加到Portlet的頁面,請執行以下操作:

  1. 在portlet的個性化菜單中,按照在門戶中配置Portlet的方式配置Portlet。
  2. 開啟配置(Portlet顯示在Portlet配置中配置的發佈啟動URL),並根據需要進行編輯,然後保存它們。

本頁內容