Magento pagination - номера страниц не отображаются правильно, если количество записей на странице 45 - PullRequest
2 голосов
/ 12 декабря 2011

Я имею дело со странной проблемой.На моей странице со списком товаров нумерация страниц не работает должным образом.Всего у меня 187 предметов.В нумерации страниц отображается три страницы.то есть;1,2,3 Когда я выбираю 45 записей на странице и выбираю 4-ю страницу, элементы загружаются правильно, но ссылки на страницы все равно отображаются как 1, 2, 3 вместо 2,3,4.

шаблон, который я использую, это frontend \ mycompany \ default \ template \ page / html / pager.phtml, а блок - MageWorx_SeoSuite_Block_Page_Html_Pager.

Разметка страниц работает без проблем для количества записей15 и 30, проблема возникает только при выборе 45 записей на странице.

Содержимое файла pager.phtml:

<?php if($this->getCollection()->getSize()): ?>

<?php if($this->getUseContainer()): ?>
<div class="pager">
<?php endif ?>

<?php if($this->getShowAmounts()): ?>
<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>
<?php endif ?>

<?php if($this->getShowPerPage()): ?>
<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 endif ?>

<?php if($this->getLastPageNum()>1): ?>
<div class="pages">

  <!--  <strong><?php echo $this->__('Page:') ?></strong>-->
    <ol>
    <?php if (!$this->isFirstPage()): ?>
        <li>
            <a class="previous<?php if(!$this->getAnchorTextForPrevious()): ?> i-previous<?php endif;?>" href="<?php echo $this->getPreviousPageUrl() ?>" title="<?php echo $this->__('Previous') ?>">
                <?php if(!$this->getAnchorTextForPrevious()): ?>
                    <img src="<?php echo $this->getSkinUrl('images/pager_arrow_left.gif') ?>" alt="<?php echo $this->__('Previous') ?>" class="v-middle" />
                <?php else: ?>
                    <?php echo $this->getAnchorTextForPrevious() ?>
                <?php endif;?>
            </a>
        </li>
    <?php endif;?>

    <?php if ($this->canShowFirst()): ?>
        <li><a class="first" href="<?php echo $this->getFirstPageUrl() ?>">1</a></li>
    <?php endif;?>

    <?php if ($this->canShowPreviousJump()): ?>
        <li><a class="previous_jump" title="" href="<?php echo $this->getPreviousJumpUrl() ?>">...</a></li>
    <?php endif;?>

    <?php $i=0;foreach ($this->getFramePages() as $_page):if($i<3): ?>
        <?php if ($this->isPageCurrent($_page)): ?>
            <li class="current"><?php echo $_page ?></li>
        <?php else: ?>
            <li><a href="<?php echo $this->getPageUrl($_page) ?>"><?php echo $_page ?></a></li>
        <?php endif;?>
    <?php $i++;endif; endforeach;?>


    <?php if ($this->canShowNextJump()): ?>
        <li><a class="next_jump" title="" href="<?php echo $this->getNextJumpUrl() ?>">...</a></li>
    <?php endif;?>

    <?php if ($this->canShowLast()): ?>
      <li><a class="last" href="<?php echo $this->getLastPageUrl() ?>"><?php echo $this->getLastPageNum() ?></a></li>
    <?php endif;?>

    <?php if (!$this->isLastPage()): ?>
        <li>
            <a class="next<?php if(!$this->getAnchorTextForNext()): ?> i-next<?php endif; ?>" href="<?php echo $this->getNextPageUrl() ?>" title="<?php echo $this->__('Next') ?>">
                <?php if(!$this->getAnchorTextForNext()): ?>
                    <img src="<?php echo $this->getSkinUrl('images/pager_arrow_right.gif') ?>" alt="<?php echo $this->__('Next') ?>" class="v-middle" />
                <?php else: ?>
                    <?php echo $this->getAnchorTextForNext() ?>
                <?php endif;?>
            </a>
        </li>
    <?php endif;?>
    </ol>

</div>
<?php endif; ?>

<?php if($this->getUseContainer()): ?>
</div>
<?php endif ?>

Я новичок в magento.

1 Ответ

2 голосов
/ 12 декабря 2011

Я исправил проблему. В классе Mage_Page_Block_Html_Pager есть защищенная переменная $ _displayPages, и она установлена ​​как

protected $_displayPages   = 5; // Page length for the navigation

Так что в моем pager.html (frontend \ mycompany \ default \ template \ page \ html \ pager.phtml) я сделал небольшое изменение следующим образом

<?php $i=0;foreach ($this->getFramePages() as $_page):if($i<5): ?>

Мы можем просто изменить длину страницы в соответствии с нашими требованиями. Для этого просто переопределите класс Mage_Page_Block_Html_Pager и измените защищенную переменную $ _displayPages.

Мы также можем установить длину страницы со стороны администратора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...