COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Recommended Posts

Помогите решить задачу. Надо выводить в категориях и в модулях рекомендуемые итд приставку к От , если в товаре есть опции влияющие на цену. Например: от 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 сказал:

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

 

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

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

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 сказал:

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

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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