Вход • Регистрация

Дополнительные данные в show.view.show_block

  • 01 декабря 2012 г.
  • Просьба сильно не пинать, так как вчера первый раз за Diafan сел сайт натягивать.

    Суть задачи.
    1. Шаблон страницы каталога интернет-магазина.
    2. В контенте - каталог. В сайдбаре справа выводится блок корзины <insert name="show_block" module="cart">
    3. В блоке нужно отобразить не просто: "В корзине два товара, общая суммая такая-то". А вообще все товары из корзины с кол-вом, фотками и кнопочкой удаления. Крайне желательно на ajax.

    По моей логике требуется в шаблоне вида отображения корзины cart.view.show_block.php вызвать все переменные корзины: фотографии, название, линк на товар по каждой позициии.
    Но $result["rows"] в сart.view.show_block.php пустой. Так как достать?

    Или может есть другая логика, и другое решение?

    P.S. В аттаче скрин как нужно.
  • 04 декабря 2012 г.
  • Нужно создать 2 файла:

    1. modules/cart/cart.custom.php:

    class Cart extends Controller
    {

    new public function block_form($attributes)
    {

    if ($this->diafan->configmodules('not_buy', 'shop') || ($this->diafan->configmodules('security_user', 'shop') && ! $this->diafan->_user->id))
    return false;

    $attributes = $this->get_attributes($attributes, 'template');

    Customization::inc('modules/cart/cart.model.php');
    $model = new Cart_model($this->diafan);
    $result = $model->form_table();
    $this->diafan->_tpl->get('block_form', 'cart', $result);
    return true;
    }

    2. modules/cart/views/cart.view.block_form.php

    echo '<script type="text/javascript" src="' . BASE_PATH . 'modules/cart/cart.js"></script>';

    echo '<form action="" method="POST" enctype="multipart/form-data" class="cart_table_form">
    <input type="hidden" name="module" value="cart">
    <input type="hidden" name="action" value="recalc">
    <input type="hidden" name="ajax" value="">
    <div class="cart_table">';
    echo $this->get('table', 'cart', $result); //вывод таблицы с товарами
    echo '</div>
    <div class="errors error_table"' . (! empty($result["error_table"]) ? '>' . $result["error_table"] : ' style="display:none">') . '</div>';
    echo '<div class="cart_recalc">';
    // кнопка пересчитать
    echo '<span class="button_wrap"><input type="submit" class="button" value="' . $this->diafan->_('Пересчитать', false) . '"></span>';
    echo '</div>';
    echo '</form>';

    И выводить корзину с помощью нового тега <insert name="block_form" module="cart">

    При этом все доработки будут в файлах, которые автообновление не затрагивает.
  • 27 мая 2014 г.
  • Здравствуйте, спасибо за подсказку, пример работает, но есть одно но, товар появляется в корзине только после обновления страницы, как сделать так, чтобы обновление происходило после добавления товара в корзину, плюс в корзине при изменении количества товара он пересчитывался. За ранее всем спасибо

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум