📄 productdetail.ftl
字号:
</#if>
</#if>
</form>
<#if shoppingLists?has_content>
<hr class="sepbar">
<form name="addToShoppingList" method="post" action="<@ofbizUrl>/addItemToShoppingList</@ofbizUrl>">
<input type="hidden" name="productId" value="${requestParameters.product_id}">
<select name="shoppingListId" class="selectBox">
<#list shoppingLists as shoppingList>
<option value="${shoppingList.shoppingListId}">${shoppingList.listName}</option>
</#list>
</select>
<input type="text" size="5" class="inputBox" name="quantity" value="1">
<a href="javascript:document.addToShoppingList.submit();" class="buttontext">[${uiLabelMap.EcommerceAddtoShoppingList}]</a>
</form>
</#if>
<#-- Prefill first select box (virtual products only) -->
<#if requestAttributes.variantTree?exists && 0 < requestAttributes.variantTree.size()>
<script language="JavaScript">eval("list" + "${requestAttributes.featureOrderFirst}" + "()");</script>
</#if>
<#-- Swatches (virtual products only) -->
<#if requestAttributes.variantSample?exists && 0 < requestAttributes.variantSample.size()>
<#assign imageKeys = requestAttributes.variantSample.keySet()>
<#assign imageMap = requestAttributes.variantSample>
<p> </p>
<table cellspacing="0" cellpadding="0">
<tr>
<#assign indexer = 0>
<#list imageKeys as key>
<#assign swatchProduct = imageMap.get(key)>
<#assign imageUrl = Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(swatchProduct, "SMALL_IMAGE_URL", request)?if_exists>
<#if swatchProduct?exists && imageUrl?exists>
<td align="center" valign="bottom">
<a href="#"><img src="<@ofbizContentUrl>${requestAttributes.contentPathPrefix?if_exists}${imageUrl}</@ofbizContentUrl>" border="0" width="60" height="60" onclick="javascript:getList('${requestAttributes.featureOrderFirst}','${indexer}',1);"></a>
<br>
<a href="#" class="buttontext" onclick="javascript:getList('${requestAttributes.featureOrderFirst}','${indexer}',1);">${key}</a>
</td>
<#assign indexer = indexer + 1>
</#if>
</#list>
</tr>
</table>
</#if>
</td>
</tr>
<tr><td colspan="2"><hr class='sepbar'></td></tr>
<#-- Long description of product -->
<tr>
<td colspan="2">
<div class="tabletext">${productContentWrapper.get("LONG_DESCRIPTION")?if_exists}</div>
</td>
</tr>
<tr><td colspan="2"><hr class='sepbar'></td></tr>
<#-- Any attributes/etc may go here -->
<#-- Product Reviews -->
<tr>
<td colspan="2">
<div class="tableheadtext">${uiLabelMap.EcommerceCustomerReviews}:</div>
</td>
</tr>
<tr><td colspan="2"><hr class='sepbar'></td></tr>
<#if requestAttributes.productReviews?has_content>
<#list requestAttributes.productReviews as productReview>
<#assign postedUserLogin = productReview.getRelatedOne("UserLogin")>
<#assign postedPerson = postedUserLogin.getRelatedOne("Person")>
<tr>
<td colspan="2">
<table border="0" width="100%" cellpadding="0" cellspacing='0'>
<tr>
<td>
<div class="tabletext"><b>${uiLabelMap.CommonBy}: </b><#if productReview.postedAnonymous?default("N") == "Y">${uiLabelMap.EcommerceAnonymous}<#else>${postedPerson.firstName} ${postedPerson.lastName}</#if></div>
</td>
<td>
<div class="tabletext"><b>${uiLabelMap.CommonOn}: </b>${productReview.postedDateTime?if_exists}</div>
</td>
<td>
<div class="tabletext"><b>${uiLabelMap.EcommerceRanking}: </b>${productReview.productRating?if_exists?string}</div>
</td>
</tr>
<tr>
<td colspan="3">
<div class="tabletext"> </div>
</td>
</tr>
<tr>
<td colspan="3">
<div class="tabletext">${productReview.productReview?if_exists}</div>
</td>
</tr>
<tr><td colspan="3"><hr class='sepbar'></td></tr>
</table>
</td>
</tr>
</#list>
<tr>
<td colspan="2">
<a href="<@ofbizUrl>/reviewProduct?category_id=${requestAttributes.categoryId?if_exists}&product_id=${product.productId}</@ofbizUrl>" class="buttontext">Review This Product!</a>
</td>
</tr>
<#else>
<tr>
<td colspan="2">
<div class="tabletext">${uiLabelMap.ProductProductNotReviewedYet}.</div>
</td>
</tr>
<tr>
<td colspan="2">
<a href="<@ofbizUrl>/reviewProduct?category_id=${requestAttributes.categoryId?if_exists}&product_id=${product.productId}</@ofbizUrl>" class="buttontext">Be The First To Review This Product!</a>
</td>
</tr>
</#if>
</table>
<#-- Upgrades/Up-Sell/Cross-Sell -->
<#macro associated assocProducts beforeName showName afterName formNamePrefix >
<#if assocProducts?has_content>
<tr><td> </td></tr>
<tr><td colspan="2"><div class="head2">${beforeName?if_exists}<#if showName == "Y">${productValue.productName}</#if>${afterName?if_exists}</div></td></tr>
<tr><td><hr class='sepbar'></td></tr>
<#list assocProducts as productAssoc>
<tr><td>
<div class="tabletext">
<a href='<@ofbizUrl>/product/~product_id=${productAssoc.productIdTo?if_exists}</@ofbizUrl>' class="buttontext">
${productAssoc.productIdTo?if_exists}
</a>
- <b>${productAssoc.reason?if_exists}</b>
</div>
</td></tr>
${setRequestAttribute("optProductId", productAssoc.productIdTo)}
${setRequestAttribute("listIndex", listIndex)}
${setRequestAttribute("formNamePrefix", formNamePrefix)}
<tr>
<td>
${pages.get("/entry/catalog/productsummary.ftl")}
</td>
</tr>
<#local listIndex = listIndex + 1>
<tr><td><hr class='sepbar'></td></tr>
</#list>
${setRequestAttribute("optProductId", "")}
</#if>
</#macro>
<#assign productValue = product>
<#assign listIndex = 1>
${setRequestAttribute("productValue", productValue)}
<table width='100%'>
<#-- obsolete -->
<@associated assocProducts=requestAttributes.obsoleteProducts beforeName="" showName="Y" afterName=" is made obsolete by these products:" formNamePrefix="obs"/>
<#-- cross sell -->
<@associated assocProducts=requestAttributes.crossSellProducts beforeName="" showName="N" afterName="You might be interested in these as well:" formNamePrefix="cssl"/>
<#-- up sell -->
<@associated assocProducts=requestAttributes.upSellProducts beforeName="Try these instead of " showName="Y" afterName=":" formNamePrefix="upsl"/>
<#-- obsolescence -->
<@associated assocProducts=requestAttributes.obsolenscenseProducts beforeName="" showName="Y" afterName=" makes these products obsolete:" formNamePrefix="obce"/>
</table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -