понедельник, 4 сентября 2017 г.

Как написать мод для Opencart 2.3

В процессе возни с Opencart возникла необходимость слегка подправить ему морду. По-доброму :) Убрать несколько лишних значков с сайта на Opencart'е. Можно просто вырезать их из кода, но это неспортивно и некрасиво. Сделаем мод на системе Ocmod.

Как написать мод для Опенкарта и OcStore – расскажу сегодня, по-русски и человеческим языком.



Что такое мод Ocmod? Если по-простому, это такой текстовый файл, где практически прямым текстом написано: "заменить вот то на вот это". Ничего сложного. При этом замена происходит не в кишках Опенкарта, а "на лету". То есть, так гораздо меньше шанс что-то сломать.

Грубо говоря, мод делает так:
1. Находит на сайте нужный элемент;
2. Заменяет этот элемент на другой или
3. Добавляет что-то до или после элемента.
Вот и всё.

Начнём с простого: создадим файл. Это обычный текстовый файл, с расширением .ocmod.xml.
Например, "my_first_mod.ocmod.xml"
Внутре у нея xml-разметка, как можно догадаться. Сначала идёт описание мода, потом – команды.
Шапка описания такая:

<modification>
   
    <name>Our mod name</name>
    <version>0.1</version>
    <link>http://automatize-it.blogspot.com</link>
    <author>Wa</author>
    <code>our_first_mod</code>

Самое важное поле – code. Текст там должен быть уникальным, без пробелов и латиницей.

Дальше идут собственно поиск и замена. Например, мне нужно было скрыть значки "сравнить", "в закладки", "профиль" и "корзина".
Тут самая сложная часть: найти, где нужные нам элементы прописаны на сайте. Можно искать через "просмотр кода страницы" в браузере, но проще ориентироваться на структуру файлов Opencart. Например, кнопки "сравнить" и "в закладки" выводятся на странице продукта, и значит, скорее всего лежать в файле product.tpl. Иконка входа в профиль находится в шапке сайта – значит, ищем в header.tpl. И так далее.
Код строится по такому принципу:

<file path="catalog/view/theme/default/template/product/product.tpl"> – в каком файле ищем
<operation> – начинаем поиск и замену
<search ><![CDATA[<button type="button"]]></search> – что ищем
<add position="replace"><![CDATA[]]></add> - на что заменим

Можно делать несколько операций внутри одного файла. Примерно так:

    <file path="catalog/view/theme/default/template/product/product.tpl">
        <operation>
            <search ><![CDATA[<button type="button" data-toggle="tooltip" class="btn btn-default" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product_id; ?>');"><i class="fa fa-heart"></i></button>]]></search>
            <add position="replace"><![CDATA[]]></add>
        </operation>
        <operation>
            <search ><![CDATA[<button type="button" data-toggle="tooltip" class="btn btn-default" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $product_id; ?>');"><i class="fa fa-exchange"></i></button>]]></search>
            <add position="replace"><![CDATA[]]></add>
        </operation>
    </file>

Не забываем закрывать теги, в том числе </modification> в самом конце файла.
Если нужно не заменить, а добавить, пишем в <add position= "before" или "after" вместо "replace".

Вот и всё. Пример мода для Opencart 2.3, который позволяет скрыть значки "сравнить", "в закладки", "профиль" и кнопку "корзина":

<modification>
    <name>Hide fav, cmpr, usr, crt</name>
    <version>0.6</version>
    <link>http://automatize-it.blogspot.com</link>
    <author>Wa</author>
    <code>Wa_hide_icons</code>

    <file path="catalog/view/theme/*/template/product/product.tpl">
        <operation>
            <search ><![CDATA[<button type="button" data-toggle="tooltip" class="btn btn-default" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product_id; ?>');"><i class="fa fa-heart"></i></button>]]></search>
            <add position="replace"><![CDATA[]]></add>
        </operation>
        <operation>
            <search ><![CDATA[<button type="button" data-toggle="tooltip" class="btn btn-default" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $product_id; ?>');"><i class="fa fa-exchange"></i></button>]]></search>
            <add position="replace"><![CDATA[]]></add>
        </operation>
    </file>
    <file path="catalog/view/theme/*/template/common/header.tpl">
        <operation>
            <search ><![CDATA[<div class="btn-group mt20">]]></search>
            <add position="replace" offset="19"><![CDATA[]]></add>
        </operation>
    </file>
    <file path="catalog/view/theme/*/template/common/cart.tpl">
        <operation>
            <search ><![CDATA[<p class="text-right"><a class="btn btn-default" href="<?php echo $cart; ?>"><strong><i class="fa fa-shopping-cart"></i> <?php echo $text_cart; ?></strong></a>]]></search>
            <add position="replace"><![CDATA[]]></add>
        </operation>
    </file>
</modification>

Комментариев нет:

Отправить комментарий