通过布局向其他页面添加块
Adding a block through layout to other pages
我们创建的扩展中的块没有出现任何内容。
我们要添加的内容是一个横幅扩展,可以在管理员中打开和关闭。然后,我们将横幅块代码添加到 xml 文件中需要的任何位置。
app/code/local/Company/SocialRating/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Company_SocialRating>
<version>1.0.0</version>
</Company_SocialRating>
</modules>
<frontend>
<routers>
<rating>
<use>standard</use>
<args>
<module>Company_SocialRating</module>
<frontName>social-rating</frontName>
</args>
</rating>
</routers>
<layout>
<updates>
<socialRating>
<file>social-rating.xml</file>
</socialRating>
</updates>
</layout>
</frontend>
<global>
<blocks>
<socialRating>
<class>Company_SocialRating_Block_Banner</class>
</socialRating>
</blocks>
</global>
</config>
app/code/local/Company/SocialRating/Block/Banner.php
class Company_SocialRating_Block_Banner extends Mage_Core_Block_Template
{
}
app/design/frontend/superb/desktop/layout/social-rating.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addJs"><script>superb/ratings-and-review.js</script></action>
</reference>
</default>
</layout>
app/design/frontend/superb/desktop/template/social-rating/banner.phtml
<h1>test content</h1>
然后我们认为我们将它添加到结帐成功页面,如下所示
app/design/frontend/superb/desktop/layout/checkout.xml
<layout version="0.1.0">
<checkout_onepage_success translate="label">
<label>One Page Checkout Success</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
</reference>
<reference name="content">
<block type="socialRating/banner" name="social.rating.banner" template="social-rating/banner.phtml" />
<block type="checkout/onepage_success" name="checkout.success" template="checkout/success.phtml"/>
</reference>
</checkout_onepage_success>
</layout>
添加到结帐成功页面后没有出现。
缓存已被刷新。
你的文件没问题,除了布局。它不会在任何地方显示,因为 "checkout.xml" 未在任何地方声明。
您可以将代码放在 "social-rating.xml".
中,而不是声明另一个 .xml 布局文件
将此代码放入 <layout></layout>
标签中:
<checkout_onepage_success translate="label">
<label>One Page Checkout Success</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
</reference>
<reference name="content">
<block type="socialRating/banner" name="social.rating.banner" template="social-rating/banner.phtml" />
<block type="checkout/onepage_success" name="checkout.success" template="checkout/success.phtml"/>
</reference>
</checkout_onepage_success>
在 <checkout_onepage_success>
你可以删除 <block type="checkout/onepage_success" name="checkout.success" template="checkout/success.phtml"/>
因为它已经在另一个 magento 的布局文件中声明,如果你不这样做你会看到它显示两次。
对于你的主要问题,块没有加载,你的 config.xml 有一个错误当你声明你的块时你不必告诉 magento 这个块有什么名字:
<global>
<blocks>
<socialrating>
<class>Company_Socialrating_Block</class>
</socialrating>
</blocks>
</global>
如果问题出在您的块上,或者您认为是这样,您可以将布局中的 替换为 core/template
块,这样您就可以确定为此目的正确声明了该块。
最后,为你的模块使用一个简单的命名法,因为 SocialRating 会引起一些冲突,只需将其重命名为 Socialrating 就可以了(这是我个人的建议,不要那么混乱)。
我们创建的扩展中的块没有出现任何内容。
我们要添加的内容是一个横幅扩展,可以在管理员中打开和关闭。然后,我们将横幅块代码添加到 xml 文件中需要的任何位置。
app/code/local/Company/SocialRating/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Company_SocialRating>
<version>1.0.0</version>
</Company_SocialRating>
</modules>
<frontend>
<routers>
<rating>
<use>standard</use>
<args>
<module>Company_SocialRating</module>
<frontName>social-rating</frontName>
</args>
</rating>
</routers>
<layout>
<updates>
<socialRating>
<file>social-rating.xml</file>
</socialRating>
</updates>
</layout>
</frontend>
<global>
<blocks>
<socialRating>
<class>Company_SocialRating_Block_Banner</class>
</socialRating>
</blocks>
</global>
</config>
app/code/local/Company/SocialRating/Block/Banner.php
class Company_SocialRating_Block_Banner extends Mage_Core_Block_Template
{
}
app/design/frontend/superb/desktop/layout/social-rating.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addJs"><script>superb/ratings-and-review.js</script></action>
</reference>
</default>
</layout>
app/design/frontend/superb/desktop/template/social-rating/banner.phtml
<h1>test content</h1>
然后我们认为我们将它添加到结帐成功页面,如下所示
app/design/frontend/superb/desktop/layout/checkout.xml
<layout version="0.1.0">
<checkout_onepage_success translate="label">
<label>One Page Checkout Success</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
</reference>
<reference name="content">
<block type="socialRating/banner" name="social.rating.banner" template="social-rating/banner.phtml" />
<block type="checkout/onepage_success" name="checkout.success" template="checkout/success.phtml"/>
</reference>
</checkout_onepage_success>
</layout>
添加到结帐成功页面后没有出现。 缓存已被刷新。
你的文件没问题,除了布局。它不会在任何地方显示,因为 "checkout.xml" 未在任何地方声明。 您可以将代码放在 "social-rating.xml".
中,而不是声明另一个 .xml 布局文件将此代码放入 <layout></layout>
标签中:
<checkout_onepage_success translate="label">
<label>One Page Checkout Success</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
</reference>
<reference name="content">
<block type="socialRating/banner" name="social.rating.banner" template="social-rating/banner.phtml" />
<block type="checkout/onepage_success" name="checkout.success" template="checkout/success.phtml"/>
</reference>
</checkout_onepage_success>
在 <checkout_onepage_success>
你可以删除 <block type="checkout/onepage_success" name="checkout.success" template="checkout/success.phtml"/>
因为它已经在另一个 magento 的布局文件中声明,如果你不这样做你会看到它显示两次。
对于你的主要问题,块没有加载,你的 config.xml 有一个错误当你声明你的块时你不必告诉 magento 这个块有什么名字:
<global>
<blocks>
<socialrating>
<class>Company_Socialrating_Block</class>
</socialrating>
</blocks>
</global>
如果问题出在您的块上,或者您认为是这样,您可以将布局中的 替换为 core/template
块,这样您就可以确定为此目的正确声明了该块。
最后,为你的模块使用一个简单的命名法,因为 SocialRating 会引起一些冲突,只需将其重命名为 Socialrating 就可以了(这是我个人的建议,不要那么混乱)。