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

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

 

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

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

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

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

 

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

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

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

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

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 пользователей

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