Magento - Добавить блок CMS на одну страницу - PullRequest
2 голосов
/ 08 февраля 2010

У меня есть этот код в файле макета 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 ]

2 голосов
/ 08 февраля 2010

если он идет внутри раздела, то он будет применен ко всем страницам, вы хотите поместить и его содержимое в разделы (там будет страница листинга и отдельные страницы сообщений - разделы уже должны существовать в aw_blog XML-файл

1 голос
/ 08 июня 2010

Изменить XML внутри папки theme / layout , например 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>

Создать файл customer / custom_header.phtml с вашим пользовательским HTML-кодом.

Внутри шаблона page / 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') }

Флэш-баннер будет отображаться только на главной странице.

1 голос
/ 15 февраля 2010

Появляется на всех страницах, потому что вы, вероятно, поместите код в раздел макета 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>
0 голосов
/ 06 июля 2015

Вы можете использовать обновление пользовательского макета, чтобы разместить свой статический блок слева без какой-либо кодировки.

Вам нужно создать статический блок и затем поместить его ссылку в обновление пользовательского макета

<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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...