📄 productdetail.ftl
字号:
<a href="<@ofbizUrl>category/~category_id=${categoryId?if_exists}</@ofbizUrl>" class="linktext">${category.description?if_exists}</a> <#if nextProductId?exists> | <a href="<@ofbizUrl>product/~category_id=${categoryId?if_exists}/~product_id=${nextProductId?if_exists}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonNext}</a> </#if> </td> </tr> </#if> <tr><td colspan="2"><hr class="sepbar"/></td></tr> <#-- Product image/name/price --> <tr> <td align="left" valign="top" width="0"> <#assign productLargeImageUrl = productContentWrapper.get("LARGE_IMAGE_URL")?if_exists> <#-- remove the next two lines to always display the virtual image first (virtual images must exist) --> <#if firstLargeImage?has_content> <#assign productLargeImageUrl = firstLargeImage> </#if> <#if productLargeImageUrl?has_content> <a href="javascript:popupDetail();"><img src="<@ofbizContentUrl>${contentPathPrefix?if_exists}${productLargeImageUrl?if_exists}</@ofbizContentUrl>" name="mainImage" vspace="5" hspace="5" border="0" width="200" align="left"></a> </#if> </td> <td align="right" valign="top"> <div class="head2">${productContentWrapper.get("PRODUCT_NAME")?if_exists}</div> <div class="tabletext">${productContentWrapper.get("DESCRIPTION")?if_exists}</div> <div class="tabletext"><b>${product.productId?if_exists}</b></div> <#-- example of showing a certain type of feature with the product --> <#if sizeProductFeatureAndAppls?has_content> <div class="tabletext"> <#if (sizeProductFeatureAndAppls?size == 1)> Size: <#else> Sizes Available: </#if> <#list sizeProductFeatureAndAppls as sizeProductFeatureAndAppl> ${sizeProductFeatureAndAppl.description?default(sizeProductFeatureAndAppl.abbrev?default(sizeProductFeatureAndAppl.productFeatureId))}<#if sizeProductFeatureAndAppl_has_next>,</#if> </#list> </div> </#if> <#-- for prices: - if price < competitivePrice, show competitive or "Compare At" price - if price < listPrice, show list price - if price < defaultPrice and defaultPrice < listPrice, show default - if isSale show price with salePrice style and print "On Sale!" --> <#if price.competitivePrice?exists && price.price?exists && price.price?double < price.competitivePrice?double> <div class="tabletext">${uiLabelMap.ProductCompareAtPrice}: <span class="basePrice"><@ofbizCurrency amount=price.competitivePrice isoCode=price.currencyUsed/></span></div> </#if> <#if price.listPrice?exists && price.price?exists && price.price?double < price.listPrice?double> <div class="tabletext">${uiLabelMap.ProductListPrice}: <span class="basePrice"><@ofbizCurrency amount=price.listPrice isoCode=price.currencyUsed/></span></div> </#if> <#if price.listPrice?exists && price.defaultPrice?exists && price.price?exists && price.price?double < price.defaultPrice?double && price.defaultPrice?double < price.listPrice?double> <div class="tabletext">${uiLabelMap.ProductRegularPrice}: <span class="basePrice"><@ofbizCurrency amount=price.defaultPrice isoCode=price.currencyUsed/></span></div> </#if> <#if price.specialPromoPrice?exists> <div class="tabletext">Special Promo Price: <span class="basePrice"><@ofbizCurrency amount=price.specialPromoPrice isoCode=price.currencyUsed/></span></div> </#if> <div class="tabletext"> <b> <#if price.isSale?exists && price.isSale> <span class="salePrice">${uiLabelMap.EcommerceOnSale}!</span> <#assign priceStyle = "salePrice"> <#else> <#assign priceStyle = "regularPrice"> </#if> ${uiLabelMap.EcommerceYourPrice}: <#if "Y" = product.isVirtual?if_exists> ${uiLabelMap.CommonFrom} </#if><span class="${priceStyle}"><@ofbizCurrency amount=price.price isoCode=price.currencyUsed/></span> <#if product.productTypeId?if_exists == "ASSET_USAGE"> <#if product.reserv2ndPPPerc?exists && product.reserv2ndPPPerc != 0><br/><span class="${priceStyle}">Price for the 2nd <#if !product.reservNthPPPerc?exists || product.reservNthPPPerc == 0>until the ${product.reservMaxPersons}</#if> person: <@ofbizCurrency amount=product.reserv2ndPPPerc*price.price/100 isoCode=price.currencyUsed/></span></#if> <#if product.reservNthPPPerc?exists &&product.reservNthPPPerc != 0><br/><span class="${priceStyle}">Price for the <#if !product.reserv2ndPPPerc?exists || product.reserv2ndPPPerc == 0>second <#else> 3rd </#if> until the ${product.reservMaxPersons}th person, each: <@ofbizCurrency amount=product.reservNthPPPerc*price.price/100 isoCode=price.currencyUsed/></span></#if> <#if (!product.reserv2ndPPPerc?exists || product.reserv2ndPPPerc == 0) && (!product.reservNthPPPerc?exists || product.reservNthPPPerc == 0)><br/>Maximum ${product.reservMaxPersons} persons.</#if> </#if> </b> </div> <#if price.listPrice?exists && price.price?exists && price.price?double < price.listPrice?double> <#assign priceSaved = price.listPrice?double - price.price?double> <#assign percentSaved = (priceSaved?double / price.listPrice?double) * 100> <div class="tabletext">${uiLabelMap.EcommerceSave}: <span class="basePrice"><@ofbizCurrency amount=priceSaved isoCode=price.currencyUsed/> (${percentSaved?int}%)</span></div> </#if> <#-- show price details ("showPriceDetails" field can be set in the screen definition) --> <#if (showPriceDetails?exists && showPriceDetails?default("N") == "Y")> <#if price.orderItemPriceInfos?exists> <#list price.orderItemPriceInfos as orderItemPriceInfo> <div class="tabletext">${orderItemPriceInfo.description?if_exists}</div> </#list> </#if> </#if> <#-- Included quantities/pieces --> <#if product.piecesIncluded?exists && product.piecesIncluded?long != 0> <div class="tabletext"> ${uiLabelMap.EcommercePieces}: ${product.piecesIncluded} </div> </#if> <#if (product.quantityIncluded?exists && product.quantityIncluded?double != 0) || product.quantityUomId?has_content> <#assign quantityUom = product.getRelatedOneCache("QuantityUom")?if_exists/> <div class="tabletext"> ${uiLabelMap.CommonQuantity}: ${product.quantityIncluded?if_exists} ${((quantityUom.abbreviation)?default(product.quantityUomId))?if_exists} </div> </#if> <#if (product.weight?exists && product.weight?double != 0) || product.weightUomId?has_content> <#assign weightUom = product.getRelatedOneCache("WeightUom")?if_exists/> <div class="tabletext"> ${uiLabelMap.CommonWeight}: ${product.weight?if_exists} ${((weightUom.abbreviation)?default(product.weightUomId))?if_exists} </div> </#if> <#if (product.productHeight?exists && product.productHeight?double != 0) || product.heightUomId?has_content> <#assign heightUom = product.getRelatedOneCache("HeightUom")?if_exists/> <div class="tabletext"> ${uiLabelMap.CommonHeight}: ${product.productHeight?if_exists} ${((heightUom.abbreviation)?default(product.heightUomId))?if_exists} </div> </#if> <#if (product.productWidth?exists && product.productWidth?double != 0) || product.widthUomId?has_content> <#assign widthUom = product.getRelatedOneCache("WidthUom")?if_exists/> <div class="tabletext"> ${uiLabelMap.CommonWidth}: ${product.productWidth?if_exists} ${((widthUom.abbreviation)?default(product.widthUomId))?if_exists} </div> </#if> <#if (product.productDepth?exists && product.productDepth?double != 0) || product.depthUomId?has_content> <#assign depthUom = product.getRelatedOneCache("DepthUom")?if_exists/> <div class="tabletext"> ${uiLabelMap.CommonDepth}: ${product.productDepth?if_exists} ${((depthUom.abbreviation)?default(product.depthUomId))?if_exists} </div> </#if> <#if daysToShip?exists> <div class="tabletext"><b>${uiLabelMap.ProductUsuallyShipsIn} <font color="red">${daysToShip}</font> ${uiLabelMap.CommonDays}!<b></div> </#if> <#-- tell a friend --> <div class="tabletext"> </div> <div class="tabletext"> <a href="javascript:popUpSmall('<@ofbizUrl>tellafriend?productId=${product.productId}</@ofbizUrl>','tellafriend');" class="buttontext">${uiLabelMap.CommonTellAFriend}</a> </div> <br/> <#if disFeatureList?exists && 0 < disFeatureList.size()> <p> </p> <#list disFeatureList as currentFeature> <#assign disFeatureType = currentFeature.getRelatedOne("ProductFeatureType")/> <div class="tabletext"> <#if disFeatureType.description?exists>${disFeatureType.description}<#else>${currentFeature.productFeatureTypeId}</#if>: ${currentFeature.description} </div> </#list> <div class="tabletext"> </div> </#if> <form method="post" action="<@ofbizUrl>additem<#if requestAttributes._CURRENT_VIEW_?exists>/${requestAttributes._CURRENT_VIEW_}</#if></@ofbizUrl>" name="addform" style="margin: 0;"> <#assign inStock = true> <#-- Variant Selection --> <#if product.isVirtual?if_exists?upper_case == "Y"> <#if variantTree?exists && (variantTree.size() > 0)> <#list featureSet as currentType> <div class="tabletext"> <select name="FT${currentType}" class="selectBox" onchange="javascript:getList(this.name, (this.selectedIndex-1), 1);"> <option>${featureTypes.get(currentType)}</option> </select> </div> </#list> <input type="hidden" name="product_id" value="${product.productId}"/> <input type="hidden" name="add_product_id" value="NULL"/> <#else> <input type="hidden" name="product_id" value="${product.productId}"/> <input type="hidden" name="add_product_id" value="NULL"/> <div class="tabletext"><b>${uiLabelMap.ProductItemOutofStock}.</b></div> <#assign inStock = false> </#if> <#else> <input type="hidden" name="product_id" value="${product.productId}"/> <input type="hidden" name="add_product_id" value="${product.productId}"/> <#assign isStoreInventoryNotAvailable = !(Static["org.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryAvailable(request, product, 1.0?double))> <#assign isStoreInventoryRequired = Static["org.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryRequired(request, product)> <#if isStoreInventoryNotAvailable> <#if isStoreInventoryRequired> <div class="tabletext"><b>${uiLabelMap.ProductItemOutofStock}.</b></div> <#assign inStock = false> <#else> <div class="tabletext"><b>${product.inventoryMessage?if_exists}</b></div> </#if> </#if> </#if> </td></tr><tr><td colspan="2" align="right"> <#-- check to see if introductionDate hasnt passed yet --> <#if product.introductionDate?exists && nowTimestamp.before(product.introductionDate)> <p> </p> <div class="tabletext" style="color: red;">${uiLabelMap.ProductProductNotYetMadeAvailable}.</div> <#-- check to see if salesDiscontinuationDate has passed --> <#elseif product.salesDiscontinuationDate?exists && nowTimestamp.after(product.salesDiscontinuationDate)> <div class="tabletext" style="color: red;">${uiLabelMap.ProductProductNoLongerAvailable}.</div> <#-- check to see if the product requires inventory check and has inventory --> <#else> <#if inStock> <#if product.requireAmount?default("N") == "Y"> <#assign hiddenStyle = "tabletext"> <#else> <#assign hiddenStyle = "tabletexthidden"> </#if> <div id="add_amount" class="${hiddenStyle}"> <nobr><b>Amount:</b></nobr> <input type="text" class="inputBox" size="5" name="add_amount" value=""/> </div> <#if product.productTypeId?if_exists == "ASSET_USAGE"> <table width="100%"><tr> <td class="tabletext" nowrap align="right">Start Date<br/>(yyyy-mm-dd)</td><td><input type="text" class="inputBox" size="10" name="reservStart"/><a href="javascript:call_cal(document.addform.reservStart, '${Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().toString().substring(0,10)}');"><img src="/content/images/cal.gif" width="16" height="16" border="0" alt="Calendar"/></a></td> <td class="tabletext" nowrap align="right">End Date<br/>(yyyy-mm-dd)</td><td><input type="text" class="inputBox" size="10" name="reservEnd"/><a href="javascript:call_cal(document.addform.reservEnd, '${Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().toString().substring(0,10)}');"><img src="/content/images/cal.gif" width="16" height="16" border="0" alt="Calendar"/></a></td></tr> <tr> <#--td class="tabletext" nowrap align="right">Number<br/>of days</td><td><input type="textt" class="inputBox" size="4" name="reservLength"/></td></tr><tr><td> </td><td class="tabletext" align="right" nowrap> </td--> <td class="tabletext" nowrap align="right">Number of persons</td><td><input type="text" class="inputBox" size="4" name="reservPersons" value="2"/></td> <td class="tabletext" nowrap align="right">Number of rooms</td><td><input type="text" class="inputBox" size="5" name="quantity" value="1"/></td></tr></table> <#else/>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -