在本节中,您使用 mobile 访问配置文件检索其他信息时所用的 get data 标记与 Web store 中使用的相同。您要更新 mobile store 的 CachedProductDisplay.jsp 以包括扩展的信息。完成定制后,购物者可以在 Product Display 页面看见 "Import information"。出于演示目的,这被视为 Fourth channel。这只是 Web 渠道的扩展,并且使用了相同的编码技术。
更新移动商店的 CachedProductDisplay.jsp 以包括扩展的信息:
打开 Java EE 透视图。
在 Enterprise Explorer 视图中,展开 Stores > WebContent > MadisonsStorefrontAssetStore > mobile > Snippets > Catalog > CatalogEntryDisplay。
打开 CachedProductDisplay.jsp 文件。
在 CachedProductDisplay.jsp 中,找到以下代码行,它们位于文件的末尾:
<div id="product_description" class="description_container"> <h3><fmt:message key="DESCRIPTION" bundle="${storeText}" />:</h3> <p><c:out value="${product.description.longDescription}" escapeXml="false"/></p>
在 </p> 标记后面添加以下代码:
<%-- Tutorial Changes – BEGIN --%><%-- Create a table to display the value for ProductID, Import & Import Country --%> <wcf:getData var="catentries" type="com.ibm.commerce.catalog.facade. datatypes.CatalogEntryType[]" expressionBuilder="getCatalogEntryWithImport"> <wcf:contextData name="storeId" data="${WCParam.storeId}"/> <wcf:contextData name="catalogId" data="${WCParam.catalogId}"/> <wcf:contextData name="langId" data="${WCParam.langId}"/> <wcf:param name="catalogEntryId" value="${catalogEntryID}"/> <wcf:param name="accessProfile" value="MyCompany_Mobile_Description"/> </wcf:getData> <div> <table id="WC_CachedItemDisplay_Table_1"> <tbody align="center"> <tr align="left" cellpadding="2" cellspacing="2" > <td align="left" cellpadding="2" cellspacing="2"> <p align="left"> <b>Import Information</b></p> </td> </tr> <tr cellpadding="2" cellspacing="2"> <td align="left" cellpadding="2" cellspacing="2"> <table border="1"> <tr style="border:1px" cellpadding="2" cellspacing="2"> <td cellpadding="2" cellspacing="2"><b>ProductID </b></td><td cellpadding="2" cellspacing="2"> <b>Imported</b></td><td cellpadding="2" cellspacing="2"><b>Imported From Country</b></td> </tr> <c:forEach var="catalogEntry" items="${catentries}"> <tr align="center" cellpadding="2" cellspacing="2"> <td>${catalogEntry.catalogEntryIdentifier.uniqueID}</td> <%-- Search the value for UserDataField & only output the value for Imported & Imported From--%> <c:forEach var="
userDataField" items="${catalogEntry. userData.userDataField}"> <c:if test="${userDataField.typedKey == 'imported' || userDataField.typedKey == 'imported_country'}"> <td>${userDataField.typedValue}</td> </c:if> </c:forEach> </tr> </c:forEach> </table> </td> </tr> </tbody> </table> </div><%-- Tutorial Changes – END --%>
保存文件。
打开 Mozilla Firefox 浏览器并设置用户代理为 iPhone 3.0。转到 Tools > Default User Agent 并选择 iPhone 3.0。
注:这将 Mozilla Firefox 浏览器设置为将 iPhone® 用户代理信息发送给 WebSphere Commerce 服务器。WebSphere Commerce 服务器根据用户代理信息识别移动请求。
在浏览器中输入下列 URL:http://localhost/webapp/wcs/stores/servlet/StoreView?storeId=10152。
注:根据您的环境修改 storeId。
单击 Furniture 进入 Category Display 页面。
选中 Lounge Chairs。
单击 White Fabric Roll Arm Chaise。
在 "Next Product" 链接上面,您可以看到 Import information,如图 8 所示。
图 8. Madisons Mobile 页面
如您所见,在移动渠道中,我们已演示了在不同的访问配置文件中重用相同的 get-data 标记。
结束语
本教程演示了如何通过定制 Catalog 服务支持扩展目录项信息,并使用来自多个渠道的服务。您学习了如何执行以下定制:
更新 WebSphere Commerce 架构以存储新的信息。
定制 Catalog 服务,将新信息包括为 CatalogEntry 名词中的用户数据。
无论客户端来自哪个渠道,都会重用相同的服务代码。