📄 productdetail.ftl
字号:
<#--
* Copyright (c) 2003 The Open For Business Project - www.ofbiz.org
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*@author Andy Zeneski (jaz@ofbiz.org)
*@version $Revision: 1.9 $
*@since 2.1
-->
<#assign uiLabelMap = requestAttributes.uiLabelMap>
<#-- variable setup -->
<#assign product = requestAttributes.product?if_exists>
<#assign price = requestAttributes.priceMap?if_exists>
<#assign productContentWrapper = requestAttributes.productContentWrapper>
<#assign nowTimestamp = Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp()>
<#-- end variable setup -->
<#-- virtual product javascript -->
${requestAttributes.virtualJavaScript?if_exists}
<script language="JavaScript">
<!--
function addItem() {
if (document.addform.add_product_id.value == 'NULL') {
alert("Please enter all the required information.");
return;
} else {
document.addform.submit();
}
}
//-->
</script>
<table border="0" width="100%" cellpadding="2" cellspacing='0'>
<#-- Category next/previous -->
<#if requestAttributes.category?exists>
<tr>
<td colspan="2" align="right">
<#if requestAttributes.previousProductId?exists>
<a href='<@ofbizUrl>/product/~category_id=${requestAttributes.categoryId?if_exists}/~product_id=${requestAttributes.previousProductId?if_exists}</@ofbizUrl>' class="buttontext">[${uiLabelMap.CommonPrevious}]</a> |
</#if>
<a href="<@ofbizUrl>/category/~category_id=${requestAttributes.categoryId?if_exists}</@ofbizUrl>" class="buttontext">${requestAttributes.category.description?if_exists}</a>
<#if requestAttributes.nextProductId?exists>
| <a href='<@ofbizUrl>/product/~category_id=${requestAttributes.categoryId?if_exists}/~product_id=${requestAttributes.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>
<#if productLargeImageUrl?has_content>
<img src='<@ofbizContentUrl>${requestAttributes.contentPathPrefix?if_exists}${productLargeImageUrl?if_exists}</@ofbizContentUrl>' name='mainImage' vspace='5' hspace='5' border='1' width='200' align='left'>
</#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>
<#if product.productId?has_content>
<div class="tabletext"><b>${product.productId}</b> <a href="/catalog/control/EditProduct?productId=${product.productId}&externalLoginKey=${requestAttributes.externalLoginKey?if_exists}" class="buttontext">[Edit Product]</a></div>
</#if>
<#-- for prices:
- if price < listPrice, show
- if price < defaultPrice and defaultPrice < listPrice, show default
- if isSale show price with salePrice style and print "On Sale!"
-->
<#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>
<div class="tabletext">
<b>
<#if price.isSale>
<span class='salePrice'>${uiLabelMap.EcommerceOnSale}!</span>
<#assign priceStyle = "salePrice">
<#else>
<#assign priceStyle = "regularPrice">
</#if>
${uiLabelMap.EcommerceYourPrice}: <#if "Y" = product.isVirtual?if_exists> from </#if><span class='${priceStyle}'><@ofbizCurrency amount=price.price isoCode=price.currencyUsed/></span>
</b>
</div>
<#-- Included quantities/pieces -->
<#if product.quantityIncluded?exists && product.quantityIncluded?double != 0>
<div class="tabletext">${uiLabelMap.EcommerceIncludes}:
${product.quantityIncluded?if_exists}
${product.quantityUomId?if_exists}
</div>
</#if>
<#if product.piecesIncluded?exists && product.piecesIncluded?long != 0>
<div class="tabletext">${uiLabelMap.EcommercePieces}:
${product.piecesIncluded}
</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?exists && product.isVirtual?upper_case == "Y">
<#if requestAttributes.variantTree?exists && 0 < requestAttributes.variantTree.size()>
<p> </p>
<#list requestAttributes.featureSet as currentType>
<div class="tabletext">
<select name="${currentType}" class="selectBox" onChange="getList(this.name, this.options[this.selectedIndex].value)">
<option>${requestAttributes.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}'>
<#if !Static["org.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryAvailable(request, product.productId?string, 1.0?double)>
<#if Static["org.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryRequired(request, product)>
<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>
<p> </p>
<#-- check to see if introductionDate hasn't passed yet -->
<#if product.introductionDate?exists && nowTimestamp.before(product.introductionDate)>
<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>
<a href="javascript:addItem()" class="buttontext"><nobr>[${uiLabelMap.EcommerceAddtoCart}]</nobr></a>
<input type="text" class="inputBox" size="5" name="quantity" value="1">
</#if>
<#if requestParameters.category_id?exists>
<input type='hidden' name='category_id' value='${requestParameters.category_id}'>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -