2011-02-02 2 views
1

Мое расширение magento добавляет к боковой панели новый блок (например, блок опроса). Я использую ту же структуру html, что и используемый блоком опроса, чтобы сделать блок похожим на его часть системы.Где я должен размещать значки блоков и CSS в расширении magento

т.е.

<div class="block block-myblock"> 
    <div class="block-title"> 
     <strong><span><?php echo $this->__('block title') ?></span></strong> 
    </div>... 

Я знаю, что иконки на блоке опроса появляться из-за правило CSS:

.block-poll .block-title strong { background-image:url(../images/i_block-poll.gif); } 

, возвращаемая: /skin/frontend/base/default/css/widgets.css

, и я также знаю, что само изображение хранится по адресу: skin/frontend/default/default/images/

У меня есть два вопроса:

  1. Что было бы соответствующим образом, чтобы добавить свой собственный требуют правила CSS, чтобы показать значок рядом с моим блоком? i.e. .block-myblock .block-title strong { background-image:url(../images/i_block-myblock.gif); } Перейти непосредственно в файл? и какой файл или он добавляется кодом блока, используя какой-то вызов вроде addCSS или что-то подобное?

  2. Каким будет подходящий путь для хранения изображения i_block-myblock.gif?

, пожалуйста, помните, что это все в контексте расширения, а не локальных изменений в моем собственном магазине.

+0

также, если кто-то с репутацией 1500 может добавить тег magento-extansions, который был бы приятным. – epeleg

ответ

4

Это очень хороший вопрос и +1 для сохранения формулировки Magento в вашем CSS! Что я лично делаю, чтобы не путать разработчиков, которые могут использовать мой модуль, так это то, что я создаю подпапку скина, предназначенную для модуля. Таким образом, будет ли легко находить и вырезать/вставлять свои правила и изображения css в правильную папку темы, правильно ли выполняться для пользователей без эксперимента.

1- Создать папку и файлы архитектуры

, как:

  • /skin/frontend/default/default/[your_module_name]/css/styles.css
  • /кожа/frontend/default/default/[your_module_name]/images/(содержащий все изображения вашего модуля)

2- Edi т ваш /skin/frontend/default/default/[your_module_name]/css/styles.css

... как обычно, но содержащие только CSS классы, связанные с модулем, а именно:

.block-myblock .block-title strong { background-image:url(../images/i_block-myblock.gif); } 

3- Вызовите файл CSS из макета XML вашего модуля

Открыть, допустим/app/design/frontend/default/default/layout/[your_module_name].XML и добавьте следующие строки после первого узла открытия, как это:

<?xml version="1.0"?> 
<layout version="0.1.0"> 
<!-- Code to add --> 
<default> 
    <reference name="head"> 
    <action method="addItem"><type>skin_css</type><name>[your_module_name]/css/styles.css</name><params/></action> 
    </reference> 
</default> 
<!-- [end] --> 
. 
. 
. 
</layout> 

Это должно работать, будучи почтительными стандарты Magento, не загрязняя существующие темы и не дают никакой головной боли для developpers, которые хотят полностью объединить вашу кожу у них.

+0

Если я правильно понимаю, я могу сделать инъекцию CSS из фактического кода моего блока, чтобы, если мой блок не на странице, CSS тоже не будет там. Знаете ли вы, какой метод моего блока был бы наиболее подходящим для этого? – epeleg

+0

Я не уверен, что хорошо понимаю ваш комментарий :) Инъекция/вызов ваших файлов CSS выполняется через XML-файл макета темы вашего модуля. Это не должно быть сделано ни с помощью phtml, ни с php Block относительно этого phtml. Нет никакой проблемы с тем, что CSS здесь (потому что он вызван в голове через XML), в то время как на странице, отображаемой на данный момент, нет элемента HTML. –

+0

Другими словами, [это] (http://store.redstage.com/blog/2012/07/24/how-to-properly-include-custom-css-and-js-files-in-magento) – Benubird

Смежные вопросы