На форуме 9558 тем, 76452 сообщений, 44664 участников
тема · 531 просмотр · 12 ответов

Вывод category_id в latest

Общие вопросы
читают: 0 участников и 1 гость
порядок
8 фев 2023 16:29#1
Всем привет, я новичок в теме опенкарта и просьба если что не злиться за глупости возможные с моей стороны.
Я разобрался с выводом category_id в контроллерах category и product, но у меня на главной странице есть блок latest, как я понял он везде одинаковый. Попытался добавить в файл контроллера latest.php так же как и в category в строке "$data['products'][] = array(" добавил - $data['this_id'] = $category_id, но вывода нет, подскажите пожалуйста что нужно добавить, как выцепить этот $category_id , перед созданием вопроса хорошо порылся в интернете и не нашел ответа

Версия ocStore 3.0.3.7
8 фев 2023 17:22#2
Вы бы код прислали контроллера и вьюхи
Мои модули: Оптимизация, SEO, Скидки, Отчёты и не только

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
8 фев 2023 17:36#3
А вьюха это 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);
}
}
}
8 фев 2023 17:45#4
Вьюха это твиг.

Ну сейчас у вас в дата - $data['products'][] = array( там нет данных о категориях. Собственно, нужо подтягивать категории товаров. Единственно, учтите, что у товаров несколько категорий может быть.
Мои модули: Оптимизация, SEO, Скидки, Отчёты и не только

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
8 фев 2023 18:26#5
у меня только одна категория везде, это не страшно
ну вот я в массив передаю, но ничего нет, я вам отправил чистый контроллер без моих изменений, я подразумеваю что $category_id надо как-то получить в контроллере этом, но увы не понимаю как
$data['products'][] = array(
$data['this_id'] = $category_id, --- это передаю
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
...
8 фев 2023 18:37#6
Ну вы можете сделать так (навскидку):

code
$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 будет отображаться первая категория из загруженных
Мои модули: Оптимизация, SEO, Скидки, Отчёты и не только

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
8 фев 2023 18:38#7
Подкорректировал сообщение выше (навскидку же пишу)))
Мои модули: Оптимизация, SEO, Скидки, Отчёты и не только

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
8 фев 2023 18:47#8
оооо как здорово, все выводится, спасибо большущее, а не подскажите где можно почитать о этом? не нашел информации по моделям, я хоть и слабоват но в базе разобраться могу, возможно документациях о моделях мне бы помогла)
в вьюхе(твиге) выводится через - {{ product.this_id }}
8 фев 2023 19:00#9
А что вам непонятно?
Открываете файл и смотрите какой метод, что делает.
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/
8 фев 2023 19:13#10
спасибо
я не говоорил что меня не устраивает документация, попросил по возможности ссылку дать на нее, если бы я ее нашел то возможно получилось разобраться самому, просто не получилось у меня найти её.
8 фев 2023 19:14#11
Пожалуйста. Помните, что если кто-то вам помог, то неплохо бы нажать кнопку "Мне нравится" чуть ниже сообщения. Это помогает авторам. Тут как с лайками)))

Вам нужно почитать про то, как устроен опенкарт, бесцельно смотреть отдельные модели немного смысла, особенно учитывая, что в опенкарте существует ocmod (модификаторы). Попробуйте поискать, например, "Как создать модуль опенкарт", хотя бы логику начнёте немного понимать, а там проще будет.
Мои модули: Оптимизация, SEO, Скидки, Отчёты и не только

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
8 фев 2023 19:25#12
devimirochnik написал(а): ↑Пожалуйста. Помните, что если кто-то вам помог, то неплохо бы нажать кнопку "Мне нравится" чуть ниже сообщения. Это помогает авторам. Тут как с лайками)))

Вам нужно почитать про то, как устроен опенкарт, бесцельно смотреть отдельные модели немного смысла, особенно учитывая, что в опенкарте существует ocmod (модификаторы). Попробуйте поискать, например, "Как создать модуль опенкарт", хотя бы логику начнёте немного понимать, а там проще будет.

Спасибо за совет, задачку вроде как простую хотел быстро решить и отвалился на 2 часа), понимаю что ковыряться в одном месте толку немного - обязательно буду разбираться
8 фев 2023 19:26#13
Пожалуйста. Первое время у всех так, а потом когда вьезжаешь в тему, то становится существенно проще.
Мои модули: Оптимизация, SEO, Скидки, Отчёты и не только

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
сообщения 1–13 из 13
Чтобы ответить, войдите или зарегистрируйтесь.

Похожие темы