Как добавить пользовательскую вкладку на странице сведений о продукте на стороне администратора (Opencart)

У меня есть магазин в opencart.

Просто мне нужно поставить на настраиваемое поле в разделе сведений о продукте увидеть скриншот, вы получите идею.

Он должен вести себя как другие вкладки.

Я не хочу менять основной файл product_form.tpl напрямую, так как я разрабатываю расширение opencart.

3 ответа

Чтобы добавить новую вкладку в форму редактирования продукта с помощью OCmod -

  1. Создайте новый файл и скопируйте в него код ниже. Сохраните этот файл с расширением.ocmod.xml (пример - addtab.ocmod.xml)

    <modification>
    <name>Add tab</name>
    <version>1.0</version>
    <link>test</link>
    <author>test</author>
    <code>add_tab_to_product</code>
    
    <file path="admin/view/template/catalog/product_form.tpl">
    <operation>
    <search><![CDATA[<li><a href="#tab-design" data-toggle="tab"><?php echo $tab_design; ?></a></li>]]></search>
    <add position="after"><![CDATA[<li><a href="#tab-shipping" data-toggle="tab"><?php echo $tab_shipping; ?></a></li>]]></add>
    </operation>
    <operation>
    <search><![CDATA[<div class="tab-pane" id="tab-design">]]></search>
    <add position="before"><![CDATA[<div class="tab-pane" id="tab-shipping">Write contents of tab Shipping here...</div>]]></add>
    </operation>
    </file> 
    
    <file path="admin/controller/catalog/product.php">
    <operation>
    <search><![CDATA[$data['tab_design'] = $this->language->get('tab_design');]]></search>
    <add position="after"><![CDATA[$data['tab_shipping'] = $this->language->get('tab_shipping');]]></add>
    </operation>
    </file>
    
    </modification>
    
  2. Перейдите в Extension > Extension Installer, нажмите кнопку загрузки и загрузите вышеуказанный сохраненный файл.

  3. Убедитесь, что расширение присутствует и включено в списке изменений. Обновить кеш (Расширение> Модификация> Обновить кеш).

Обновите свою страницу, и вы увидите вкладку Доставка в форме редактирования продукта.

Это проверено с OpenCart версии 2.1.x

Aki,

Если вы используете opencart2.x, то вы будете использовать ocmod для создания настраиваемой вкладки в product_form.tpl, а также в файле контроллера и модели. Вы не хотите менять основные файлы для opencart. поэтому, когда вы будете обновлять OpenCart, то ваши файлы данных не будут потеряны.

OCMOD Ref.

  1. https://github.com/opencart/opencart/wiki/Modification-System
  2. http://ocextensions.co.uk/ocmod/ocmod

И если вы не используете opencart2.x, то вы будете использовать vqmod для создания расширения.

Ну, есть еще кое-что, поскольку вы забыли добавить tab_shipping в файл "admin/language/en-gb/en-gb.php". Теперь он будет работать, но вместо вкладки будет отображаться "tab_shipping" на вкладке.

<?xml version="1.0" encoding="UTF-8"?>
<modification
            xmlns="https://github.com/vqmod/vqmod"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="https://github.com/vqmod/vqmod https://raw.githubusercontent.com/vqmod/vqmod/master/vqmod.xsd">
            >
    <id>Add Shipping tab Product Page</id>
    <version>1.0</version>
    <vqmver>2.X</vqmver>
    <author>Your Name</author>
    <code>add_tab_to_product</code> 
    <file path="admin/view/template/catalog/product_form.tpl">
        <operation>
            <search><![CDATA[<li><a href="#tab-design" data-toggle="tab"><?php echo $tab_design; ?></a></li>]]></search>
            <add position="after"><![CDATA[<li><a href="#tab-shipping" data-toggle="tab"><?php echo $tab_shipping; ?></a></li>]]></add>
        </operation>
        <operation>
            <search><![CDATA[<div class="tab-pane" id="tab-design">]]></search>
            <add position="before"><![CDATA[<div class="tab-pane" id="tab-shipping">Write contents of tab Customize here...</div>]]></add>
        </operation>
    </file> 

    <file path="admin/controller/catalog/product.php">
        <operation>
            <search><![CDATA[$data['tab_design'] = $this->language->get('tab_design');]]></search>
            <add position="after"><![CDATA[$data['tab_shipping'] = $this->language->get('tab_shipping');]]></add>
        </operation>
    </file>

    <file path="admin/language/en-gb/en-gb.php">
        <operation>
            <search><![CDATA[$_['tab_design']                    = 'Design';]]></search>
            <add position="after"><![CDATA[$_['tab_shipping']                    = 'Shipping';]]></add>
        </operation>
    </file>
</modification>
Другие вопросы по тегам