Magento - 在产品信息页面上注入自定义模块

发布于 2024-12-24 02:53:21 字数 1209 浏览 1 评论 0原文

我在网上搜索了如何在产品页面上使用我的模板添加“块”。我构建了显示某种信息的自定义模块,我想在我的产品的详细描述下展示这一点。

我一直在尝试格式化模块的 xml 布局,但没有成功。

经过一番搜索后,我发现了这个: 以编程方式创建 Magento 块并将它们注入布局,但我无法让它为我工作。但这可能是因为我错过了一些东西。

我的模块结构如下:

代码:app/code/local/deveti/Countrypurchase

设计:app/design/frontend/default/default/template/Countrypurchase/index.phtml

布局:app/design/frontend/default/default/layout /countrypurchase.xml

我知道正确的方法是编辑主布局文件,手动添加一个块,但我想即时执行此操作。

编辑:这有效!

所以我会在我的模块布局 xmlcountrypurchase.xml 中执行如下操作:

<?xml version="1.0"?>   
<layout version="1.0">
    <catalog_product_view>
        <reference name="product.info">
            <block type="core/template" name="product.countrypurchase" as="countrypurchase" template="countrypurchase/index.phtml" />
        </reference>
    </catalog_product_view>    
</layout>

并且我添加了对 Catalog/product/view.phtml 的调用:

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

并且它有效;)

谢谢您的帮助!

I've searched on web for how to add "block" with my template on the product page. I build my custom module that displays some sort of information and I would like to show that, let's say under the long description of my product.

I've been trying to format the xml layout of my module but without luck.

After some search I've found this: Programatically create Magento blocks and inject them into layout which I can not make it work for me. But it is probably because I've missed something.

My module is structured like this:

CODE: app/code/local/deveti/Countrypurchase

DESIGN: app/design/frontend/default/default/template/Countrypurchase/index.phtml

LAYOUT: app/design/frontend/default/default/layout/countrypurchase.xml

I know the correct way is to edit main layout file, manually add a block, but I'd like to do that on the fly.

EDIT: this works!

So I would do in my module layout xml countrypurchase.xml something like this:

<?xml version="1.0"?>   
<layout version="1.0">
    <catalog_product_view>
        <reference name="product.info">
            <block type="core/template" name="product.countrypurchase" as="countrypurchase" template="countrypurchase/index.phtml" />
        </reference>
    </catalog_product_view>    
</layout>

And I've added a call to catalog/product/view.phtml:

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

And it works ;)

Thank you for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雨后咖啡店 2024-12-31 02:53:21

产品视图页面的问题在于它的输出主要由模板catalog/product/view.phtml中的PHP代码控制。 Magento 没有提供太多开箱即用的扩展点。您可以将其添加到 content 块中,但这会将您的自定义内容完全放在顶部或完全放在底部。

我认为您需要修改模板并添加 PHP 代码以在您想要的位置呈现自定义块,例如:

<?php
    echo $this->getChildHtml('product.countrypurchase');
?>

有了这个,您可以通过名称 product.countrypurchase 添加您的块XML 布局或以编程方式。

The problem with the product view page is that it's output is mainly controlled by the PHP code in the template catalog/product/view.phtml. Magento doesn't offer much extensibility points out of the box. You could add it to the content block but that would put your custom content either completely at the top or completely at the bottom.

I think you are required to modify the template and add PHP code to render your custom block at the position you want, like:

<?php
    echo $this->getChildHtml('product.countrypurchase');
?>

With this in place you can either add your block with the name product.countrypurchase via the XML layout or programmatically.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文