Темизация корзины Commerce

Главные вкладки

Аватар пользователя y-vo y-vo 4 ноября в 17:56

Добрый день, пытаюсь темизировать корзину и мне необходимо вывести блок в котором выводится финальная сумма и кнопки продолжить, обновить корзину перенести в правую часть. Я смотрю во вьюшку которой она формируется, похоже что этот блок рендерится в футере вьюшки.

Ок, я пробую переопределить шаблон этой вьюшки, создаю views-view--commerce-cart-form.html.twig

{%
  set classes = [
    'view',
    'view-' ~ id|clean_class,
    'view-id-' ~ id,
    'view-display-id-' ~ display_id,
    dom_id ? 'js-view-dom-id-' ~ dom_id,
  ]
%}
<div{{ attributes.addClass(classes) }}>
  {{ title_prefix }}
  {% if title %}
    {{ title }}
  {% endif %}
  {{ title_suffix }}

  {% if header %}
    <div class="view-header">
      {{ header }}
    </div>
  {% endif %}

  {% if exposed %}
    <div class="view-filters">
      {{ exposed }}
    </div>
  {% endif %}

  {% if attachment_before %}
    <div class="attachment attachment-before">
      {{ attachment_before }}
    </div>
  {% endif %}

  <div class="view-main-wrapper" style="display: flex;">
    {% if rows %}
      <div class="view-content" style="width: 66.66%; padding-right: 20px;">
        {{ rows }}
      </div>
    {% elseif empty %}
      <div class="view-empty">
        {{ empty }}
      </div>
    {% endif %}

    {% if footer %}
      <div class="view-footer" style="width: 33.33%; padding-left: 20px;">
        {{ footer }}
      </div>
    {% endif %}
  </div>

  {% if pager %}
    {{ pager }}
  {% endif %}

  {% if attachment_after %}
    <div class="attachment attachment-after">
      {{ attachment_after }}
    </div>
  {% endif %}

  {% if more %}
    {{ more }}
  {% endif %}

  {% if feed_icons %}
    <div class="feed-icons">
      {{ feed_icons }}
    </div>
  {% endif %}
</div>

Но похоже что этот блок выводится как то иначе, потому что  {{ footer }} на него никак не влияет, а вот если я удаляю например {{ rows }}, то удаляется сразу все - и список товаров в корзине и итоговая сумма и кнопки. Как это работает?

Лучший ответ

Аватар пользователя y-vo y-vo 5 ноября в 19:11

В общем переопределил шаблон формы views-form-commerce-cart-form-default.html.twig

<?php/**
 * Implements hook_theme().
 */
function drowl_child_theme($existing, $type, $theme, $path) {
  return [
    'views_form_commerce_cart_form_default' => [
      'render element' => 'form',
      'path' => $path . '/templates/commerce/cart',
    ],
  ];
}?>

и в нем уже все это разнес

<div class="commerce-cart">
  <form{{ attributes }}>
    <div class="row">

      <div class="col-md-8">
        <div class="commerce-cart__line-item-box">
          <div class="cart-items-container">
            {{ form|without('actions', 'footer') }}
          </div>
        </div>
      </div>

      <div class="col-md-4 commerce-cart__actions-sum">
        <div class="cart-actions-container">
        {{ form.footer }}
          {{ form.actions }}
         
        </div>
      </div>

    </div>
  </form>
</div>

шаблон должен быть по пути /templates/commerce/cart, вдруг кому то пригодится.

Комментарии

Аватар пользователя y-vo y-vo 5 ноября в 19:11

В общем переопределил шаблон формы views-form-commerce-cart-form-default.html.twig

<?php/**
 * Implements hook_theme().
 */
function drowl_child_theme($existing, $type, $theme, $path) {
  return [
    'views_form_commerce_cart_form_default' => [
      'render element' => 'form',
      'path' => $path . '/templates/commerce/cart',
    ],
  ];
}?>

и в нем уже все это разнес

<div class="commerce-cart">
  <form{{ attributes }}>
    <div class="row">

      <div class="col-md-8">
        <div class="commerce-cart__line-item-box">
          <div class="cart-items-container">
            {{ form|without('actions', 'footer') }}
          </div>
        </div>
      </div>

      <div class="col-md-4 commerce-cart__actions-sum">
        <div class="cart-actions-container">
        {{ form.footer }}
          {{ form.actions }}
         
        </div>
      </div>

    </div>
  </form>
</div>

шаблон должен быть по пути /templates/commerce/cart, вдруг кому то пригодится.