Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Добрый день!

 

Я совсем новичок в работе с 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 [[email protected]]</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
Надіслати
Поділитися на інших сайтах

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.