当我们在为magento 开发手机模版的时候常常需要 将详细的图文消息放到另一页面,其中一个目的是
提高加载速度。 例如我们在productController.php 中创建一个新的Action叫做descAction
注:这里不会去提醒你 要重写模块而不是修改core 文件。
产品的信息获取详细看这里
http://blog.csdn.net/m0sh1/article/details/40299847
 
先直接看代码:
 public function descAction(){
        $productId  = (int) $this->getRequest()->getParam('id');
        $_product = $_product=Mage::getModel('catalog/product')->load($productId);
        $_productUrl = $_product->getProductUrl();
        $curPackage = Mage::getSingleton('core/design_package')->getPackageName();
        $curTheme = Mage::getSingleton('core/design_package')->getTheme('frontend');
        if($curPackage === "mobile" && $curTheme === "mobile"){
            $this->loadLayout();
            $this->renderLayout();
        }else{
            $this->_redirectUrl($_productUrl);
        }
    } 
这里之所以做一个if判断 是因为不希望在电脑版的模板中额外分割出来一个产品描述页面。
但是不排除用户从手机访问了描述页面然后复制链接用电脑打开。
 
通过函数
 Mage::getSingleton('core/design_package')->getPackageName();和 
 
 
 Mage::getSingleton('core/design_package')->getTheme('frontend'); 
 
判断当前的package和theme 判断条件中的mobile要根据实际情况自己修改。
创建Block
<?php
class Mobile_Block_Catalog_Product_Desc extends Mage_Catalog_Block_Product_Abstract{
} 
之后我们在对应模板下的layout中找到catalog.xml 加入代码:
    <catalog_product_desc>
        <reference name="root">
            <action method="setTemplate"><template>page/1column.phtml</template></action>
        </reference>
        <reference name="head">
            <action method="addJs"><script>varien/product.js</script></action>
            <action method="addCss"><script>css/media.css</script></action>
        </reference>
        <reference name="content">
            <block type="mobile/catalog_product_desc" name="product.desc" template="catalog/product/desc.phtml">
                <block type="catalog/product_view_description" name="product.description" as="description" template="catalog/product/view/description.phtml">
                </block>
            </block>
        </reference>
    </catalog_product_desc> 
同时创建 desc.phtml 用来前端显示:
 
<?php
    $id = (int) $this->getRequest()->getParam('id');
    $_product=Mage::getModel('catalog/product')->load($id);
?>
<?php echo "Product Info"?>
<div class="product-specs">
    <?php $_description = $_product->getDescription(); ?> // 不考虑带有mobile description
    <?php echo $this->helper('catalog/output')->productAttribute($_product, $_description, 'description') ?>
</div> 
 
至此再加上一些自己实际处理情况的代码就可以了。
 
 
 
                  
                  
                  
                  
                            
本文介绍如何在Magento中为移动端创建专用的产品描述页面,通过重定向和条件判断确保仅在移动设备上显示,提高加载速度及用户体验。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					1364
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            