Как изменить порядок таблиц стилей и JS в Magento и добавить несколько файлов CSS/JS


После использования local.xml чтобы добавить таблицы стилей и js следующим образом:

<?xml version="1.0"?>
<layout>
<default>
    <reference name="head">
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
                </text>
            </action>
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="//css.cdn.tl/normalize.css">]]>
                </text>
            </action>
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css">]]>
                </text>
            </action>
        </block>
            <action method="addItem">
                <type>skin_css</type>
                <name>css/bootstrap.css</name>
            </action>
            <action method="addItem">
                <type>skin_css</type>
                <name>css/layout.css</name>
            </action>
            <action method="addItem">
                <type>skin_js</type>
                <name>js/script.js</name>
            </action>
    </reference>
</default>
</layout>

Я нахожу несколько проблем.

  1. В "Блочной" части кода используется только последнее действие. Почему это происходит?

  2. В источнике страницы мои стили по умолчанию.css вставлены перед моими другими файлами css. Я надеялся, что style.css будет последним css-файлом на моей странице. Как устранить эту проблему?

  3. Мой jQuery загружается после мой дефолт script.js . Как можно изменить порядок?

Author: Raphael Rafatpanah, 2013-04-18

3 answers

Я постараюсь ответить на все ваши 3 вопроса.

1. В "Блочной" части кода используется только последнее действие. Почему это происходит?
Я не думаю, что используется только последнее действие. Их всех призывают. Рассматривайте это как $a = 1; $a = 2; $a = 3;. $a будет 3 после этих 3 команд. Вы должны добавить отдельный блок для каждого файла CSS и вызвать setText() на нем, чтобы это сработало (вы уже сделали это в своем собственном ответе).

2. В источнике страницы мой по умолчанию styles.css вставляется перед моими другими файлами css. Я надеялся, что styles.css будет последним css-файлом на моей странице. Как устранить эту проблему?
Я знаю, что на этот вопрос уже давали ответ раньше, но решение может быть даже проще. Вы можете удалить свой styles.css, а затем добавить его снова в свой local.xml . Обязательно сделайте это после добавления всех других файлов css:

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="head">
            <!-- ... add your other css files ... -->
            <action method="removeItem"><type>skin_css</type><name>css/styles.css</name></action>
            <action method="addItem"><type>skin_css</type><name>css/styles.css</name></action>
        </reference>
    </default>
</layout>

3. Мой jQuery загружен после моего значения по умолчанию script.js . Как можно изменить порядок?
Я подумайте о jQuery (от googleapis.com) вообще не загружается в ваш текущий код:) Но если вы хотите переместить jQuery наверх, вы должны убедиться, что он находится в верхней части вашего local.xml .

 9
Author: Mark van der Sanden, 2015-06-23 01:14:32

Попробуйте удалить значение по умолчанию styles.css с помощью этого:

<action method="removeItem">
    <type>skin_css</type>
    <name>css/styles.css</name>
</action>

Затем переименуйте свой styles.css в styles2.css и добавьте его в свой local.xml снова вот так:

<action method="addItem">
    <type>skin_css</type>
    <name>css/styles2.css</name>
</action>

Должно сработать.

 3
Author: zitix, 2013-04-18 22:18:18

Вот что я сделал, чтобы заставить его работать. Позже, для производства, я объединю все CSS-файлы в styles.css.

Теперь файлы вызываются в правильном порядке. Единственным недостатком является то, что styles.css указан дважды.

Этот файл является local.xml: app/design/frontend/yourpackage/default/layout/local.xml

<?xml version="1.0"?>
<layout>
<default>
    <reference name="head">
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
                </text>
            </action>
        </block>
        <block type="core/text" name="normalize.cdn.css">
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="http://css.cdn.tl/normalize.css">]]>
                </text>
            </action>
        </block>
        <block type="core/text" name="bootstrap.cdn.css">
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css">]]>
                </text>
            </action>
        </block>
        <block type="core/text" name="bootstrap.custom.css">
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="http://kokorugs.com/online-carpet-store/skin/frontend/kokorugs/default/css/bootstrap.css">]]>
                </text>
            </action>
        </block>
        <block type="core/text" name="layout.custom.css">
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="http://kokorugs.com/online-carpet-store/skin/frontend/kokorugs/default/css/layout.css">]]>
                </text>
            </action>
        </block>
        <block type="core/text" name="css.custom.css">
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" href="http://kokorugs.com/online-carpet-store/skin/frontend/kokorugs/default/css/styles.css">]]>
                </text>
            </action>
        </block>
        <block type="core/text" name="javascript.custom.js">
            <action method="setText">
                <text><![CDATA[<link rel="stylesheet" src="http://kokorugs.com/online-carpet-store/skin/frontend/kokorugs/default/js/script.js">]]>
                </text>
            </action>
        </block>
    </reference>
</default>
</layout>

Надеюсь, это кому-то поможет!

 0
Author: Raphael Rafatpanah, 2016-03-24 15:26:06