Php Prestashop类别中每页1.7个产品下拉列表

Php Prestashop类别中每页1.7个产品下拉列表,php,smarty,prestashop,prestashop-1.7,Php,Smarty,Prestashop,Prestashop 1.7,我正在浏览Prestashop 1.7,我想越过负责产品列表的控制器(又名类别存档)。 我正在使用官方的Prestashop starter主题,我想覆盖控制器,以便向sort-order.tpl获取更多数据 <div class="products-sort-order"> <span>{if isset($listing.sort_selected)}{$listing.sort_selected}{else}{l s='Sort by:' d='Shop.The

我正在浏览Prestashop 1.7,我想越过负责产品列表的控制器(又名类别存档)。 我正在使用官方的Prestashop starter主题,我想覆盖控制器,以便向sort-order.tpl获取更多数据

<div class="products-sort-order">
  <span>{if isset($listing.sort_selected)}{$listing.sort_selected}{else}{l s='Sort by:' d='Shop.Theme.Global'}{/if}</span>
  {foreach from=$sort_orders item=sort_order}
    <a
      class="{['current' => $sort_order.current, 'js-search-link' => true]|classnames}"
      href="{$sort_order.url}"
      rel="nofollow"
    >
      {$sort_order.label}
    </a>
  {/foreach}
</div>

{if isset($listing.sort_selected)}{$listing.sort_selected}{else}{l s='sort by:'d='Shop.Theme.Global'}{/if}
{foreach from=$sort\u orders item=sort\u order}
{/foreach}
在上面的代码段中有一个sort_order变量,它是products-top.tpl中提交的$listing变量的一部分

<div id="js-product-list-top" class="products-selection">
  {if $listing.pagination.total_items|count > 1}
    <p>{l s='There are %product_count% products.' d='Shop.Theme.Catalog' sprintf=['%product_count%' => $listing.pagination.total_items|count]}</p>
  {elseif $listing.pagination.total_items > 0}
    <p>{l s='There is 1 product.' d='Shop.Theme.Catalog'}</p>
  {/if}

  {block name='sort_by'}
    {include file='catalog/_partials/sort-orders.tpl' sort_orders=$listing.sort_orders}
  {/block}

  {block name='pagination_summary'}
    {l s='Showing %from%-%to% of %total% item(s)' d='Shop.Theme.Catalog' sprintf=[
    '%from%' => $listing.pagination.items_shown_from ,
    '%to%' => $listing.pagination.items_shown_to,
    '%total%' => $listing.pagination.total_items
    ]}
  {/block}
</div>

{if$listing.pagination.total|u items | count>1}
{l s=“有%product_count%products.”d=“Shop.Theme.Catalog'sprintf=['%product_count%'=>$listing.pagination.total_items | count]}

{elseif$listing.pagination.total_items>0} {l s='有1个产品。'd='Shop.Theme.Catalog'}

{/if} {block name='sort_by'} {include file='catalog/_partials/sort orders.tpl'sort_orders=$listing.sort_orders} {/block} {block name='pagination_summary'} {l s='show%从%-%到%total%项目的%d='Shop.Theme.Catalog'sprintf=[ “%from%”=>$listing.pagination.items\u显示自, “%to%”=>$listing.pagination.items\u show\u to, “%total%”=>$listing.pagination.total\u项目 ]} {/block}
我的目标是覆盖负责的控制器,以便生成一些链接来更改resultsPerPage,就像$sort_顺序更改列表顺序一样,将一些参数传递给url。 问题是,尽管我搜索了几乎所有的控制器,但没有找到将这些数据传递给tpl的控制器。 由于缺乏适当的文档,我想从更有经验的开发人员那里获得一些“where is that”信息
提前感谢

首先,为class/controller/ProductListingFrontController.php创建一个覆盖

并更改第279行:

$resultsPerPage <= 0 || $resultsPerPage > 36
现在,在下面添加以下代码:

<div class="col-md-3">
  <label style="float:left;margin-right: 15px" class="form-control-label hidden-sm-down sort-label">{l s='Products per page:'}</label>
  <div style="float:left;" class="sort-select dropdown js-dropdown">
    <a class="custom-select select-title" rel="nofollow" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        {$results_per_page}
    </a>
    <div class="dropdown-menu">
      <a rel="nofollow" href="?{$ordering}resultsPerPage=25" class="dropdown-item js-search-link">
            25
        </a>
      <a rel="nofollow" href="?{$ordering}resultsPerPage=50" class="dropdown-item js-search-link">
            50
        </a>
      <a rel="nofollow" href="?{$ordering}resultsPerPage=75" class="dropdown-item js-search-link">
            75
        </a>
      <a rel="nofollow" href="?{$ordering}resultsPerPage=100" class="dropdown-item js-search-link">
            100
        </a>
    </div>
  </div>
</div>

{l s='每页产品:'}
您可能需要更改布局(或项目数量,或每页的最大结果…),但您可以这样做:)

例如,如果要更改项目数(在下拉列表中),只需更改:

<a rel="nofollow" href="?{$ordering}resultsPerPage=25"

首先,为class/controller/ProductListingFrontController.php创建一个覆盖

并更改第279行:

$resultsPerPage <= 0 || $resultsPerPage > 36
现在,在下面添加以下代码:

<div class="col-md-3">
  <label style="float:left;margin-right: 15px" class="form-control-label hidden-sm-down sort-label">{l s='Products per page:'}</label>
  <div style="float:left;" class="sort-select dropdown js-dropdown">
    <a class="custom-select select-title" rel="nofollow" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        {$results_per_page}
    </a>
    <div class="dropdown-menu">
      <a rel="nofollow" href="?{$ordering}resultsPerPage=25" class="dropdown-item js-search-link">
            25
        </a>
      <a rel="nofollow" href="?{$ordering}resultsPerPage=50" class="dropdown-item js-search-link">
            50
        </a>
      <a rel="nofollow" href="?{$ordering}resultsPerPage=75" class="dropdown-item js-search-link">
            75
        </a>
      <a rel="nofollow" href="?{$ordering}resultsPerPage=100" class="dropdown-item js-search-link">
            100
        </a>
    </div>
  </div>
</div>

{l s='每页产品:'}
您可能需要更改布局(或项目数量,或每页的最大结果…),但您可以这样做:)

例如,如果要更改项目数(在下拉列表中),只需更改:

<a rel="nofollow" href="?{$ordering}resultsPerPage=25"

,我已经搜索了该文件,更具体地说,我试图更改515行的“列表”,但运气不佳。如果我理解您的问题,您希望客户能够选择每页的产品数量(例如在下拉选择字段中)?是的,但我想自己实现,而不是使用模块,我想到了如何构造URL,我想不出如何将其传递给视图。一个不想传递数据的人认为像FrontControllerI这样的无关控制器我一直在为你测试。我将在短时间内发布一个新的awnser,然后你就可以开始了,测试和工作:)希望你高兴,我已经搜索了文件,更具体地说,我已经尝试更改515行的“列表”,但没有成功。如果我理解你的问题,你希望客户能够选择每页的产品数量(例如在下拉选择字段中)?是的,没错,但我想自己实现它,而不是使用模块,我想知道如何构建URL,我想不出如何将其传递到视图。a不想传递数据,认为像FrontControllerI这样的不相关控制器我一直在为您测试。我将发布一个新的awnser,很快,您就可以开始了,测试和工作:)希望你快乐