Перейти к содержанию

Лидеры

  1. Печенег

    Печенег

    Администраторы


    • Баллы

      1

    • Постов

      64


Популярный контент

Показан контент с высокой репутацией 07/25/22 во всех областях

  1. 1. Выполнить SQL запрос в БД: ALTER TABLE `jos_virtuemart_products` ADD `new_pole` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `product_sku` Где: 'jos_virtuemart_products' - таблица в которую добавляем столбец (колонку); 'new_pole' - название добавляемой новой колонки (столбца); 'product_sku' - добавить после указанной колонки; TEXT - тип данных. Более подробно о всех типах данных можно ознакомиться по ссылке -> типы данных mysql 2. Добавляем поле в админку Virtuemart: Находим файл /administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php и в нужном месте размещаем код Текстовое многострочное поле <textarea> <fieldset> <legend>Название поля или языковая переменная</legend> <textarea class="inputbox" name="new_pole" cols="65" rows="3" ><?php echo $this->product->new_pole; ?></textarea> </fieldset> Однострочное поле <input> <fieldset> <legend>Название поля или языковая переменная</legend> <input class="inputbox" name="new_pole" value="<?php echo $this->product->new_pole; ?>" /> </fieldset> 3. Объявить переменную: В файле /administrator/components/com_virtuemart/tables/products.php находим var $product_sku = null; и вставляем ниже var $new_pole = null; Если вы добавляете новое поле в таблицу jos_virtuemart_products_ru_ru то вам необходимо в конце файла найти строку $this->setTranslatable(array('product_name', 'product_s_desc','product_desc','metadesc','metakey', 'customtitle')); и вставить нашу переменную $this->setTranslatable(array('new_pole', 'product_name', 'product_s_desc','product_desc','metadesc','metakey', 'customtitle')); Всё теперь данные в поле сохраняются в БД и выводятся в админке! 4. Вывод данных поля в пользовательской части шаблона: В нужном месте шаблона /components/com_virtuemart/views/productdetails/tmpl/default.php нужно вставить <?php if (!empty($this->product->new_pole)) { ?> <?php echo $this->product->new_pole; ?> <?php } ?> 5. Делаем поиск и сортировку по новому полю в админке: В файле /administrator/components/com_virtuemart/models/inventory.php находим строку $this->addvalidOrderingFieldName(array('product_name','product_sku','product_in_stock','product_price','product_weight','published')); и добавляем наше 'new_pole' $this->addvalidOrderingFieldName(array('new_pole','product_name','product_sku','product_in_stock','product_price','product_weight','published')); далее ниже в этом же файле находим строки и добавляем 'new_pole' и туда: $select = ' `#__virtuemart_products`.`virtuemart_product_id`, `#__virtuemart_products`.`product_parent_id`, `product_name`, `new_pole`, `product_sku`, `product_in_stock`, `product_weight`, `published`, `product_price`'; В файле /administrator/com_virtuemart/models/product.php находим строки var $valid_BE_search_fields = array('product_name', '`p`.product_sku','`l`.`slug`', 'product_s_desc', '`l`.`metadesc`'); и if (!isset($filterArray)) { $filterArray = array('product_name', '`p`.created_on', '`p`.product_sku','`p`.product_mpn', добавляем наше 'new_pole' в эти строки как делали ранее, получится: var $valid_BE_search_fields = array('new_pole', 'product_name', '`p`.product_sku','`l`.`slug`', 'product_s_desc', '`l`.`metadesc`'); и if (!isset($filterArray)) { $filterArray = array('new_pole', 'product_name', '`p`.created_on', '`p`.product_sku','`p`.product_mpn', Вот и всё поиск теперь по этому полю будет искать, а для сортировки по новому полю необходимо проделать следующее: 1. Если ваше поле выводится в столбец с общим списком то заголовок столбца должен выглядеть так <th><?php echo $this->sort('new_pole','COM_VIRTUEMART_NEW_POLE'); ?></th> 2. В языковых файлах ru-RU.com_virtuemart.ini (для админки VirtueMart и самого магазина) прописать значения константы COM_VIRTUEMART_NEW_POLE = "Новое поле"; или переопределяем языковую константу 'COM_VIRTUEMART_NEW_POLE' в админке, присваиваем значение 'Новое поле'. 3. В настройках VirtueMart в закладке "Настройка сортировки" нужно включить наше дополнительное поле для поиска и сортировки. (Поставить галочку рядом с новым полем и сохранить настройки) Готово! Для написания статьи использовались источник 1 и источник 2 (Dianis)
    1 балл

Общий чат

Введите ваше имя

×
×
  • Создать...

Важная информация

Продолжая использовать Веб-сайт ostogramm.ru Вы автоматически соглашаетесь с Политика конфиденциальности и Правила, в ином случаи просто покиньте его.