Хобрук: Ваш путь к мастерству в программировании

Magento — добавить блок CMS на одну страницу

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

Ответы:


1

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

08.02.2010

2

Он отображается на всех страницах, потому что вы, вероятно, поместили код в раздел макета 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>
14.02.2010

3

Измените 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') }

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

08.06.2010

4

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

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

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

to view an example follow the link below https://lampjs.wordpress.com/2015/07/06/magento-add-static-cms-block-to-category-page-on-left/

06.07.2015
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..