Условие Вывода Поля Товара


#1

Добрый день

Пытаюсь создать модуль, который добавляет новую характеристику товару и выводит ее заместо названия. Но если новая характеристика не заполнена, то название так и будет выводиться.

По обучающим видео осилил все, кроме самого условия

То есть, если определенное поле товара пустое, должно выводится одно содержимое, если нет, то другое.

Не подскажете, как подобное условие реализовывается? Через смарти, запросы к БД или как вообще?


#2

А где выводить надо? И в админке тоже? Или только на витрине? Только на карточке товара? Давайте больше деталей


#3

Водить только на витрине, в превьюшках товара, на карточке и в админке не нужно

/design/themes/vivashop/templates/blocks/list_templates/grid_list.tpl (vivashop - своя тема)

имя товара (которое мне необходимо менять на содержимое нового поля в БД goods_preview, если оно не пустое) выводится этой строкой, точнее его второй частью.


{assign var="name" value="name_$obj_id"}{$smarty.capture.$name nofilter}


#4

Водить только на витрине, в превьюшках товара, на карточке и в админке не нужно

/design/themes/vivashop/templates/blocks/list_templates/grid_list.tpl (vivashop - своя тема)

имя товара (которое мне необходимо менять на содержимое нового поля в БД goods_preview, если оно не пустое) выводится этой строкой, точнее его второй частью.


{assign var="name" value="name_$obj_id"}{$smarty.capture.$name nofilter}

используйте хук get_products_post в функции fn_get_products (app/functions/fn.products.php)

код примерно такой

if (AREA == 'C') {
    foreach ($products as $k => $v) {
        $goods_preview = db_get_field("SELECT goods_preview FROM ?:products WHERE product_id = ?i", $v['product_id']);
        if (!empty($goods_preview)) {
            $products[$k]['product'] = $goods_preview;
        }
    }
}

(!) не тестировано


#5

Чего-то не получается, ошибок никаких не выдает.

Делал вот так, тк поле goods_preview изначально добавлял в колонку product_descriptions (я так понял, что если текст на русском, то просто в products ее нельзя завписывать)

if (AREA == 'C') {
    foreach ($products as $k => $v) {
        $goods_preview = db_get_field("SELECT goods_preview FROM ?:product_descriptions WHERE product_id = ?i", $v['product_id']);
        if (!empty($goods_preview)) {
            $products[$k]['product'] = $goods_preview;
        }
    }
}

Условие через смарти тоже не получается, тк при написании в категории {$products|fn_print_r} - поля goods_preview не появилось, хотя в карточке самого товара, {$settings|fn_print_r} оно есть.

{$product.product_features|fn_print_r} в категории тоже нечего

вот этот делал

В файле app/controllers/frontend/categories.php замените

‘get_features’ => false

на

‘get_features’ => trueПоявятся данные в $product.product_features


#6

Разместите здесь полный код функции, которая использует хук включая название функции и передаваемые параметры