iconbit Опубликовано: мая 26, 2016 Жалоба Поделиться Опубликовано: мая 26, 2016 Помогите решить задачу. Надо выводить в категориях и в модулях рекомендуемые итд приставку к От , если в товаре есть опции влияющие на цену. Например: от 430 руб. Как можно такое реализовать? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
iconbit Опубликовано: мая 26, 2016 Автор Жалоба Поделиться Опубликовано: мая 26, 2016 1 минуту назад, Yoda сказал: Ну и проверьте синтаксис и правильнох названий кнопки - а то я так набросал на скорую руку. Благодарю за ответ Yoda. я как и большинство наверное тут задающих вопросы, начинающий. Пока знаю какая строчка кода в tpl за что отвечает, а вот набросать метод проверки это из ряда фантастики)) если это не долго, можете накидать хоть как пример, а там уже буду юзать и пробовать. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
iconbit Опубликовано: мая 26, 2016 Автор Жалоба Поделиться Опубликовано: мая 26, 2016 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 'От' } Что то не так по моему я делаю)))) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
iconbit Опубликовано: мая 26, 2016 Автор Жалоба Поделиться Опубликовано: мая 26, 2016 У меня в модели продукта такая вот функция 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; } Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
iconbit Опубликовано: мая 26, 2016 Автор Жалоба Поделиться Опубликовано: мая 26, 2016 Этот код надо вставить во все контроллеры вывода продуктов да? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Assada Опубликовано: мая 26, 2016 Жалоба Поделиться Опубликовано: мая 26, 2016 На самом деле можно написать мутатор в клиентской модели. Однако это не лучшее решение но изменение потребуется только в одном месте. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
iconbit Опубликовано: мая 26, 2016 Автор Жалоба Поделиться Опубликовано: мая 26, 2016 4 минуты назад, Assada сказал: На самом деле можно написать мутатор в клиентской модели. Однако это не лучшее решение но изменение потребуется только в одном месте. Мутатор это что такое? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Assada Опубликовано: мая 26, 2016 Жалоба Поделиться Опубликовано: мая 26, 2016 Вернее ацессор(геттер). И то. Из за жопности моделей в ОКе это не так просто сделать. http://stackoverflow.com/questions/2763121/accessor-and-mutator Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
iconbit Опубликовано: мая 26, 2016 Автор Жалоба Поделиться Опубликовано: мая 26, 2016 34 минуты назад, Assada сказал: Вернее ацессор(геттер). И то. Из за жопности моделей в ОКе это не так просто сделать. http://stackoverflow.com/questions/2763121/accessor-and-mutator А если добавить просто текстовое поле в карточку товара и вписывать туда От если например цена от, вроде бы нормальный вариант? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: мая 26, 2016 Жалоба Поделиться Опубликовано: мая 26, 2016 1 час назад, Assada сказал: На самом деле можно написать мутатор в клиентской модели. 1 час назад, Assada сказал: Вернее ацессор(геттер). эти предложения прекрасны, действительно, и каждое по-своему, но в ваккуме, ибо свойств у ModelCatalogProduct нет вы готовы переписать архитектуру opencart? смело Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Assada Опубликовано: мая 26, 2016 Жалоба Поделиться Опубликовано: мая 26, 2016 15 минут назад, savage4pro сказал: вы готовы переписать архитектуру opencart? смело Ну это займет не так много времени как кажется. Реализовать базовую модель которая будет реализовывать ArrayAccess с использованием query buildera. Ну или тупо взять и сделать ActiveRecord. Тогда и старые контроллеры будут работать и новые можно будет реализовать по новому. Однако нужно будет каждое расширение в котором есть модель оптимизировать. Всего перевести на новую архитектуру нужно будет примерно 100 админ моделей и 130 клиентских. Предположим что модели можно объединить(админ и клиент) тогда у нас около 120 моделей. Столько же реппозиториев. На 1 комплект модель-репозиторий уйдет примерно 10-20 минут времени. Тобишь на все уйдет рабочая неделя. Если все делать одному по 8 часов в день. Однако это Open Source проект и можно реализовать за 3-4 дня. Правда все это разбивается о расширения. И это лишь влажные мечты =( Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: мая 26, 2016 Жалоба Поделиться Опубликовано: мая 26, 2016 ну ок, уговорили, с нетерпением ждем следующей пятницы, преальфа MagentOOPenCartAssadaEdition aka "Пошел ты нахрен, Даниэль" уже наверняка будет Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Assada Опубликовано: мая 27, 2016 Жалоба Поделиться Опубликовано: мая 27, 2016 В 26.05.2016 at 14:53, savage4pro сказал: ну ок, уговорили, с нетерпением ждем следующей пятницы, преальфа MagentOOPenCartAssadaEdition aka "Пошел ты нахрен, Даниэль" уже наверняка будет Я не готов. Это лишь В 26.05.2016 at 14:07, Assada сказал: влажные мечты Но достаточно подъемные для комьюнити. В 26.05.2016 at 15:05, Yoda сказал: ВЫВСЕТУТВРЕТЕЯСАМЫЙУМНЫЙМОГУНАСТРУЯЧИТЬМЕГОДВИЖОКВОДНОЛИЦОИЧЕМВЫЗДЕСЬЗАНИМАЕТЕСЬСМЕРДЫ Мое ЧСВ не настолько велико. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.