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

Как правильно изменить модель товары

Рекомендуемые сообщения

Добрый день!

 

Я совсем новичок в работе с OpenCart. 

 

У меня хитрым образом формируется рекламная цена товара - она формируется на основе цен опций товара. А в самой карточке товара стоит цена 0

 Для модулей Хиты, рекомендации, новинки надо выводить карточки товаров 

товары получаются функцией из модели

$product_info = $this->model_catalog_product->getProduct($product_id); 

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

И как лучше менять код модулей? - делать копию модуля и только его менять? 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Постараюсь ответить. Т.к. заранее опции товара неизвестны сначала нужно получить список доступных опций, затем выбрать самые первые и посчитать цену товара учитывая выбранные опции, акции, купоны и т.д. Из готовых функций более всего подходит функция ControllerCheckoutCart::add(); за основу рекомендую взять именно ее.

 

Да, изменения будут удалены. Для того, чтобы напрямую не вносить изменения в код есть vqmod. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Постараюсь ответить. Т.к. заранее опции товара неизвестны сначала нужно получить список доступных опций, затем выбрать самые первые и посчитать цену товара учитывая выбранные опции, акции, купоны и т.д. Из готовых функций более всего подходит функция ControllerCheckoutCart::add(); за основу рекомендую взять именно ее.

 

Да, изменения будут удалены. Для того, чтобы напрямую не вносить изменения в код есть vqmod. 

Спасибо!

 

Как посчитать правильную цену я понимаю :) вопрос в том как изменять стандартные модели и контроллеры чтобы при обновлении версий OpenCart не потребовалось все переделывать. Про vqmode  увы даже не слышал. Большое спасибо за рекомендацию. А вы ее использовали ? сильно замедляет работу системы ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

 

Как посчитать правильную цену я понимаю :) вопрос в том как изменять стандартные модели и контроллеры чтобы при обновлении версий OpenCart не потребовалось все переделывать. Про vqmode  увы даже не слышал. Большое спасибо за рекомендацию. А вы ее использовали ? сильно замедляет работу системы ? 

 

Я обычно делаю так. Делаю бекап сайта перед внесением изменений, вношу необходимые изменения в файлы. Если редактировал много файлов, то включаю BeyondCompare(пакетное сравнение содержимого файлов и каталогов) стоит $50. Вместо него можно что-нибудь другое использовать. Смотрю какие изменения в какие файлы вносил, на лету делаю vqmod файл, тестирую его на бекапе (тот что без изменений). Если работает, то удаляю сайт с изменениями. Итого: все изменения, которые я произвел есть в одном xml файле.

 

От использования vqmod я отказался и клиентам не советую. Проще вносить изменения в код. Интернет-магазин не на один день делается, а как придет пора обновляться стоит посмотреть, - "а стоит ли вообще?!". Ведь можно новый функционал заменить модулем. Начиная с версии 2.4.1 vqmod стал быстрее а 2.5.0 вообще летает. Скачать vqmod 2.5.0 (самый свежий на данный момент) можно здесь. Документация по разработке vqmod модулей на английском языке находится здесь.

Вот Вам пример простого vqmod файла:

<?xml version="1.0" encoding="UTF-8"?>
<modification>
	<id>MCLite</id>
	<version>1.0</version>
	<vqmver>2.4.1</vqmver>
	<author>Shashakhmetov Talgat [talgatks@gmail.com]</author>
	<file name="admin/controller/common/header.php">
		<operation error="log">
			<search position="after"><![CDATA[$this->data['text_zone'] = $this->language->get('text_zone');]]></search>
			<add><![CDATA[$this->data['text_mclite'] = $this->language->get('text_mclite');]]></add>
		</operation>
		<operation error="log">
			<search position="before"><![CDATA[$this->data['stores'] = array();]]></search>
			<add><![CDATA[$this->data['mclite'] = $this->url->link('mclite/setting', 'token=' . $this->session->data['token'], 'SSL');]]></add>
		</operation>
	</file>
	<file name="admin/language/*/common/header.php">
		<operation error="log">
			<search position="before"><![CDATA[?>]]></search>
			<add><![CDATA[$_['text_mclite']		= 'Настройки MCLite';]]></add>
		</operation>
	</file>
	<file name="admin/view/template/common/header.tpl">
		<operation error="log">
			<search position="after"><![CDATA[<li><a href="<?php echo $setting; ?>"><?php echo $text_setting; ?></a></li>]]></search>
			<add><![CDATA[<li><a href="<?php echo $mclite; ?>"><?php echo $text_mclite; ?></a></li>]]></add>
		</operation>
	</file>
</modification> 

 

Добро пожаловать в сообщество) Крайне не рекомендую использовать чистый OpenCart используйте ocStore/BroCart/OcShop о преимуществах каждой из них можно узнать в гугле. 

 

Статьи по теме:

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От FlyShk
      Скачать/Купить дополнение


      3d viewer Opencart 2.0
      3D Object Viewer Opencart 2
      Модуль позволяет выводить исходный файл 3D обьекта из корневой папки сайта на страницу товара.
      Обладает адаптивными свойствами и полной поддержкой планшетных и мобильных устройств.
      Работает полностью на JavaScript, использует технологию Webgl и библиотеку JS + Html5.
      Работает с такими форматами как:
      - Wavefront obj File
      - STL File
      Пример: http://3dopencart2.esy.es/
      Добавил FlyShk Добавлено 02.11.2014 Категория Модули Системные требования Сайт разработчика Старая цена Метод активации Ioncube Loader OpenCart ocStore OpenCart.Pro, ocShop  
    • От Allaur
      Доброго времени суток!
      Есть необходимость вывести в <title> продукта  model
      То есть что бы титлы были такого вида
      Название товара - model
       
      Цену получилось вывести
       
      $this->document->setTitle($product_info['name']." - Цена ".$this->data['price']); Подскажите пожалуйста как подобным образом вывести model
    • От magzhan9292
      на корне сайта я создал папку generator/seo.php
      <?php // Configuration if (is_file('../config.php')) { require_once('../config.php'); } // Startup require_once(DIR_SYSTEM . 'startup.php'); class ControllerSeoMeta extends Controller{ public function index() { $this->load->model('catalog/product'); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); print_r('PRINT'); $this->response->setOutput($this->load->view('catalog/product_list', $data)); } } ?> как мне обратиться к этому файлу через браузер что-бы выводилось PRINT
      пытался так не получилось sitename.kz/generator/seo.php?route=catalog/product_list
      еще один вопрос как использовать готовые opencart классы модель
    • От tambu34
      Знаю, подобные треды были, но ответа для себя я так и не нашел. Просьба разжевать для меня.
      В Opencart есть поле model - некоторые говорят, что это код товара (артикул). В ocStore 2.1 в карточке товара выводится как "код товара". У себя я так и заполняю, уникальный код товара. Сейчас я задаюсь вопросом в реализации следующего: нужно, чтобы при нажатии на производителя выводился список моделей товаров (не артикулов), например:
      Шина Rosava --> модель Snowgard. И так далее. Какое всё же поле для этого стоит использовать? Может код товара перенести в SKU ?
      Вопрос иерархии меня немного тревожит, может быть я вообще хочу немного странного.
      Сейчас так: Категория-подкатегория-товар. (разные размеры одинаковых товаров хранятся в атрибутах)
      Рассматриваю также: Производитель-модель-товар. Возможно для такой реализации нужен отдельный модуль?
      Разжуйте мне на пальцах, как в Opencart 2 правильно внедрить понятие "Модель товара" (не артикул или код товара).
      Спасибо.
    • От Dzusto
      Как сделать необязательной к заполнению "Модель" ocstore 2.3 ? Все описанные способы в т.ч и на этом форуме уже опробованы и не работают. Выходит ошибка. Поле убирать не нужно, так как оно нужно, но надо сделать его необязательным , т.е. если нет - то пусть будет пусто.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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