Всем привет, я новичок в теме опенкарта и просьба если что не злиться за глупости возможные с моей стороны. Я разобрался с выводом category_id в контроллерах category и product, но у меня на главной странице есть блок latest, как я понял он везде одинаковый. Попытался добавить в файл контроллера latest.php так же как и в category в строке "$data['products'][] = array(" добавил - $data['this_id'] = $category_id, но вывода нет, подскажите пожалуйста что нужно добавить, как выцепить этот $category_id , перед созданием вопроса хорошо порылся в интернете и не нашел ответа Версия ocStore 3.0.3.7
А вьюха это twig файл? Вот контроллер, извините если длинно, не нашел как делать спойлер /catalog/controller/extension/module/latest.php <?php class ControllerExtensionModuleLatest extends Controller { public function index($setting) { $this->load->language('extension/module/latest'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['products'] = array(); $results = $this->model_catalog_product->getLatestProducts($setting['limit']); if ($results) { foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); } else { $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if (!is_null($result['special']) && (float)$result['special'] >= 0) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); $tax_price = (float)$result['special']; } else { $special = false; $tax_price = (float)$result['price']; } if ($this->config->get('config_tax')) { $tax = $this->currency->format($tax_price, $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } return $this->load->view('extension/module/latest', $data); } } }
Вьюха это твиг. Ну сейчас у вас в дата - $data['products'][] = array( там нет данных о категориях. Собственно, нужо подтягивать категории товаров. Единственно, учтите, что у товаров несколько категорий может быть.
у меня только одна категория везде, это не страшно ну вот я в массив передаю, но ничего нет, я вам отправил чистый контроллер без моих изменений, я подразумеваю что $category_id надо как-то получить в контроллере этом, но увы не понимаю как $data['products'][] = array( $data['this_id'] = $category_id, --- это передаю 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], ...
Ну вы можете сделать так (навскидку): Код: $temp_cat = $this->model_catalog_product->getCategories($result['product_id']); $data['products'][] = array( 'this_id' => ( !empty($temp_cat) ? $temp_cat[0]['category_id'] : 0 ), // это передаёте 'product_id' => $result['product_id'], В таком случае у каждого product будет отображаться первая категория из загруженных
оооо как здорово, все выводится, спасибо большущее, а не подскажите где можно почитать о этом? не нашел информации по моделям, я хоть и слабоват но в базе разобраться могу, возможно документациях о моделях мне бы помогла) в вьюхе(твиге) выводится через - {{ product.this_id }}
А что вам непонятно? Открываете файл и смотрите какой метод, что делает. https://github.com/opencart/opencart/blob/3.0.3.8/upload/catalog/model/catalog/product.php#L410 И чем вас документация не устраивает? https://forum.opencart-russia.ru/threads/rukovodstvo-razrabotchika.6107/
спасибо я не говоорил что меня не устраивает документация, попросил по возможности ссылку дать на нее, если бы я ее нашел то возможно получилось разобраться самому, просто не получилось у меня найти её.
Пожалуйста. Помните, что если кто-то вам помог, то неплохо бы нажать кнопку "Мне нравится" чуть ниже сообщения. Это помогает авторам. Тут как с лайками))) Вам нужно почитать про то, как устроен опенкарт, бесцельно смотреть отдельные модели немного смысла, особенно учитывая, что в опенкарте существует ocmod (модификаторы). Попробуйте поискать, например, "Как создать модуль опенкарт", хотя бы логику начнёте немного понимать, а там проще будет.
Спасибо за совет, задачку вроде как простую хотел быстро решить и отвалился на 2 часа), понимаю что ковыряться в одном месте толку немного - обязательно буду разбираться
Пожалуйста. Первое время у всех так, а потом когда вьезжаешь в тему, то становится существенно проще.