Prestashop-完整产品说明(在Checkout中)

时间:2019-08-31 22:00:52

标签: php prestashop smarty prestashop-1.7

我认为这很容易,但是事实证明这是一项艰巨的任务。

我的客户要求我在结帐单的订单确认表中实施完整的产品说明。

目前,我们仅提供简短描述:

  

文件:主题/newtheme/templates/checkout/_partials/order-confirmation-table.tpl

  <div class="order-confirmation-table">
    {block name='order_confirmation_table'}
      {foreach from=$products item=product}
        <div class="order-line row">

          {$product->description_short nofilter}

        </div>
      {/foreach}
    {/block}
  </div>

我认为,基于此,我只需要更改要访问的属性,例如:{$ product-> description nofilter}

但随后显示,结帐内的$ product类不是正常的product类。它与抽象层LazyArray结合在一起。

如prestashop开发人员手册中所述,他们只是更新了LazyArrays 1.7.5版,您只能通过->访问它们。可悲的是已经尝试过:

  

文件:主题/newtheme/templates/checkout/_partials/order-confirmation-table.tpl

  <div class="order-confirmation-table">
    {block name='order_confirmation_table'}
      {foreach from=$products item=product}
        <div class="order-line row">

          {$product->description nofilter}

        </div>
      {/foreach}
    {/block}
  </div>

不起作用

然后我调试$product->description属性。 它是一个空数组。

因此,如果有人可以帮助我理解惰性数组并获得描述,我将非常高兴

1 个答案:

答案 0 :(得分:1)

“描述”字段不在前面允许的属性的“白名单”中。

如果打开文件“ src / Core / Filter / frontEndObject / ProductFilter.php”,则白名单将不包含“描述”。

无法覆盖src / core /文件,因此您将必须创建一个模块并注册到钩子“ ActionFrontControllerAfterInit”

在您的hook函数中,调用服务,获取过滤器并将说明添加到白名单:

public function hookActionFrontControllerAfterInit()
{
    $filterManager = $this->get('prestashop.core.filter.front_end_object.main');

    // get list of all filters applied to client-side data
    $filters = $filterManager->getFilters();

    // get list of all filters applied to the cart object
    $cartFilters = $filters['cart']->getFilters();

    // get list of filters applied to each product inside the cart object
    $productFilterQueue = $cartFilters['products']->getQueue();

    foreach ($productFilterQueue as $filter) {
        if ($filter instanceof PrestaShop\PrestaShop\Core\Filter\FrontEndObject\ProductFilter) {
            $filter->whitelist(array('description'));
        }
    }
}

您可以在这里http://build.prestashop.com/news/exposing-data-with-confidence/

中找到一些文档。