使用magento的产品列表问题非常缓慢

时间:2014-05-09 12:50:34

标签: magento magento-1.8

我有一个名为新到货的类别,它有5个子类别。我创建了一个名为new-arrivals.phtml的自定义视图。我使用magento中的以下代码创建了自定义静态块

{{block type="core/template" template="custom/new-arrivals.phtml"}}

然后从类别设置我将显示设置> CMS Block更改为我创建的此cms块。 显示模式仅为静态阻止

这个视图带来了New Arrivals(包,上衣,鞋等等)的所有子类别和它的产品.. Like on this website正如你在这个网站上看到的那样,它非常快,但在我的网站上有我的代码它不是。 Here it is...

如何更快地加载此负载。缓存和所有内容都已启用。我认为我的代码有问题。谢谢你的帮助。

这是new-arrivals.phtml内容:

Magento CE 1.8.1

<?php
            //I load all the subcategories here
            $category = Mage::getSingleton('catalog/layer')->getCurrentCategory();
            $categories = $category->getCollection()
                    ->addAttributeToSelect(array('name', 'thumbnail'))
                    ->addAttributeToFilter('is_active', 1)
                    ->addIdFilter($category->getChildren())
            ?>

                <?php foreach ($categories as $category): ?>
                    <div class="page-title category-title">
                        <h1>
                            <a href="<?php echo $category->getUrl() ?>">
                            <span><?php echo $category->getName() ?></span>
                            </a>
                        </h1>
                        <?php
                            // here I load all the products for each category      
                            $_helper = $this->helper('catalog/output');                  
                            $category = Mage::getModel('catalog/category')->load($category->getId());
                            $_productCollection = $category->getProductCollection()->addCategoryFilter($category)
                            ->addAttributeToSelect('*') // add all attributes - optional
                            ->addAttributeToFilter('status', 1) // enabled
                            ->addAttributeToFilter('visibility', 4) //visibility in catalog,search
                            ->addAttributeToSort('date_added', 'ASC');

                        ?>
                         <div class="product-count"><?php echo $count; ?> <?php echo $this->__('Products'); ?></div>
            <?php if(!$_productCollection->count()): ?>
            <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
            <?php else: ?>
            <div class="category-products">    


                <?php // Grid Mode ?>
                <?php
                    $_span = 'span3';
                    $_grid_pro = 4;
                ?>

                <?php $_collectionSize = $_productCollection->count() ?>
                <?php $_columnCount = $_grid_pro; //$this->getColumnCount(); ?>
                <?php $i=0; foreach ($_productCollection as $_product): ?>
                    <?php if ($i++%$_columnCount==0): ?>
<?php // all the others stuff ....... ?>

1 个答案:

答案 0 :(得分:0)

  1. 使用ajax或jquery加载此文件。
  2. 第二个你在页脚上运行你的代码并使用jquery或java脚本创建一个变量,你将在特定的div中显示你的所有数据,例如像这样

    if (count($_subcategories) > 0){
        $top_menu .= '<ul>';
        foreach($_subcategories as $_subcategory){
        $prodCollection = Mage::getModel('catalog/category')-      >load($_subcategory->getId())
                    ->getProductCollection()
                    ->addAttributeToSelect('*')
                    ->addAttributeToFilter('type_id', array('eq' => 'grouped'))
                    ->addAttributeToFilter('no_to_show', array('F' => 78));
                     if($prodCollection->count() !=0){
                    $top_menu .= '<li'; if($current_category == $_subcategory->getId()){$top_menu .= ' id="activesub"';}$top_menu .= '><a href="'.$_helper->getCategoryUrl($_subcategory).'">'.$_subcategory->getName().'</a>';
                    $_subcategories = Mage::getModel('catalog/category')->load($_subcategory->getId());
                    $_childsub = $_subcategories->getChildrenCategories(); 
                            $CatTotalCount = count($_childsub); 
                            if($cntr == 0){
                                $firstCount = $CatTotalCount;
                            }
                            if($firstCount >= 7){
                                $loopCount = ($firstCount-1);
                            }else{
                                $loopCount = 6;
                            }
                    if($CatTotalCount >0){
                    $top_menu .= '<ul>';
                    $secCntr = 0;
                        foreach($_childsub as $_child_subcat){
                            $prodCollection2 = Mage::getModel('catalog/category')->load($_child_subcat->getId())->getProductCollection()->addAttributeToSelect('*')->addAttributeToFilter('type_id', array('eq' => 'grouped'))->addAttributeToFilter('no_to_show', array('F' => 78));
    
                            if( $secCntr>$loopCount){ 
                                $secCntr = 0;
                                    $top_menu .= '</ul><ul>';
                                }
                                $secCntr++;
                            if($prodCollection2->count() !=0):
                                $top_menu .= '<li'; if($current_category == $_child_subcat->getId()){$top_menu .= ' id="activesub"';}$top_menu .= '><a href="'.$_helper->getCategoryUrl($_child_subcat).'">'.$_child_subcat->getName().'</a></li>';
                                endif;
                           }                            }
                    }
                $top_menu .= '</ul></li>';
            $cntr++;
             }
             $top_menu .= '</ul>';
     }
    

        jQuery(document).ready(function(){     document.getElementById(&#39; top_menus&#39;)。innerHTML =&#39;&#39 ;;    jQuery的(&#39;#兆菜单-8&#39)。dcMegaMenu({    rowItems:&#39; 3&#39;,    速度:&#39;快速&#39;,    效果:&#39;淡出&#39;    });    });