virtuemart
0

Как добавить новое поле для товара в Virtuemart 3

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

Как пример реализации — вывод еще одного описания в категории:

Добавить поле Virtuemart

В категории добавили новое поле, которое не отображается на странице товара. В карточке — краткое описание и полное описание.

Для того, чтобы добавить новое поле в Virtuemart 3, сначала нужно добавить поле в вашей БД в таблицу `ваш_префикс_virtuemart_products_ru_ru`:

ALTER TABLE `ваш_префикс_virtuemart_products_ru_ru` ADD `product_newfield` TEXT NOT NULL

Следующий шаг — оторазить поле в админке: administrator\components\com_virtuemart\views\product\tmpl\product_edit_description.php
Это шаблон страницы редактирования описания товара. Можно добавить в любом в папке tmpl, если в этом есть необходимость.
Нужно добавить:

<fieldset>
    <legend><?php echo JText::_('Название поля') ?></legend>        
    <?php echo $this->editor->display('product_newfield',  $this->product->product_newfield, '100%;', '550', '75', '20', array('pagebreak', 'readmore') ) ; ?>
</fieldset>

Дальше — в файле /administrator/components/com_virtuemart/tables/products.php нужно добавить переменную для нового поля:

var $product_sizes            = '';
В строчке
$this->setTranslatable(array('product_name','product_s_desc','product_desc','metadesc','metakey','customtitle'));

дописываем наше поле. В итоге должно быть так:

$this->setTranslatable(array('product_name','product_s_desc','product_desc','product_newfield','metadesc','metakey','customtitle'));

Теперь осталось вывести новое поле в шаблоне товара на сайте.
Для того, чтобы вывести на странице товара, вам нужно в файле /components/com_virtuemart/views/productdetails/tmpl/default.php
добавить

<?php // Новое поле
    if (!empty($this->product->product_newfield)) { ?>
        <div>
        
    <?php echo $this->product->product_newfield; ?>
        </div>
    <?php
    }  // Новое поле конец ?>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

два × три =