- Свои ISO образы
- VDS с оплатой раз и навсегда
- Аренда VDS на любой срок, с оплатой по дням
- Большое разнообразие конфигураций
- Дата-центры в ЕС и России
Сейчас понадобилось вывести в список товаров, для каждого товара категории, где этот товар есть. Полезно для проверки, не забыл ли добавить связи в каком то из товаров.
Хотел скопировать готовое решение, но быстро не нашел, так что добавлю небольшую инструкцию, пригодится. Понадобится минут 5
В модели product уже есть функция, которая выводит все категории, к которым привязан товар, но выводит она только ID этих категорий, что в данном случае не подходит т.к. нужны названия. Сделаю копию этой функции и немного изменю.
В admin/model/catalog/product.php нахожу функцию getProductCategories и перед ней добавляю новую "getProductCategoriesName":
public function getProductCategoriesName($product_id) {
$product_category_data = array();
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "product_to_category` pc LEFT JOIN `" . DB_PREFIX . "category_description` cd ON (cd.category_id = pc.category_id) WHERE pc.product_id = '" . (int)$product_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
foreach ($query->rows as $result) {
$product_category_data[] = $result['name'];
}
return $product_category_data;
}
Эта функция вернет имена категорий.
Далее нужен контроллер admin/controller/catalog/product.php, здесь в функции getList находим foreach товаров:
$results = $this->model_catalog_product->getProducts($filter_data);
foreach ($results as $result) {
Добавляем:
$categories = $this->model_catalog_product->getProductCategoriesName($result['product_id']);
$categories = implode('<br>', $categories);
Здесь получен массив категорий и преобразован в строку. Еще чуть ниже, в массиве товара:
$data['products'][] = array(
Нужно добавить:
'categories' => $categories,
Осталось вывести в шаблон - admin/view/template/catalog/product_list.twig
Находим вывод названия товара:
<td class="text-left">{{ product.name }}</td>
Сюда как раз и можно вывести категории, вполне удобно:
<td class="text-left">{{ product.name }}<div class="cats">{{ product.categories }}</div></td>
Вот и все. При желании можно еще добавить куда то в самый низ шаблона стили:
td .cats {background: #ddd;border-radius: 6px;padding: 3px 5px;width: fit-content;}
Или какие то свои. Не забываем обновить модификаторы. Теперь точно все.
USDT TRC-20: TYTHLkNVjGu7PMGKbW8Vh54w1zkkVjFbWT