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>的主要内容,如果未能解决你的问题,请参考以下文章