Magento:将“产品列表寻呼机”块放入 <head>

Posted

技术标签:

【中文标题】Magento:将“产品列表寻呼机”块放入 <head>【英文标题】:Magento: Put "product list pager"-block in <head> 【发布时间】:2011-09-30 11:45:10 【问题描述】:

我有以下问题: 我想使用 rel="next" 和 rel="prev" 为 magento 产品列表开发分页。 http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html 如何访问寻呼机?当 pager-block 将被渲染时,head-block 已经被渲染...

我的问题有什么解决办法吗?

【问题讨论】:

【参考方案1】:

是的,您可以编辑以下文件:

/app/design/frontend//default/template/page/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="..." 添加到链接中,“下一个”链接也是如此;)

【讨论】:

我知道模板。但我必须在标题标签处添加链接标签。在模板 pager.phtml 中是不可能的。【参考方案2】:

我将此代码添加到 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
        
    ?>

【讨论】:

【参考方案3】:

从 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 .'" />';

【讨论】:

以上是关于Magento:将“产品列表寻呼机”块放入 <head>的主要内容,如果未能解决你的问题,请参考以下文章

Magento:将静态块添加到结帐购物车

Magento。将块插入另一个而不更改模板代码

如何在 Magento 中重新加载块?

将Select2与Magento 2集成

Magento:取消设置XML块

无法阻止 Magento 缓存块