我们在服务器和集成WordPress和Magento的Fishpig扩展程序上安装了WordPress。我们希望通过将相关帖子添加到前端产品页面上的新选项卡(产品描述和Upsell产品)中的新标签来利用扩展名与博客文章和产品关联的能力。我把所有这些都奏效了 - 有一个新的标签,上面写着标题为"相关博客文章"的产品页面,当选择时,它显示了帖子标题和摘录,完全是我想要的。问题是,即使没有相关的博客文章,该选项卡也会显示。空白时如何隐藏?
可能很简单。这是我添加选项卡的方式:
1)此文件 App/design/frontend/base/base/default/layout/wordpress.xml 建立哪些阻止相关帖子在"前端产品"页面中显示。在此文件中,我在底部附近,我将参考名称从 product.info.additional 变为 *相关的_blog_post *。
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/blocs/list/ressionposts.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/list/releatedposts.phtml 并将以下代码添加到此文件中:
<?php foreach ($this->getChildHtmlList () as $_html): ?>
<div class="collateral-box">
<?php echo $_html ?>
</div>
<?php endforeach; ?>
5)在文件 app/design/frontend/base/base/default/template/wordpress/wordpress/wordpress/socieds/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>
to:
<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条件下将代码包装在Ressionposts.phtml中的多种方法,但我无法完成任何工作。当没有内容时,如何防止我的新标签出现?
我会尝试这样的事情或像您提到的某种计数一样,在
中app/design/frontend/default/{template}/template/catalog/product/list/list/relatedposts.phtml
<?php
if($this->getChildHtmlList()): ?>
<?php foreach ($this->getChildHtmlList () as $_html): ?>
<div class="collateral-box">
<?php echo $_html ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
您还需要确保此块不会返回任何空白,因为它将被解释为内容并创建选项卡。我也有一个自定义标签,这对我来说是一个问题。如果您遇到麻烦,则应该zend_debug :: dump()$ the-> getchildhtmllist(),然后查看正在生成的内容。