閱讀119 返回首頁    go 阿裏雲 go 技術社區[雲棲]


自己寫的magento產品詳細頁添加下一件,上一件產品鏈接

網上商城在產品詳細頁放上一件和下一件產品的鏈接在不少地方看到過,AW出品的收費插件賣89美元,不太值啊,自己寫一個吧,總共就兩個文件,一個php文件和一個phtml文件,剛好組成一個block。

php文件的代碼:

<?php class Mage_Catalog_Block_Product_Pnnavigation extends Mage_Catalog_Block_Product_Abstract { public function getUponProduct($direction) { $visibility = array( Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH, Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG ); $_product = Mage::getResourceModel('reports/product_collection') ->addAttributeToSelect('*') ->addAttributeToFilter('visibility', $visibility) ->addCategoryFilter(Mage::registry('current_category')); if($direction=='previous'){ $_product->getSelect()->where('product_id<?',$this->getProduct()->getId()); }elseif($direction=='next'){ $_product->setOrder('product_id', 'asc'); $_product->getSelect()->where('product_id>?',$this->getProduct()->getId()); } $_product = $_product->getFirstItem(); return $_product; } public function getProduct() { if (!Mage::registry('product') && $this->getProductId()) { $product = Mage::getModel('catalog/product')->load($this->getProductId()); Mage::register('product', $product); } return Mage::registry('product'); } } 

 

phtml的代碼:

<div> <?php if($this->getUponProduct('previous')->getId()):?> <a href="<?php echo $this->getUponProduct('previous')->getProductUrl();?>">上一個</a> <?php endif;?> <?php if($this->getUponProduct('next')->getId()):?> <a href="<?php echo $this->getUponProduct('next')->getProductUrl();?>">下一個</a> <?php endif;?> </div> 

 

php文件放在app/code/local/Mage/Catalog/Block/Product目錄下,phtml文件放在app/design/frontend/default/default/template/catalog/product/view目錄下,當然具體位置取決於你自己的模板。

 

然後在catalog.xml中添加這個block到產品詳細頁

<!-- Product view --> <catalog_product_view translate="label"> <label>Catalog Product View (Any)</label> ………………………………………………………………………… <reference name="content"> <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml"> <block type="catalog/product_pnnavigation" name="pnnavigation" template="catalog/product/view/previousnext.phtml"/> ……………………………………………………………………………………………… 

 

最後打開產品詳細頁的view.phtml,調用這個block,這裏我把它放在產品名的下麵

<div > <div > <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1> </div> <?php echo $this->getChildHtml('pnnavigation') ?> …………………………………………………………………… 

 

OK,現在可以在前台看效果了,至於前台顯示要怎麼弄的好看就是個人自己的事了。

 

說明:我這裏的上一個和下一個是指在當前分類下,相對於當前產品的上一個和下一個產品,以產品ID為順序,當當前不存在上一個或下一個時(比如該分類的第一個或最後一個產品),即不顯示對應的鏈接(比如第一個產品不顯示“上一個”鏈接)。AW的插件貌似可以從最後一個再返回第一個,這個也不難,不過留給下個版本吧,嘿嘿。

 

最後更新:2017-04-02 06:51:35

  上一篇:go QML使MeeGo迅速崛起趕超Android變為可能
  下一篇:go MS SQL 表字段增加,刪除,修改