Цена от


 Поделиться

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

Помогите решить задачу. Надо выводить в категориях и в модулях рекомендуемые итд приставку к От , если в товаре есть опции влияющие на цену. Например: от 430 руб.

Как можно такое реализовать?

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

1 минуту назад, Yoda сказал:

Ну и проверьте синтаксис и правильнох названий кнопки - а то я так набросал на скорую руку.

Благодарю за ответ Yoda. я как и большинство наверное тут задающих вопросы, начинающий. Пока знаю какая строчка кода в tpl за что отвечает, а вот набросать метод проверки это из ряда фантастики)) если это не долго, можете накидать хоть как пример, а там уже буду юзать и пробовать.

 

 

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

19 минут назад, Yoda сказал:

Вобщем я спросонья перемудрил все проще

в модели product есть метод

 

getProductOptions($product_id)

 

Вот собстенно его вам с головой if( $this->model_catalog_product->getProductOptions($product_id) ) {

Делаем цена ОТ

}

 

Этот код надо вставить после

public function getProductOptions($product_id) {

?

Делаем цена от: вот так вставляю после открывающейся скобки

if( $this->model_catalog_product->getProductOptions($product_id) ) {

echo 'От'

} 

Что то не так по моему я делаю))))

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

У меня в модели продукта такая вот функция

 

public function getProductOptions($product_id) {
		$product_option_data = array();

		$product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order");

		foreach ($product_option_query->rows as $product_option) {
			if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {
				$product_option_value_data = array();

				$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

				foreach ($product_option_value_query->rows as $product_option_value) {
					$product_option_value_data[] = array(
						'product_option_value_id' => $product_option_value['product_option_value_id'],
						'option_value_id'         => $product_option_value['option_value_id'],
						'name'                    => $product_option_value['name'],
						'image'                   => $product_option_value['image'],
						'quantity'                => $product_option_value['quantity'],
						'subtract'                => $product_option_value['subtract'],
						'price'                   => $product_option_value['price'],
						'price_prefix'            => $product_option_value['price_prefix'],
						'weight'                  => $product_option_value['weight'],
						'weight_prefix'           => $product_option_value['weight_prefix']
					);
				}

				$product_option_data[] = array(
					'product_option_id' => $product_option['product_option_id'],
					'option_id'         => $product_option['option_id'],
					'name'              => $product_option['name'],
					'type'              => $product_option['type'],
					'option_value'      => $product_option_value_data,
					'required'          => $product_option['required']
				);
			} else {
				$product_option_data[] = array(
					'product_option_id' => $product_option['product_option_id'],
					'option_id'         => $product_option['option_id'],
					'name'              => $product_option['name'],
					'type'              => $product_option['type'],
					'option_value'      => $product_option['option_value'],
					'required'          => $product_option['required']
				);				
			}
		}

		return $product_option_data;
	}

 

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

На самом деле можно написать мутатор в клиентской модели. Однако это не лучшее решение но изменение потребуется только в одном месте.

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

4 минуты назад, Assada сказал:

На самом деле можно написать мутатор в клиентской модели. Однако это не лучшее решение но изменение потребуется только в одном месте.

 

Мутатор это что такое?

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

Вернее ацессор(геттер). 

И то. Из за жопности моделей в ОКе это не так просто сделать.

 

http://stackoverflow.com/questions/2763121/accessor-and-mutator

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

34 минуты назад, Assada сказал:

Вернее ацессор(геттер). 

И то. Из за жопности моделей в ОКе это не так просто сделать.

 

http://stackoverflow.com/questions/2763121/accessor-and-mutator

 

А если добавить просто текстовое поле в карточку товара и вписывать туда От если например цена от, вроде бы нормальный вариант?

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

 

1 час назад, Assada сказал:

На самом деле можно написать мутатор в клиентской модели.

1 час назад, Assada сказал:

Вернее ацессор(геттер). 

 

эти предложения прекрасны, действительно, и каждое по-своему, но в ваккуме, ибо свойств у ModelCatalogProduct нет

вы готовы переписать архитектуру opencart? смело

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

15 минут назад, savage4pro сказал:

вы готовы переписать архитектуру opencart? смело

 

Ну это займет не так много времени как кажется. Реализовать базовую модель которая будет реализовывать ArrayAccess с использованием query buildera. Ну или тупо взять и сделать ActiveRecord. Тогда и старые контроллеры будут работать и новые можно будет реализовать по новому. Однако нужно будет каждое расширение в котором есть модель оптимизировать. 

Всего перевести на новую архитектуру нужно будет примерно 100 админ моделей и 130 клиентских. Предположим что модели можно объединить(админ и клиент) тогда у нас около 120 моделей. Столько же реппозиториев. На 1 комплект модель-репозиторий уйдет примерно 10-20 минут времени. Тобишь на все уйдет рабочая неделя. Если все делать одному по 8 часов в день. Однако это Open Source проект и можно реализовать за 3-4 дня. 

Правда все это разбивается о расширения. И это лишь влажные мечты =(

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

ну ок, уговорили, с нетерпением ждем следующей пятницы, преальфа MagentOOPenCartAssadaEdition aka "Пошел ты нахрен, Даниэль" уже наверняка будет

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

В 26.05.2016 at 14:53, savage4pro сказал:

ну ок, уговорили, с нетерпением ждем следующей пятницы, преальфа MagentOOPenCartAssadaEdition aka "Пошел ты нахрен, Даниэль" уже наверняка будет

Я не готов. Это лишь 

В 26.05.2016 at 14:07, Assada сказал:

влажные мечты

 

Но достаточно подъемные для комьюнити. 

 

В 26.05.2016 at 15:05, Yoda сказал:

ВЫВСЕТУТВРЕТЕЯСАМЫЙУМНЫЙМОГУНАСТРУЯЧИТЬМЕГОДВИЖОКВОДНОЛИЦОИЧЕМВЫЗДЕСЬЗАНИМАЕТЕСЬСМЕРДЫ

Мое ЧСВ не настолько велико.

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

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу