Magento通过Page页自动展示设有特殊价格日期的产品

在Magento前台的页面显示设置有特殊价格日期的产品的处理办法

1) 新建一个Page页,Design的内容为

<reference name="content">
   <block type="catalog/product_special
" name="product_special
" template="catalog/product/list.phtml">
      <action method="setColumnCount"><column_count>6</column_count></action>
      <action method="setProductsCount"><count>0</count></action>
      <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
         <block type="page/html_pager" name="product_list_toolbar_pager" />
         <action method="setDefaultGridPerPage"><limit>12</limit></action>
         <action method="addPagerLimit"><mode>grid</mode><limit>12</limit></action>
         <action method="addPagerLimit"><mode>grid</mode><limit>24</limit></action>
         <action method="addPagerLimit"><mode>grid</mode><limit>36</limit></action>
         <action method="addPagerLimit"><mode>grid</mode><limit>48</limit></action>
         <action method="addPagerLimit" translate="label"><mode>grid</mode><limit>all</limit><label>All</label></action>
      </block>
      <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>6</count></action>
      <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
   </block>
</reference>

2) 建立文件:app/code/local/Mage/Catalog/Block/Product/Special.php,内容为:

<?php
/*
sjolzy <chen@sjolzy.cn
>
*/
class Mage_Catalog_Block_Product_Special extends Mage_Catalog_Block_Product_List{
   function get_prod_count(){
      Mage::getSingleton('catalog/session')->unsLimitPage();
      return (isset($_REQUEST['limit'])) ? intval($_REQUEST['limit']) : 12;
   }

   function get_cur_page(){
      return (isset($_REQUEST['p'])) ? intval($_REQUEST['p']) : 1;
   }

   protected function _getProductCollection(){
      $todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
      $collection = Mage::getResourceModel('catalog/product_collection');
      $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
      $collection = $this->_addProductAttributesAndPrices($collection)
         ->addStoreFilter()
         ->addAttributeToFilter('special_from_date
', array('date' => true, 'to' => $todayDate))
         ->addAttributeToFilter('special_to_date
', array('or'=> array(
            0 => array('date' => true, 'from' => $todayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
         ), 'left')
         ->addAttributeToSort('special_from_date', 'desc')
         ->setPageSize($this->get_prod_count())
         ->setCurPage($this->get_cur_page());
      $this->setProductCollection($collection);
      return $collection;
   }
}
?>

3) 访问Page的url,已经看见设置有特殊日期和价格的产品了。

 

P, 这个Magento 页面自动显示特殊价格的产品和Magento添加新到产品在CMS Page(带分页)
这篇文章类似,可以参考。

Magento修改产品的排序为降序

Magento默认的产品列表排序
方式是ASC升序。要改为降序即最新产品在前面可以直接修改以下文件:

/app/code/core/Mage/Catalog/Block/Product/List/toolbar.php

搜索“protected $_direction”,将asc改为desc即可。

或者建立/app/code/local
/Mage/Catalog/Block/Product/List/这个目录结构,复制一份toolbar.php过来后再更改。

Magento首页设置显示指定目录的产品

先查看Magento这种设置指定目录产品到首页
的方法的效果图:

Magento首页显示指定目录产品的效果图

1.在Page的home里添加:{{block type="catalog/product_list" category_id="28" products_count="9" template="catalog/product/home.phtml"}}

注:category_id是指定的目录ID,products_count是要显示的产品数。

2.home.phtml的内容为

<?php
    $_products=$this->getLoadedProductCollection();
    $_helper = $this->helper('catalog/output');
?>
<?php if(!$_products->count()): ?>
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
<h2 class="subtitle"><?php echo $this->__('BMD Exclusives') ?></h2>
<?php $_columnCount =3;$limit=isset($this->products_count)?(int)$this->products_count:6; ?>
    <?php $i=0;foreach ($_products as $_product): ?>
    <?php if ($limit<=$i){ break;} ?>
        <?php if ($i++%$_columnCount==0): ?>
        <ul class="products-grid">
        <?php endif ?>
            <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
                <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135) ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
                <h3 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a></h3>
                <?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
                <?php echo $this->getPriceHtml($_product, true, '-new') ?>
                <div class="actions">
                    <?php if($_product->isSaleable()): ?>
                        <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                    <?php else: ?>
                        <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                    <?php endif; ?>
                    <ul class="add-to-links">
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <li><a href="<?php echo $this->getAddToWishlistUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
                        <?php endif; ?>
                        <?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
                            <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
                        <?php endif; ?>
                    </ul>
                </div>
            </li>
        <?php if ($i%$_columnCount==0 || $i==count($_products)): ?>
        </ul>
        <?php endif ?>
    <?php endforeach; ?>
<?php endif; ?>

跟以前Magento首页显示什么什么的一样。。代码备份文

Magento产品导入导出|Magento目录导入导出|Magento Magmi

捣鼓了几天关于Magento产品和目录的导出导入
,总结几点可行方法

  1. 使用外国佬开发的软件:Store Manager for Magento
    , 免费版有10个产品导入数的限制,完全版需要199刀。。哪位朋友有Store Manager for Magento绿色版
    破解版
    的话希望能共享下。。 嘿嘿。
    使用Store Manager for Magento进行Magento产品导入导出和Magento目录导入导出是我认为最简单方便的办法。
     
  2. 使用Magento的开源项目:Magmi
    ,Magmi是让从CSV文件数据流导入导出产品和目录的脚本,功能相当给力,当前最新版本为 Magmi 0.6.17,使用很简单,只要将整个压缩包解压到magento网站根目录就行。通过http://domain/magmi/web/magmi.php这种方式访问。
    关于Magmi的中文资料实在少,不得不在E文里滚来滚去。。
    http://sourceforge.net/apps/phpWebSite/magmi/index.php
    http://www.magentocommerce.com/boards/v/viewthread/201210/
     
  3. 第三种方法就比较手动繁琐了,流程如下
    1,导出产品
        admin > import/export > profiles > export all products 获得产品的csv文件export_all_products.csv

    2,导出产品图片
        将旧站\media\catalog\product\里的所有目录拷到新站的\media\import\这个目录里。

    3,导出产品属性和属性集
        操作数据库,将带eva_前缀的表导出一份到attribute_sets.sql文件中。确保在sql文件里的头部有加上SET FOREIGN_KEY_CHECKS=0;这句。

    4,导出产品目录
        同样操作数据库,导出catalog_category_前缀的表到categories.sql文件。

    经过这4个步骤后,有如下
    export_all_products.csv
    在\media\import\的产品图片
    attribute_sets.sql
    categories.sql

    5,导入产品
        admin > import/export > profiles > import all products 上传export_all_products.csv后执行run

    6,导入属性集
        运行attribute_sets.sql

    7,导入目录
        运行categories.sql
    大概流程如此,期间可能问题7788。。各显神通了。

花了3 4 天都在搞Magento产品和目录的导出导入问题
,实在是相当疼(总站抽出单独站)。

关键是还没比较显著的成就。。匆匆总结以上3种Magento导入导出产品和目录的方法,哪位朋友也碰到这需求的一起探讨一下。

2011.3.15更:

目前已将总站抽出14个独立品牌站,网站管理和速度方面提高了一大截。

历时开发2个月测试1个月的仿Magento外贸商城系统也正式上线!数据从Magento站导入。告别Magento咯。

Magento - 清除清空所有产品

TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_entity`;
TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
INSERT INTO `catalog_product_link_type`(`link_type_id`, `code`) values (1, ‘relation’), (2, ‘bundle’), (3, ‘super’), (4, ‘up_sell’), (5, ‘cross_sell’);
INSERT INTO `catalog_product_link_attribute`(`product_link_attribute_id`, `link_type_id`, `product_link_attribute_code`, `data_type`) values (1, 2, ‘qty’, ‘decimal’), (2, 1, ‘position’, ‘int’), (3, 4, ‘position’, ‘int’), (4, 5, ‘position’, ‘int’), (6, 1, ‘qty’, ‘decimal’), (7, 3, ‘position’, ‘int’), (8, 3, ‘qty’, ‘decimal’);
INSERT INTO `cataloginventory_stock`(`stock_id`, `stock_name`) values (1, ‘Default’);

执行以上SQL脚本即能从数据库中清空Magento所有的产品

备注 - 关于magento通过url添加到购物车的快捷方法

Magento中可以通过访问Url把产品加入购物车。

1 添加简单产品(Simple Product)

(1) 通过产品id:checkout/cart/add?product=[id]&qty=[qty]

(2) 通过产品sku:$cProd = Mage::getModel(\'catalog/product\'); $id = $cProd->getIdBySku(\"$sku\");

2 添加可配置产品(Configurable Product)

checkout/cart/add?product=[id]&qty=[qty]&super_attribute[attribute_id]=[attribute_id]&super_attribute[attribute_id]=attribute_id

其中attribute_id是产品的super attribute所对应的attribute id

 

(注意:super attribute 和 attribute不同, 在编辑Configurable产品时,在添加简单产品时产品的属性就保存在super attribute表中)。

用于生成添加产品到购物车的url函数: