В Magento можно ли изменять файлы шаблонов по умолчанию с помощью пользовательских модулей, не взламывая их основные файлы * .phtml? - PullRequest
1 голос
/ 07 февраля 2011

Я создаю пользовательский модуль, в который я добавил кнопку на странице просмотра продукта (файл по умолчанию). Я вставил код кнопки в следующий файл

app\design\frontend\base\default\template\catalog\product\view.phtml

, и кнопка отображается и работает хорошо.Но каждый раз, когда обновляется Magento, вышеуказанный файл заменяется, и поэтому мой код отбрасывается. Есть ли способ изменить, расширить или внедрить кодировку шаблона из моего пользовательского модуля? Нужно ли мне переопределять основные блоки или что-то еще?

Ответы [ 3 ]

8 голосов
/ 07 февраля 2011
  • Дайте вашему модулю файл макета:

    ...
    <frontend>
        <layout>
            <updates>
                <YOUR_MODULE>
                    <file>YOURMODULE.xml</file>
                </YOUR_MODULE>
            </updates>
        </layout>
    </frontend>
    ...
    
  • В файле layout/YOURMODULE.xml базовой темы:

    <layout version="1.0">
        <catalog_product_view>
            <reference name="product.info">
                <action method="setTemplate"><name>YOURMODULE/product/view.phtml</name></action>
            </reference>
        </catalog_product_view>
    </layout>
    
  • Скопируйте измененный view.phtml в новый каталог, template/YOURMODULE/product/

  • При упаковке вашего модуля не забудьте включить все эти файлы, но не перезаписывайте template/catalog/product/view.phtml.

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

В качестве бонуса есть блок под названием extrahint сразу после цены типа core/text_list - у него нет шаблона, поэтому вы можете пропустить его при использовании подсказок пути шаблона . Вы можете безопасно добавлять в нее столько шаблонов, сколько захотите, без изменения существующих:

<layout version="1.0">
    <catalog_product_view>
        <reference name="product.info.extrahint">
            <block type="core/template" name="YOUR.CUSTOM.BLOCK" template="YOUR/CUSTOM/TEMPLATE.phtml" />
        </reference>
    </catalog_product_view>
</layout>

Это помогает, только если цена полезна для вас. К другим блокам, которые можно безопасно добавлять, относятся области параметров и контейнеров, но они отображаются только для продуктов с параметрами.

1 голос
/ 07 февраля 2011

Вы не можете построить свое собственное расширение, которое будет зависеть от представлений по умолчанию, оно показывает плохое планирование.Вам следует либо клонировать этот шаблон, либо расширить его, и у вас есть способы включить и отключить вашу функциональность.Обязательно нужно иметь «руководство для дизайнеров», если в вашем модуле реализованы шаблоны или есть способы изменить другие шаблоны.

1 голос
/ 07 февраля 2011

Проблема в том, что вы устанавливаете его в app / design / frontend / base / default.

Вам необходимо создать копию этого каталога в другом каталоге, например app / design / frontend / default / yoursite.

Прочтите это, чтобы получить дополнительную информацию о том, как это сделать.в частности

...