Jak zrobić układ modułu, aby był wyświetlany na wszystkich motywach

13

Oto sytuacja: mam kilka samodzielnie wykonanych modułów, wszystkie przetestowane i działające przy użyciu domyślnego motywu. Następnie kupiliśmy i zainstalowaliśmy nowy motyw. Przełączono na nowy motyw, a moduły nie są wyświetlane. Po kilku testach try / fail stwierdziłem, że muszę skopiować odpowiedni układ i pliki szablonów do odpowiednich folderów ostatnio zainstalowanego motywu.

Więc moje pytanie brzmi: co powinienem zrobić, aby wszystkie moduły działały z dowolnym motywem zainstalowanym po instalacji modułu?

Jarosław
źródło
1
Jeśli umieścisz pliki układu w projekcie / frontend / base / default / ... będą one wyświetlane bez względu na motyw
Sander Mangel

Odpowiedzi:

17

Umieść wszystko na base/defaultścieżce.

Przykład:

app/design/frontend/base/default

skin/frontend/base/default

Mark Shust
źródło
Auć! nie myślałem o tym, masz rację, przetestuję jak tylko dotrzesz do biura.
Jarosław
+1 - Istnieje zbyt wiele modułów oznaczonych jako „społeczność”, które nie stosują się do tej praktyki i powinny.
pspahn
Podstawowy szablon został wprowadzony w Magento 1.4. aby rozwiązać dokładnie ten problem. We wcześniejszych wersjach sposobem na to było kopiowanie plików szablonów, jeśli nie korzystałeś z pakietu domyślnego.
Kristof w Fooman
5

Trudna prawda jest taka, że ​​tak naprawdę nie można zagwarantować, że będą. Umieszczenie plików w base/default(lub default/defaultjeśli zastąpią one podstawowe szablony - ponieważ nie chcesz zastępować plików podstawowych instalacją modułu, chociaż to zmusza do zachowania duplikatów w wersji Enterprise) zagwarantuje, że staną się one awariami, ale pliki motywów zawsze mieć najwyższy poziom priorytetu.

Większość modułów jest dostarczana z instrukcją instalacji, która obejmuje wzmiankę o skopiowaniu plików szablonów do motywu użytkownika, jeśli są one niestandardowe. To prawie wszystko, co możesz zrobić.

Andrew Quackenbos
źródło
4

Jedną z rzeczy, z których korzystaliśmy kilka razy, jest modl [Fabrizio Branca] [1] [Custom Fallback] [2]. Jest to bardzo przydatny moduł do określania własnej niestandardowej hierarchii zastępczej kompozycji. Jedno, co możesz zrobić, to określić:

  1. custom/theme

  2. base/default

  3. default/default

Następnie wszelkie moduły, które umieszczają własne szablony w default/defaultkompozycji. Nie będzie działać, jeśli próbują zastąpić base/defaultpakiety.

Możesz określić dowolną liczbę pakietów / motywów w niestandardowej hierarchii rezerwowej.

[1]: http://www.fabrizio-branca.de/ [2]: http://www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html

Luke Mills
źródło
2

Każdy szablon i plik układu base/defaultzostanie załadowany, chyba że zostanie zastąpiony gdzieś na ścieżce. Jeśli jednak moduł niestandardowy jest pewnego rodzaju widżetem, powinieneś upewnić się, że jest on powtarzany tam, gdzie jest to potrzebne. Jeśli na przykład wprowadzasz zmiany, które są wyświetlane na stronie produktu za pośrednictwem getChildHtml, te połączenia powinny również mieć odpowiedni temat. Jeśli jednak szablony modułów same w sobie są stronami i nie zostały wczytane base/default, coś blokuje konfigurację układu i powinieneś znaleźć co.

Petar Dzhambazov
źródło
Bardzo ciekawy komentarz na temat tego getChild, że rzeczywiście mam kilka tego rodzaju wezwań.
Jarosław
1

Nie ma na to prostej odpowiedzi. To zależy od posiadanych modułów. Na przykład niektóre firmy zajmujące się modułami, zastępujące podstawowe pliki. W związku z tym, należy najpierw sprawdzić, jakie pliki dostępne w app/etc/modulesi app/code/local/Mage, app/code/community/Magefoldery. Jak zapewne wiesz, pierwszy folder to folder inicjalizacji modułu, który możesz wyłączyć lub włączyć moduły powiązane z plikami xml. Ostatnie dwa foldery (jeśli są dostępne) to foldery zastępujące kod podstawowy.

Następnie otwórz jeden z dostępnych plików xml etc/modules. Zobaczysz coś takiego:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

Oto ważne części to Companyi Namespace. Gdy odwiedzisz foldery app/code/locallub app/code/community, zobaczysz folder o nazwie Companyi następujący po podfolderze o nazwie Namespace.

Podczas wyszukiwania Namespacezobaczysz podfolder o nazwie /etc. Ten folder przechowuje plik konfiguracyjny związany z modułem config.xml. Ten plik ma wiersze konfiguracji związane z modułem, do którego można odwoływać się, jakie pliki dotyczą tego modułu.

Jak powiedziałem w mojej pierwszej linii, trudno jest sobie z tym poradzić.

Oğuz Çelikdemir
źródło
Myślę, że nie trafiłeś w sedno pytania. Pytał o aktualizacje układu. Najlepszą praktyką jest użycie ścieżki base / default / yourmodule.
Mark Shust