0

此页面上,我试图将标签(标签列表和标签表单)从标签移到评论部分之前的开放区域。

我将 /template/tag/list.phtml 中的所有内容复制到 /template/catalog/product/view.phtml:

<div class="box-collateral box-tags">
    <h2><?php echo $this->__('Product Tags') ?></h2>
    <?php echo $this->getChildHtml('list_before')?>
    <?php if( $this->getCount() ): ?>
    <h3><?php echo $this->__('Other people marked this product with these tags:') ?></h3>
    <ul id="<?php echo $this->getUniqueHtmlId('product-tags_'); ?>" class="product-tags">
        <?php echo $this->renderTags('<li><a href="%1$s">%2$s</a> (%3$s)</li>') ?>
    </ul>
    <script type="text/javascript">
        decorateGeneric($("<?php echo $this->getUniqueHtmlId('product-tags_'); ?>").select('li'), ['first', 'last']);
    </script>
    <?php endif; ?>
    <form id="addTagForm" action="<?php echo $this->getFormAction(); ?>" method="get">
        <div class="form-add">
            <label for="productTagName"><?php echo $this->__('Add Your Tags:') ?></label>
            <div class="input-box">
                <input type="text" class="input-text required-entry" name="productTagName" id="productTagName" />
            </div>
            <button type="button" title="<?php echo $this->__('Add Tags') ?>" class="button" onclick="submitTagForm()">
                <span>
                    <span><?php echo $this->__('Add Tags') ?></span>
                </span>
            </button>
        </div>
    </form>
    <p class="note"><?php echo $this->__("Use spaces to separate tags. Use single quotes (') for phrases.") ?></p>
    <script type="text/javascript">
    //<![CDATA[
        var addTagFormJs = new VarienForm('addTagForm');
        function submitTagForm(){
            if(addTagFormJs.validator.validate()) {
                addTagFormJs.form.submit();
            }
        }
    //]]>
    </script>
</div>

虽然表单正确显示,但标签却没有。

我想这与“$this->getCount()”有关。那么如何在 view.phtml 中为标签获取 $this 呢?或者我怎样才能使这项工作?

非常感谢!

4

1 回答 1

0

如果您将代码从模板 tag/list.phtml 复制到 catalog/product/view.phtml,它将无法工作,因为 catalog/product/view.phtml 后面的块不支持与 tag/list.phtml 后面的块相同的方法集.

我建议将 tag_list 块移动到布局 XML 中的 product_view 块内。然后在 catalog/product/view.phtml 你可以使用类似的东西

<?php echo $this->getChildHtml('tag_list'); ?>

这将打印 tag/list.phtml 的内容。

或者,如果您不想在布局 xml 中移动块,那么您可以使用类似

<?php echo $this->getLayout()->getBlock('tag_list')->toHtml(); ?>

但它不是那么好和干净:) 我建议选择选项一。Magento Commerce 站点中提供了一些如何使用布局的资源。

于 2012-06-03T15:31:40.200 回答