OpenCart. Запрос БД. Вывод переменных

143
18 октября 2017, 07:47

Здравствуйте. Прошу идеи, предложения или еще что-то по реализации данного вопроса.

Допустим, что есть подобная схема, которую нужно будет реализовать на странице товары(cms OpenCart). В каждой карточке товара (на общей странице товаров) будет мини калькулятор, в который будет подгружаться через SQL запрос по средствам PHP корректные цены для каждого товара.

После они будут обрабатываться JavaScript кодом для калькуляции.

От сюда вопросы:

Kак построить логику запроса, который будет брать цены от каждого товара находясь на общей странице товаров?

Как загрузить переменные через echo, если стандартный HTML редактор (в него будет записываться таблица для калькулятора) комментирует объявление PHP кода?

Спасибо всем ответившим, буду рад любым предложениям, ссылкам на статьи, примерам и тд.

Answer 1

Если честно, не до конца понятен вопрос: товары только данной категории или все товары, цены будете брать основные или, как и положено, будете учитывать скидки, акции и т.д.. Ну и использовать надо возможности ОС, а вариантов здесь много, даже если не писать собственный модуль/дополнение. Контроллер Категории (/catalog/controller/product/category.php) передает массив данных о продуктах в шаблон формирования страницы категории (/catalog/view/theme/default/template/product/category.tpl), единственное, что изначально массив данных о продуктах формируется из модели продуктов (/catalog/model/catalog/product.php) с учетом сортировки, фильтрации, пагинации и т.д.. Как я это вижу, один из вариантов ("наколенный" и не самый правильный): Открываем файл контроллера, который отвечает за Категорию /catalog/controller/product/category.php и добавляем

 $data['calculator'] = array();
$filter_calculator = array(
                'filter_category_id' => $category_id,
                'filter_filter'      => '',
                'sort'               => 'p.sort_order',
                'order'              => 'ASC',
                'start'              => '0',
                'limit'              => '9999'
            );
$calculators = $this->model_catalog_product->getProducts($filter_calculator);
foreach ($calculators as $calculator) {
                if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                    $price = $this->currency->format($this->tax->calculate($calculator['price'], $calculator['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
                } else {
                    $price = false;
                }
                if ((float)$calculator['special']) {
                    $special = $this->currency->format($this->tax->calculate($calculator['special'], $calculator['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
                } else {
                    $special = false;
                }
                if ($this->config->get('config_tax')) {
                    $tax = $this->currency->format((float)$calculator['special'] ? $calculator['special'] : $calculator['price'], $this->session->data['currency']);
                } else {
                    $tax = false;
                }
                $data['calculators'][] = array(
                    'product_id'  => $calculator['product_id'],
                    'name'        => $calculator['name'],
                    'price'       => $price,
                    'special'     => $special,
                    'tax'         => $tax,
                    'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $calculator['product_id'] . $url)
                );
            }

Тогда в шаблоне (/catalog/view/theme/default/template/product/category.tpl) можно будет сделать так:

<table>
<tbody>
<?php foreach ($calculators as $calculator) { ?>
<tr id=calc_<?php echo $calculator['product_id']; ?>>
<td id=calcname_<?php echo $calculator['product_id']; ?>><?php echo $calculator['name']; ?></td>
<td id=calcprice_<?php echo $calculator['product_id']; ?>><?php echo $calculator['price']; ?></td>
</tr>
<?php } ?>
</tbody>
</table>

ID строк и ячеек будет уникальным и зависимым от id товара, можно будет js обрабатывать как будет удобно. Вообще, в ОС очень читабельный и простой код, и соответствие MVC архитектуре, попробуйте разобраться. Руководство разработчика

READ ALSO
Как разбить строку на элементы массива в зависимости от типа символа PHP

Как разбить строку на элементы массива в зависимости от типа символа PHP

Помогите, пожалуйста, составить универсальное регулярное выражение для разделения строки на числа, сочетания букв идущих подряд и пробел

185
php вывод массива из json

php вывод массива из json

сейчас я делаю вывод массива skills прямым выводом его элементов, но если в массиве элементов оказывается меньше трех - скрипт не работает, а если...

190
Как каждые 10 часов очищать файл text.txt [дубликат]

Как каждые 10 часов очищать файл text.txt [дубликат]

На данный вопрос уже ответили:

131
Как передать двойные кавычки в форму

Как передать двойные кавычки в форму

Добрый деньУ меня есть форма с текстовым полем Input В это текстовое поле отправляется значение при нажатии на кнопку

195