2013-05-07 2 views
3

Как изменить порядок файлов CSS для загрузки CSS-модуля модуля перед тегом CSS? Вот некоторые примеры кода: CSS файлЗаказ файлов CSS. Загрузите модуль CSS перед тегом CSS

ТЕМЫ (загружены на всех страницах) добавлена ​​в ТЕМЫ local.xml: CSS файл

<default> 
    <reference name="head"> 
     <action method="addItem"> 
      <type>skin_css</type> 
      <name>css/theme.css</name> 
     </action> 
    </reference> 
</default> 

внутреннего абонента (нагруженного только на страницах категорий) добавлены в файле формата XML модуля:

<catalog_category_layered> 
    <reference name="head"> 
     <action method="addItem"> 
      <type>skin_css</type> 
      <name>css/extension.css</name> 
     </action> 
    </reference> 
</catalog_category_layered> 

Это порядок загруженных файлов CSS, которые я получаю на странице категории, CSS загружается после того, как CSS ТЕМЫ:

  • /default/mytheme/css/styles.css
  • /default/mytheme/css/theme.css
  • /по умолчанию/MyTheme/CSS/расширения .css

То, что я пытаюсь достичь: CSS внутреннего абонента будет загружен до CSS темы.
Как я могу заставить этот порядок CSS файлов:

  • /default/mytheme/css/styles.css
  • /по умолчанию/MyTheme/CSS/extension.css
  • /default/mytheme/css/theme.css

Я заметил, что если у меня есть много EXTEN s CSS, CSS некоторых расширений загружает до CSS CSS и CSS некоторых других расширений, загружаемых после CSS темы. Я предполагаю, что это имеет какое-то отношение к порядку модулей в Magento, но я не понимаю, как я могу повлиять на порядок файлов CSS (или JavaScript) на интерфейсе.

ответ

4

Там две вещи здесь, что я буду подробно останавливаться на первой: 1) порядок, в котором загружаются раскладка XML-файлы и 2) порядок, макет которого ручки являются обработанный.

1 - Файлы формата xml загружаются в том порядке, в котором загружаются расширения. Расширения загружаются в алфавитном порядке (поскольку сервер читает файлы в приложении/etc/extensions), однако при наличии зависимостей модуля сначала загружается модуль, который зависит от другого модуля. Для достижения этой цели Magento на самом деле перебирает все эти XML-файлы. Первый раз прочитать все расширения и второй раз загрузить их по порядку зависимостей/затем все остальные загрузятся в алфавитном порядке. местный.xml однако является специальным случаем и всегда загружается последним, так что его инструкции имеют приоритет над инструкциями макета расширения.

Теперь я знаю, о чем вы сейчас думаете, «если local.xml загружен последним, почему после этого загружается файл CSS расширения?» Хорошо, что из-за следующего ...

2 - Порядок обработки обрабатываемых макетов. Вот что вы делаете в этом конкретном случае. Несмотря на то, что local.xml загружается после файла макета вашего расширения, это связано с тем, что расширение предназначено для дескриптора макета 'catalog_category_layered'. Этот дескриптор макета обрабатывается после дескриптор макета по умолчанию. Именно из-за этого вы застряли в файле CSS, загружаемом после файла CSS вашей темы.

Так в чем же решение? Довольно просто, хотя и несколько раздражает. В вашем файле local.xml вам просто нужно настроить таргетинг на этот макет и сначала удалить файл CSS вашей темы, а затем снова добавить его.

Это должно сделать трюк для вас:

<catalog_category_layered> 
    <reference name="head"> 
     <action method="removeItem"> 
      <type>skin_css</type> 
      <name>css/theme.css</name> 
     </action> 
     <action method="addItem"> 
      <type>skin_css</type> 
      <name>css/theme.css</name> 
     </action> 
    </reference> 
</catalog_category_layered> 

Ваш сайт будет обрабатывать эти инструкции после инструкции внутренней линии, в пределах этого макета ручки. Таким образом, ваш CSS-файл будет загружен впоследствии.

+0

Это сработало! Это единственное простое решение и может использоваться на основе каждого обработчика. Благодарю. – zontar

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

  • Нет связанных вопросов^_^