Kredov long

[Решено] Добавить картинку в карточку товара на верх "фото"

Тема в разделе "Simpla CMS", создана пользователем 4esik, 10 фев 2016.

Метки:
Статус темы:
Закрыта.
  1. 4esik

    4esik

    Регистрация:
    10 фев 2016
    Сообщения:
    3
    Симпатии:
    1
    Добрый день.

    Подскажите решение такой задачки:

    Нужно, добавить картинки с надписью "Бесплатная доставка" в карточку товара на одни выбранный товар, примерно так:
    [​IMG]
    Пробовал сделать отдельный чекбокс, но так как я не силен в разработке, нужна помочь)

    Может есть более простой способ добавить картинку "Бесплатная Доставку" на выбраные позиции в админке?
     
  2. 4esik

    4esik

    Регистрация:
    10 фев 2016
    Сообщения:
    3
    Симпатии:
    1
    Если кому-то пригодится вот решение.


    В таблицу s_products добавляем поле is_new следующим запросом
    Код:
    ALTER TABLE `s_products` ADD `is_new` TINYINT( 1 ) NOT NULL AFTER `visible`
    Теперь открываем файла админки simpla/design/html/product.tpl и перед чекбоксом "Рекомендуемый" (~457 строка)
    PHP:
    <div class="checkbox">
    <
    input name="featured" value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Рекомендуемый</label>
    </
    div>
    добавляем код "Новинка"
    PHP:
    <div class="checkbox">
    <
    input name="is_new" value="1" type="checkbox" id="new_checkbox" {if $product->is_new}checked{/if}/> <label for="new_checkbox">Новинка</label>
    </
    div>
    Далее открываем файл редактирования товара simpla/productAdmin.php и перед строкой получения значения поля "Рекомендуемый" (features - ~25 строка) добавим код получения значения "Новинка"
    PHP:
    $product->is_new $this->request->post('is_new''boolean');
    По сути мы уже пишем наши "Новинки" в базу. Теперь организуем их вывод.

    Открываем файл api/Products.php и в методе get_products добавляем фильтр по данному критерию. Инициализируем переменную в начале метода (~39 строка)

    PHP:
    $is_new_filter '';
    Далее в этом же файле сделаем обработчик фильтра - все опять же по аналогии с features (~68 строка)

    PHP:
    if(!empty($filter['is_new']))
    $is_new_filter $this->db->placehold('AND p.is_new=?'intval($filter['is_new']));
    И теперь непосредственно сам запрос получит вид

    PHP:
    $query "SELECT
    p.id,
    p.url,
    p.brand_id,
    p.name,
    p.annotation,
    p.body,
    p.position,
    p.created as created,
    p.visible,
    p.is_new,
    p.featured,
    p.meta_title,
    p.meta_keywords,
    p.meta_description,
    b.name as brand,
    b.url as brand_url
    FROM s_products p
    $category_id_filter
    LEFT JOIN s_brands b ON p.brand_id = b.id
    WHERE


    $product_id_filter
    $brand_id_filter
    $features_filter
    $keyword_filter
    $is_new_filter
    $is_featured_filter
    $discounted_filter
    $in_stock_filter
    $visible_filter
    $group_by
    ORDER BY 
    $order
    $sql_limit";
    Здесь мы добавили в выборку наше поле is_new и далее по коду подключили сформированный нами запрос по фильтру.

    Аналогично правим метод count_products - инициализируем переменную $is_new_filter (как мы делали для списка товаров), добавляем обработчик фильтра и изменяем код запроса на

    PHP:
    $query "SELECT count(distinct p.id) as count
    FROM s_products AS p
    $category_id_filter
    WHERE 1
    $brand_id_filter
    $keyword_filter
    $is_new_filter
    $is_featured_filter
    $in_stock_filter
    $discounted_filter
    $visible_filter
    $features_filter ";
    Ну и конечно выведем наше новое поле в карточку товара. В методе get_product меняем запрос на

    PHP:
    $query "SELECT DISTINCT
    p.id,
    p.url,
    p.brand_id,
    p.name,
    p.annotation,
    p.body,
    p.position,
    p.created as created,
    p.visible,
    p.is_new,
    p.featured,
    p.meta_title,
    p.meta_keywords,
    p.meta_description
    FROM s_products AS p
    LEFT JOIN s_brands b ON p.brand_id = b.id
    WHERE 
    $filter
    GROUP BY p.id
    LIMIT 1"
    ;
    По сути все, теперь мы можем в каталоге и в карточке по значению переменной $product->is_new определять "Новинку".

    ____________________________________________________________________________________________________________________
    В product.tpl вызываем Новинку:
    PHP:
    {if $product->is_new}    {/if}
    В ней можно добавить Любое фото таким способом:
    PHP:
    {if $product->is_new}
      <
    img class="dostavka" src="design/Ваша тема/images/images_theme/dostavka.png" width="129" height="80" />
        {/if}
     
    Lasted edited by : 15 фев 2016
    $iD нравится это.
Статус темы:
Закрыта.