【问题标题】:Magento pagination productsMagento 分页产品
【发布时间】:2012-05-02 10:00:48
【问题描述】:

我遇到了 Magento 分页问题。

我的 XML 调用的 prudct 列表页面是:

    <block type="catalog/product_list" name="categorieen" as="categorieen" translate="label" template="page/html/categorieen.phtml">
        <label>Categorieën</label>
    </block>

我的产品列表页面的代码是:

    <div id="products">
<?php $_productCollection=$this->getLoadedProductCollection();?>


    <?php // Grid Mode ?>

    <?php $_collectionSize = $_productCollection->count() ?>
    <?php $_columnCount = $this->getColumnCount(); ?>
    <?php $i=0; foreach ($_productCollection as $_product): ?>
         <?php

         $pic = $this->helper('catalog/image')->init($_product, 'thumbnail')->keepFrame(false)->resize(170);
         ?>
         <a href="<?php echo $this->getAddToCartUrl($_product) ?>">
         <div class="block_prod">
           <div class="block_image_prod"><img src="<?php echo $pic; ?>"></div>
           <div class="block_title_prod"><h2><?php echo strtoupper($this->htmlEscape($_product->getName())); ?></h2></div>
        </div>
        </a>
        <?php $i++; endforeach ?>


<?php 

/*
define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO.'/app/Mage.php';
Mage::app();*/

/* Provide a known category id that has children as a test */
$_cat = new Mage_Catalog_Block_Navigation();
$curent_cat = $_cat->getCurrentCategory();
$curent_cat_id = $curent_cat->getId();

$id = $curent_cat_id;

/* Load category by id*/
$cat = Mage::getModel('catalog/category')->load($id);


/*Returns comma separated ids*/
$subcats = $cat->getChildren();

//Print out categories string
#print_r($subcats);

foreach(explode(',',$subcats) as $subCatid)
{
  $_category = Mage::getModel('catalog/category')->load($subCatid);
  if($_category->getIsActive() && !$_category->getIncludeInMenu())
  {
    $caturl     = $_category->getURL();
    $catname     = $_category->getName();
    if($_category->getImageUrl())
    {
      $catimg     = $_category->getImageUrl();
    }
?>
         <a href="<?php echo $caturl; ?>">
         <div class="block_prod">
           <div class="block_image_prod"><img src="<?php  echo $catimg; ?>"></div>
           <div class="block_title_prod"><h2><?php echo strtoupper($catname); ?></h2></div>
        </div>
        </a>

<?php    

    }
}?>
</div>
    <div i="toolbar-bottom">
<?php echo $this->getToolbarHtml(); ?>
    </div>

在我的产品页面上,我包含了带有

的工具栏
<?php echo $this->getToolbarHtml(); ?>

但我没有像

这样的分页
1-2-3-4...12

我只得到:

Show 30 per page

有解决办法吗?非常感谢!

【问题讨论】:

    标签: magento magento-1.6


    【解决方案1】:

    这可能对某些人有帮助

    <?php $toolbar = $this->getToolbarBlock()->setCollection($_productCollection);
    $pager = Mage::getBlockSingleton('page/html_pager')->setLimit($toolbar->getLimit())->setCollection($_productCollection);
    if ($toolbar->getCollection()->getSize() > 0):?>
    <?php if (!$pager->isFirstPage()): ?>
        <a class="prev-page" href="<?php echo $pager->getPreviousPageUrl() ?>" title="<?php echo $this->__('Previous') ?>">Previous</a>
    <?php else: ?>
        <span class="prev-page disabled">&nbsp;PreviousDisable</span>
    <?php endif; ?>
    
    <span class="current-page-detail">
        Page <?php echo $pager->getCurrentPage(); ?> of <?php echo $pager->getLastPageNum(); ?>
    </span>
    
    <?php if (!$pager->isLastPage()): ?>
        <a class="next-page" href="<?php echo $pager->getNextPageUrl() ?>" title="<?php echo $this->__('Next') ?>">&nbsp;Next</a>
    <?php else: ?>
        <span class="next-page disabled">&nbsp;NextDisable</span>
    <?php endif; ?>
    

    【讨论】:

      【解决方案2】:

      如果您查看默认的catalog.xml,您会看到工具栏包含如下:

      <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"/>
      </block>
      

      您是否以类似的方式包含它?

      另一个地方是toolbar.phtml,看看那里是否包含你需要的一切。

      【讨论】:

      • 嘿亚历克斯,我试过这个,但这个方法没有出现。工具栏有效,但寻呼机不出现。在代码 toolbar.phtml 中,我找到了以下代码:getPagerHtml() ?>。但它是空的。
      • 你能发布你的toolbar.phtml吗?
      • 另外,我假设您有超过一页的项目要显示,否则它显然不会显示它?
      【解决方案3】:

      该类别中有 46 种产品,部分产品被隐藏。工具栏代码:

          <?php
      /**
       * Magento
       *
       * NOTICE OF LICENSE
       *
       * This source file is subject to the Academic Free License (AFL 3.0)
       * that is bundled with this package in the file LICENSE_AFL.txt.
       * It is also available through the world-wide-web at this URL:
       * http://opensource.org/licenses/afl-3.0.php
       * If you did not receive a copy of the license and are unable to
       * obtain it through the world-wide-web, please send an email
       * to license@magentocommerce.com so we can send you a copy immediately.
       *
       * DISCLAIMER
       *
       * Do not edit or add to this file if you wish to upgrade Magento to newer
       * versions in the future. If you wish to customize Magento for your
       * needs please refer to http://www.magentocommerce.com for more information.
       *
       * @category    design
       * @package     base_default
       * @copyright   Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
       * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
       */
      ?>
      <?php
      /**
       * Product list toolbar
       *
       * @see Mage_Catalog_Block_Product_List_Toolbar
       */
      ?>
      <?php if($this->getCollection()->getSize()): ?>
      <div class="toolbar">
          <div class="pager">
              <p class="amount">
                  <?php if($this->getLastPageNum()>1): ?>
                      <?php echo $this->__('Items %s to %s of %s total', $this->getFirstNum(), $this->getLastNum(), $this->getTotalNum()) ?>
                  <?php else: ?>
                      <strong><?php echo $this->__('%s Item(s)', $this->getTotalNum()) ?></strong>
                  <?php endif; ?>
              </p>
      
              <div class="limiter">
                  <label><?php echo $this->__('Show') ?></label>
                  <select onchange="setLocation(this.value)">
                  <?php foreach ($this->getAvailableLimit() as  $_key=>$_limit): ?>
                      <option value="<?php echo $this->getLimitUrl($_key) ?>"<?php if($this->isLimitCurrent($_key)): ?> selected="selected"<?php endif ?>>
                          <?php echo $_limit ?>
                      </option>
                  <?php endforeach; ?>
                  </select> <?php echo $this->__('per page') ?>
              </div>
      
              <?php echo $this->getPagerHtml() ?>
      
          </div>
      
          <?php if( $this->isExpanded() ): ?>
          <div class="sorter">
              <?php if( $this->isEnabledViewSwitcher() ): ?>
              <p class="view-mode">
                  <?php $_modes = $this->getModes(); ?>
                  <?php if($_modes && count($_modes)>1): ?>
                  <label><?php echo $this->__('View as') ?>:</label>
                  <?php foreach ($this->getModes() as $_code=>$_label): ?>
                      <?php if($this->isModeActive($_code)): ?>
                          <strong title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></strong>&nbsp;
                      <?php else: ?>
                          <a href="<?php echo $this->getModeUrl($_code) ?>" title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></a>&nbsp;
                      <?php endif; ?>
                  <?php endforeach; ?>
                  <?php endif; ?>
              </p>
              <?php endif; ?>
      
              <div class="sort-by">
                  <label><?php echo $this->__('Sort By') ?></label>
                  <select onchange="setLocation(this.value)">
                  <?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
                      <option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?> selected="selected"<?php endif; ?>>
                          <?php echo $this->__($_order) ?>
                      </option>
                  <?php endforeach; ?>
                  </select>
                  <?php if($this->getCurrentDirection() == 'desc'): ?>
                      <a href="<?php echo $this->getOrderUrl(null, 'asc') ?>" title="<?php echo $this->__('Set Ascending Direction') ?>"><img src="<?php echo $this->getSkinUrl('images/i_desc_arrow.gif') ?>" alt="<?php echo $this->__('Set Ascending Direction') ?>" class="v-middle" /></a>
                  <?php else: ?>
                      <a href="<?php echo $this->getOrderUrl(null, 'desc') ?>" title="<?php echo $this->__('Set Descending Direction') ?>"><img src="<?php echo $this->getSkinUrl('images/i_asc_arrow.gif') ?>" alt="<?php echo $this->__('Set Descending Direction') ?>" class="v-middle" /></a>
                  <?php endif; ?>
              </div>
          </div>
          <?php endif; ?>
      </div>
      <?php endif ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-12
        • 1970-01-01
        相关资源
        最近更新 更多