Dodawanie niestandardowych układów dla CMS i kategorii z niestandardowymi problemami z modułem

14

Mam w moim sklepie kategorię, która wymaga zupełnie innego układu niż standardowe układy Magento. Więc stworzyłem nową kopię pliku 1column.phtml, przemianowałem ją i wprowadziłem jedną małą zmianę do przetestowania.

Problem polega na tym, że układ niestandardowy nie jest wyświetlany. Utworzyłem moduł (który działa tak, jak widać w Administrator> Konfiguracja> Przegląd zaawansowany).

Moje pliki i zawartość są następujące:

app / etc / modules / Test_Page.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <active>true</active>
            <codePool>community</codePool>
            <version>0.1.0</version>
            <depends>
                <Mage_Page />
            </depends>
        </Test_Page>
    </modules>
</config>

app / code / local / Test / Page / etc / config.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <version>0.1.0</version>
        </Test_Page>
    </modules>
    <global>
        <page>
            <layouts>
                <homepage module="page" translate="label">
                    <label>Homepage</label>
                    <template>page/home.phtml</template>
                    <layout_handle>homepage</layout_handle>
                </homepage>

                <!-- add more layouts here -->
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <Test_Page>
                    <file>test_page.xml</file>
                </Test_Page>
            </updates>
        </layout>
    </frontend>
</config>

app / design / frontend / test / default / layout / test_page.xml

    <?xml version="1.0"?> 
<layout>
    <homepage translate="label">
        <label>Home Page</label>
        <reference name="root">
            <action method="setTemplate"><template>page/home.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </homepage> 
</layout>

Nie widzę niczego, co spieprzyłem, jest odczytywany jako moduł, ale nie wyświetla się niestandardowy układ :(

Chris Morris
źródło

Odpowiedzi:

21

Aby pojawił się w menu rozwijanym układu, musisz utworzyć niestandardowy moduł (możesz również dodać coś do pliku podstawowego, ale nie rób tego). Nazwijmy rozszerzenie Easylife_Layout. W tym celu musisz utworzyć następujące pliki: app/etc/modules/Easylife_Layout.xml - plik deklaracji

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Layout>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Page />
            </depends>
        </Easylife_Layout>
    </modules>
</config>

app/code/local/Easylife/Layout/etc/config.xml - plik konfiguracyjny

<?xml version="1.0"?> 
<config>
    <modules>
        <Easylife_Layout>
            <version>0.0.1</version>
        </Easylife_Layout>
    </modules>
    <global>
        <page>
            <layouts> 
                <lookbook module="page" translate="label">
                    <label>Lookbook</label>
                    <template>page/1column-lookbook.phtml</template>
                    <layout_handle>lookbook</layout_handle>
                </lookbook> 
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <easylife_layout>
                    <file>easylife_layout.xml</file>
                </easylife_layout>
            </updates>
        </layout>
    </frontend>
</config>

app/design/frontend/{interface}/{theme}/layout/easylife_layout.xml - plik układu

<?xml version="1.0"?> 
<layout>
    <lookbook translate="label">
        <label>Lookbook</label>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </lookbook> 
</layout>

Ten ostatni jest niezbędny, jeśli chcesz mieć możliwość odwołania się do własnego układu w plikach układu. Coś jak:

<update hande="lookbook" />

Wyczyść pamięć podręczną i ... to wszystko. Wiem, czy to działa dla ciebie.

Marius
źródło
zalogowanie się i wylogowanie zrobiło dla mnie lewę
cyptus
6

Istnieją dwie możliwości:

  1. Dodaj niestandardowy układ do swojej kategorii i zrób to:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. Wdrożyć go jako układ strony i dodać go do config.xmlw global/page/layouts/, ale nie wiem, jak to zrobić dokładnie.

Jeśli potrzebujesz go tylko raz, możesz pozostać przy pierwszym rozwiązaniu. Ale bądź ostrożny. Są <action method="setIsHandle"><applied>1</applied></action>w page.xmlCzasach to ustawienie zapobiega zmianie szablonu.

Aby zrobić pierwsze rozwiązanie: wybierz kategorię, przejdź do Custom Designi umieść wszystko w <layout />węźle w polu Custom Layout Updatetekstowym, np .:

<reference name="root">
    <action method="setBackgroundGraphic">
        <background>two-pieces</background>
    </action>
    <action method="setTemplate">
    <template>page/2columns-right-highStep.phtml</template>
    </action>
    <action method="setIsHandle">
        <applied>1</applied>
    </action>
</reference>
Fabian Blechschmidt
źródło
Gdzie musiałbym nakleić odniesienie do układu dla pierwszego? Próbowałem bardzo podobnego kodu w layout.xml, ale nie miałem pojęcia, jaki poziom go umieścić, mam tam odniesienia domyślnie dla wszystkich stron kategorii, używając <catalog_category_view>, więc założyłem, że potrzebuję czegoś podobnego, aby dodać inną opcję
Chris Morris
zredagował odpowiedź
Fabian Blechschmidt