我们在我们的服务器上安装了 Wordpress 和集成了 Wordpress 和 Magento 的 Fishpig 扩展。我们希望通过将相关帖子添加到前端产品页面(产品描述和追加销售产品所在的位置)上的新选项卡来利用扩展程序关联博客文章和产品的能力。我完成了所有这些工作——产品页面上有一个名为“相关博客文章”的新标签,当被选中时,它会按照我想要的方式显示文章标题和摘录。问题是,即使没有相关的博客文章,该选项卡也会显示。当它为空时如何隐藏它?
我可能缺少一些简单的东西。这是我添加标签的方式:
1) 这个文件app/design/frontend/base/default/layout/wordpress.xml确定了相关帖子显示在前端产品页面的哪个块。在这个文件的底部附近,我将参考名称从product.info.additional更改为 *related_blog_posts*。
2)到文件:app/design/frontend/default/{template}/layout/catalog.xml在第210行附近,我放置了以下代码。我把它放在产品描述和产品追加销售的类似代码部分之间。
<action method="addTab" translate="title" module="catalog"><alias>related_blog_posts</alias><title>Related Blog Posts</title><block>catalog/product_list_relatedposts</block><template>catalog/product/list/relatedposts.phtml</template></action>
3) 添加新文件:app/code/local/Mage/Catalog/Block/Product/List/relatedposts.php 在该文件中添加以下代码:
class Mage_Catalog_Block_Product_List_Relatedposts extends Mage_Core_Block_Template
{
protected $_list;
public function __construct()
{
parent::__construct();
$this->setTemplate('catalog/product/view/additional.phtml');
}
public function getChildHtmlList()
{
if (is_null($this->_list)) {
$this->_list = array();
foreach ($this->getSortedChildren() as $name) {
$block = $this->getLayout()->getBlock($name);
if (!$block) {
Mage::exception(Mage::helper('catalog')->__('Invalid block: %s.', $name));
}
$this->_list[] = $block->toHtml();
}
}
return $this->_list;
}
}
4) 添加新文件:app/design/frontend/default/{template}/template/catalog/product/list/Relatedposts.phtml并在该文件中添加以下代码:
<?php foreach ($this->getChildHtmlList () as $_html): ?>
<div class="collateral-box">
<?php echo $_html ?>
</div>
<?php endforeach; ?>
5)在文件app/design/frontend/base/default/template/wordpress/post/associated/list.phtml我更改了以下代码:
<ul>
<?php foreach($posts as $post): ?>
<li>
<a href="<?php echo $post->getPermalink() ?>" title="<?php echo $this->escapeHtml($post->getPostTitle()) ?>"><?php echo $this->escapeHtml($post->getPostTitle()) ?></a>
</li>
<?php endforeach; ?>
</ul>
至:
<div class="related-posts">
<?php foreach($posts as $post): ?>
<h3><a href="<?php echo $post->getPermalink() ?>" title="<?php echo $this->escapeHtml($post->getPostTitle()) ?>"><?php echo $this->escapeHtml($post->getPostTitle()) ?></a></h3>
<?php $post->setExcerptSize($this->getExcerptLength()) ?>
<p class="related-post-excerpt"><?php echo $post->getPostExcerpt() ?></p>
<?php endforeach; ?>
</div>
最后一项更改为每个相关帖子添加了摘录,而不仅仅是显示标题。
6)清除缓存并重新编译站点。
摘要:新标签出现在前端产品页面上,相关的博客文章也出现在标签中。但是,即使该产品没有相关的博客文章,该选项卡也会显示。我已经尝试了多种方法在 if/count 条件下包装 Relatedposts.phtml 中的代码,但我无法得到任何工作。没有内容时,如何防止我的新标签出现?