Magento - 将CMS块添加到一个页面

时间:2010-02-07 21:39:44

标签: magento

我在xml布局文件中有这段代码:

<reference name="left">     
      <block type="blog/blog" name="left.blog.menu"  before="-">            
    <action method="setTemplate" ifconfig="blog/menu/left">
       <template>aw_blog/menu.phtml</template> 
    </action>
        <block type="blog/tags" name="blog_tags" />
      </block>
</reference>

我想使用以下代码向博客页面添加cms静态块:

<block type="cms/block" name="brand_list">
    <action method="setBlockId"><block_id>brand_list</block_id></action>
</block>

如果我在此行之后直接添加:

<reference name="left"> 

它可以工作但它会显示在每个页面上。我怎样才能让它只在博客页面上显示?

感谢。

编辑:这是整个xml文件:

<layout version="0.1.0">
    <default>
        <reference name="footer_links">
            <block type="blog/blog" name="add.blog.footer">
                <block type="blog/tags" name="blog_tags" />
                <action method="addFooterLink" ifconfig="blog/menu/footer"></action>
            </block>
        </reference>
        <reference name="right">
            <block type="blog/blog" name="right.blog.menu" before="-">
                <action method="setTemplate" ifconfig="blog/menu/right" ifvalue="1">
                    <template>aw_blog/menu.phtml</template> 
                </action>
                <block type="blog/tags" name="blog_tags" />
            </block>
        </reference>
        <reference name="left">     
            <block type="blog/blog" name="left.blog.menu"  before="-">          
                <action method="setTemplate" ifconfig="blog/menu/left">
                    <template>aw_blog/menu.phtml</template> 
                </action>
                <block type="blog/tags" name="blog_tags" />
            </block>
        </reference>
        <reference name="top.links">
            <block type="blog/blog" name="add.blog.link">
                <action method="addTopLink" ifconfig="blog/menu/top"></action>
                <block type="blog/tags" name="blog_tags" />
            </block>
        </reference>
        <reference name="head">
            <action method="addItem"><type>skin_css</type><name>aw_blog/css/style.css</name></action>
        </reference>
    </default>

    <blog_index_index>
        <reference name="content">
            <block type="blog/blog" name="blog" template="aw_blog/blog.phtml"/>
        </reference>
    </blog_index_index>

    <blog_index_list>
        <reference name="content">
            <block type="blog/blog" name="blog" template="aw_blog/blog.phtml"/>
        </reference>
    </blog_index_list>  
    <blog_post_view>
        <reference name="content">
            <block type="blog/post" name="post" template="aw_blog/post.phtml">
                <block type="socialbookmarking/bookmarks" name="bookmarks" template="bookmarks/bookmarks.phtml"/>
            </block>
        </reference>
    </blog_post_view>
    <blog_cat_view>
        <reference name="content">
            <block type="blog/cat" name="cat" template="aw_blog/cat.phtml" />
        </reference>
    </blog_cat_view>

    <blog_rss_index>
        <block type="blog/rss" output="toHtml" name="rss.blog.new"/>
    </blog_rss_index>
</layout> 

4 个答案:

答案 0 :(得分:2)

如果它进入一个部分,那么它将被应用于所有页面,你想把它和它的内容放在这些部分里面(这里有一个列表页面和各个帖子页面 - 这些部分应该已经存在于aw_blog中了.xml文件

答案 1 :(得分:1)

它出现在所有页面上,因为您可能将代码放在布局xml的部分中。只需放入以它应该出现的路线命名的部分。 所以试试:

<blog>
    <reference name="left">
        <block type="cms/block" name="brand_list">
            <action method="setBlockId"><block_id>brand_list</block_id></action>
        </block>
    </reference>
</blog>

答案 2 :(得分:1)

更改文件夹主题/布局中的XML,例如 page.xml 将此类内容添加到标题中:

  <block type="page/html_header" name="header" as="header">
        <!-- ... some origin code ... -->
        <block type="page/html" name="custom_block" as="flashHeader" template="customer/custom_header.phtml"/>
  </block>

使用您的自定义HTML代码创建文件 customer / custom_header.phtml

在模板页面/ html / header.phtml 内,您可以添加以下内容:

$dataCurrentPage = $this->getHelper('cms/page')->getPage()->getData();
$page_id = (isset($dataCurrentPage['identifier'])) ?  $dataCurrentPage['identifier'] : null;
if ($page_id  == 'home' ) { echo this->getChildHtml('flashHeader') }

Flash横幅广告只会在首页上显示。

答案 3 :(得分:0)

您绝对可以使用自定义布局更新将您自己的静态块放在左侧而无需任何编码。

您需要创建一个静态块,然后将其引用放入自定义布局更新

<reference name="left">
<block type="cms/block" name="my_left_block" before="-">
    <action method="setBlockId"><block_id>my_left_block</block_id></action>
</block>    

查看示例,请点击以下链接 https://lampjs.wordpress.com/2015/07/06/magento-add-static-cms-block-to-category-page-on-left/