Doe Posted February 8, 2026 at 12:51 PM Share Posted February 8, 2026 at 12:51 PM Добрый день всем знатокам! Нужна ваша помощь, решить самому ну никак не получается. Есть сайт на ocstore3, на странице товара встроена микроразметка в формате JSON-LD, вот в ней хотел бы в разделе "brand", то есть в название бренда, чтоб выводилась бы текущая категория товара, то есть, если к примеру если товар находится в такой категории: Главная - Автомобили - Немецкие - Мерседес, выводилась бы последняя категория, пример ниже: <script type="application/ld+json"> ... "brand": { "@type": "Brand", "name": "Мерседес" }, ... </script> Заранее всем спасибо, кто смог осилить эту сложную задачу, и объяснить мне куда и что, надо вставить! 0 Quote Link to comment Share on other sites More sharing options...
Malikk Posted February 8, 2026 at 04:14 PM Share Posted February 8, 2026 at 04:14 PM А какая тема у вас? 0 Quote Link to comment Share on other sites More sharing options...
Doe Posted February 8, 2026 at 04:38 PM Author Share Posted February 8, 2026 at 04:38 PM стандартная 0 Quote Link to comment Share on other sites More sharing options...
Tom Posted February 10, 2026 at 05:41 AM Share Posted February 10, 2026 at 05:41 AM В стандартной теме самого опенкарт , нет микро-разметки. Вы же можете получить название категории предварительно объявив в контроллере product.php ну или например из хлебных крошек итд итп. 0 Quote Link to comment Share on other sites More sharing options...
Doe Posted February 10, 2026 at 09:17 AM Author Share Posted February 10, 2026 at 09:17 AM (edited) Tom, естественно в стандартное теме её нету, просто человек спросил, а какой смысл какая тема, я не понял, поэтому стандартно и ответил))) Это я знаю, ну например description или name, можно вывести стандартно {{ name }}, к примеру. По такоежему принципу, нужно вывести главную категорию, в которой товар находится, как в самом начале писал если цепочка такая - Главная - Автомобили - Немецкие - Мерседес, то последнее "Мерседес" выводился! Как это сделать правильно (что где дописать/заменить) еще не знаю! Edited February 10, 2026 at 09:19 AM by Doe 0 Quote Link to comment Share on other sites More sharing options...
freeworld Posted February 10, 2026 at 09:47 AM Share Posted February 10, 2026 at 09:47 AM В 10.02.2026 в 12:17, Doe сказал: Tom, естественно в стандартное теме её нету, просто человек спросил, а какой смысл какая тема, я не понял, поэтому стандартно и ответил))) Это я знаю, ну например description или name, можно вывести стандартно {{ name }}, к примеру. По такоежему принципу, нужно вывести главную категорию, в которой товар находится, как в самом начале писал если цепочка такая - Главная - Автомобили - Немецкие - Мерседес, то последнее "Мерседес" выводился! Как это сделать правильно (что где дописать/заменить) еще не знаю! а производители? их нельзя туда вместо этой категории дублирующей бренд? потому, что будь вы в категории на одну выше - у вас в бренд полетит - Немецкие 0 Quote Link to comment Share on other sites More sharing options...
Doe Posted February 10, 2026 at 11:50 AM Author Share Posted February 10, 2026 at 11:50 AM (edited) Об этом я думал уже, и это было бы самым простым решением, но дело в том, что товаров не одна тысяча, и в каждой карточке копаться... сам понимаешь... Поэтому, проще кодом, выдернуть главную категорию и вставить ее... Видел на многих сайтах, когда в карточке товара, слева картинка товара, как обычно, а справа характеристики его, и категория указана к какой он относится! Вот подумал, должно быть решение! Edited February 10, 2026 at 11:51 AM by Doe 0 Quote Link to comment Share on other sites More sharing options...
freeworld Posted February 10, 2026 at 12:20 PM Share Posted February 10, 2026 at 12:20 PM В 10.02.2026 в 14:50, Doe сказал: Об этом я думал уже, и это было бы самым простым решением, но дело в том, что товаров не одна тысяча, и в каждой карточке копаться... сам понимаешь... Поэтому, проще кодом, выдернуть главную категорию и вставить ее... Видел на многих сайтах, когда в карточке товара, слева картинка товара, как обычно, а справа характеристики его, и категория указана к какой он относится! Вот подумал, должно быть решение! т.е. кодом производителя не выдернуть? 0 Quote Link to comment Share on other sites More sharing options...
Tom Posted February 10, 2026 at 12:36 PM Share Posted February 10, 2026 at 12:36 PM В 10.02.2026 в 16:50, Doe сказал: выдернуть главную категорию Она же у вас не главная, а последняя в цепочке пути к товару. Не особо верное решение на скорую руку. В файле catalog/controller/product/product.php Находим if ($product_info['meta_title']) { Добавляем до этой строки $data['current_category'] = ''; $category_query = $this->db->query("SELECT cd.name FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "category_description cd ON (p2c.category_id = cd.category_id AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "') WHERE p2c.product_id = '" . (int)$product_id . "' ORDER BY p2c.category_id DESC LIMIT 1"); if ($category_query->num_rows) { $data['current_category'] = $category_query->row['name']; } Получаем значение последней категории товара. В карточке товара используем так opencart 2 <?php echo $current_category; ?> Opencart 3 {{ current_category }} 0 Quote Link to comment Share on other sites More sharing options...
Doe Posted February 10, 2026 at 02:11 PM Author Share Posted February 10, 2026 at 02:11 PM В 10.02.2026 в 15:36, Tom сказал: Она же у вас не главная, а последняя в цепочке пути к товару. Не особо верное решение на скорую руку. В файле catalog/controller/product/product.php Находим if ($product_info['meta_title']) { Добавляем до этой строки $data['current_category'] = ''; $category_query = $this->db->query("SELECT cd.name FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "category_description cd ON (p2c.category_id = cd.category_id AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "') WHERE p2c.product_id = '" . (int)$product_id . "' ORDER BY p2c.category_id DESC LIMIT 1"); if ($category_query->num_rows) { $data['current_category'] = $category_query->row['name']; } Получаем значение последней категории товара. В карточке товара используем так opencart 2 <?php echo $current_category; ?> Opencart 3 {{ current_category }} Я считаю главной, у меня хлебные крошки идут так, к примеру: Главная - Автомобили (последняя не активная)... выбираешь марку авто Главная - Автомобили - Мерседес (тоже последняя не активная) Выбираешь любой товар в этой (последней) категории и тогда в карточке товара = Главная - Автомобили - Мерседес (последняя уже активная) Tom, ваша конструкция вроде показывает как и хотел бы, надо протестировать! БЛАГОДАРЮ! Хотел спросить, а в чем она не верная, какие подводные камни в ней? 0 Quote Link to comment Share on other sites More sharing options...
Malikk Posted February 10, 2026 at 02:17 PM Share Posted February 10, 2026 at 02:17 PM Там сортировка по category_id, в этом может быть проблема 0 Quote Link to comment Share on other sites More sharing options...
Tom Posted February 10, 2026 at 02:17 PM Share Posted February 10, 2026 at 02:17 PM В 10.02.2026 в 19:11, Doe сказал: Я считаю главной, у меня хлебные крошки идуи так, к примеру: Главная - это родитель. Вы же сами пишите В 08.02.2026 в 17:51, Doe сказал: Главная - Автомобили - Немецкие - Мерседес То есть у вас у товара главная / родитель это - Автомобили. В 10.02.2026 в 19:11, Doe сказал: Хотел спросить, а в чем она не верная, какие подводные камни в ней? Потому что не правильно внедрять в контроллер то что предназначено для модели. По хорошему нужно добавить новую функцию в модель. Ну например public function getProductLastCategory($product_id) { $query = $this->db->query("SELECT cd.name FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "category_description cd ON (p2c.category_id = cd.category_id AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "') WHERE p2c.product_id = '" . (int)$product_id . "' ORDER BY p2c.category_id DESC LIMIT 1"); return $query->num_rows ? $query->row['name'] : ''; } и в контроллере уже получать из модели данные $data['current_category'] = $this->model_catalog_product->getProductLastCategory($product_id); 1 Quote Link to comment Share on other sites More sharing options...
Doe Posted February 10, 2026 at 02:52 PM Author Share Posted February 10, 2026 at 02:52 PM В 10.02.2026 в 17:17, Tom сказал: Главная - это родитель. Вы же сами пишите То есть у вас у товара главная / родитель это - Автомобили. Потому что правильно не внедрять в контроллер то что предназначено для модели. По хорошему нужно добавить новую функцию в модель. Ну например public function getProductLastCategory($product_id) { $query = $this->db->query("SELECT cd.name FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "category_description cd ON (p2c.category_id = cd.category_id AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "') WHERE p2c.product_id = '" . (int)$product_id . "' ORDER BY p2c.category_id DESC LIMIT 1"); return $query->num_rows ? $query->row['name'] : ''; } и в контроллере уже получать из модели данные $data['current_category'] = $this->model_catalog_product->getProductLastCategory($product_id); Tom, что первый ваш вариант, что этот (для внедрения в модель), вроде показывает как надо! А на счет категорий.. может я не так выразился (написал)... для меня главная та, в которой находится товар, а он может находиться и в других категориях, но полюбому из других категорий будет товар вести на главную товара! 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.