Magento: поместите блок "список продуктов" в <head> - PullRequest
1 голос
/ 30 сентября 2011

У меня следующая проблема: Я хочу разработать Pagination с rel = «next» и rel = «prev» для списков продуктов magento. http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html Как я могу получить доступ к пейджеру? Головной блок уже визуализирован, когда будет отображен блок пейджера ...

Есть ли решение моей проблемы?

Ответы [ 3 ]

1 голос
/ 11 октября 2011

Я добавил этот код в файл head.phtml ...

<?php
        $actionName = $this->getAction()->getFullActionName();
        if($actionName == 'catalog_category_view') // Category Page
        {
            $id = Mage::app()->getRequest()->getParam('id', false); //cat id
            $category = Mage::getModel('catalog/category')->load($id);
            $prodCol = $category->getProductCollection();
            $tool = $this->getLayout()->createBlock('catalog/product_list_toolbar')->setCollection($prodCol);
            $linkPrev = false;
            $linkNext = false;
            if ($tool->getCollection()->getSize()) {
                if ($tool->getLastPageNum() > 1) {
                    if (!$tool->isFirstPage()) {
                        $linkPrev = true;
                        $prevUrl = $tool->getPreviousPageUrl();
                    }
                    if (!$tool->isLastPage()) {
                        $linkNext = true;
                        $nextUrl = $tool->getNextPageUrl();
                    }
                }
            }
            ?>
            <?php if ($linkPrev): ?>
            <link rel="prev" href="<?php echo $prevUrl ?>" />
            <?php endif; ?>
            <?php if ($linkNext): ?>
            <link rel="next" href="<?php echo $nextUrl ?>" />
            <?php endif; ?>
    <?php
        }
    ?>
1 голос
/ 11 января 2012

Начиная с версии 1.5 это решение больше не работает, это мое решение:

    $actionName = $this->getAction()->getFullActionName();
if($actionName == 'catalog_category_view') // Category Page
{
    $id = Mage::app()->getRequest()->getParam('id', false); //cat id
    $category = Mage::getModel('catalog/category')->load($id);
    $prodCol = $category->getProductCollection()->addAttributeToFilter('status', 1)->addAttributeToFilter('visibility', array('in' => array(2, 4)));
    $tool = $this->getLayout()->createBlock('page/html_pager')->setLimit($this->getLayout()->createBlock('catalog/product_list_toolbar')->getLimit())->setCollection($prodCol);
    $linkPrev = false;
    $linkNext = false;
    if ($tool->getCollection()->getSize()){
        if ($tool->getLastPageNum() > 1){
            if (!$tool->isFirstPage()) {
                $linkPrev = true;
                if($tool->getCurrentPage()==2){
                    $url = explode('?',$tool->getPreviousPageUrl());
                    $prevUrl = $url[0];
                }
                else $prevUrl = $tool->getPreviousPageUrl();
            }
            if (!$tool->isLastPage()){
                $linkNext = true;
                $nextUrl = $tool->getNextPageUrl();
            }
        }
    }
    if ($linkPrev) echo '<link rel="prev" href="'. $prevUrl .'" />';
    if ($linkNext) echo '<link rel="next" href="'. $nextUrl .'" />';
}
1 голос
/ 30 сентября 2011

Да, вы можете редактировать следующий файл:

/ приложение / дизайн / интерфейс // по умолчанию / шаблон / страницы / HTML / pager.phtml

Там вы видите, например:

<?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 echo $this->__("Previous");?>
                </a>
            </li>
        <?php endif;?>

Там, где вы можете легко добавить rel = "...", который вы хотите к ссылке, то же самое относится и к ссылке "Next";)

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