Prestashop 1.7 类别中每页下拉列表的产品
Prestashop 1.7 products per page dropdown list in category
我正在查看 Prestashop 1.7,我想覆盖负责产品列表(又名类别存档)的控制器。
我正在使用官方的 Prestashop 入门主题,我想重写控制器以获得更多数据进行排序-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>
在上面的代码片段中有一个 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>
我的目标是覆盖负责的控制器,以便生成一些链接来更改 resultsPerPage,就像 $sort_order 更改列表顺序将一些参数传递给 url 一样。
问题是虽然我搜索了几乎所有控制器,但我没有找到将这些数据传递给 tpl 的控制器。
由于缺乏适当的文档,我想从更有经验的开发人员那里获得一些 "where-is-that" 的信息
提前致谢
首先,为 classes/controller/ProductListingFrontController 创建覆盖。php
并更改第 279 行:
$resultsPerPage <= 0 || $resultsPerPage > 36
到(例如..)
$resultsPerPage <= 0 || $resultsPerPage > 100
此示例中的 100 是您希望每页显示的最大项目数。您也可以选择更多或更少,具体取决于您想要什么。现在让我们改变你的 .tpl
在您的主题中,转到 themes/yourtheme/templates/catalog/_partials/sort-orders.tpl
在页面顶部(许可证正下方)添加以下内容以分配变量:
{if !empty($smarty.get.order)}
{capture assign='ordering'}order={$smarty.get.order}&{/capture}
{else}
{assign var='ordering' value=''}
{/if}
{if !empty($smarty.get.resultsPerPage)}
{assign var='results_per_page' value=$smarty.get.resultsPerPage}
{else}
{assign var='results_per_page' value=25}
{/if}
现在,在下方添加此代码:
<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>
您可能需要更改布局(或项目数,或每页的最大结果数...),但您可以继续:)
例如,如果您要更改项目数量(在下拉列表中),只需更改:
<a rel="nofollow" href="?{$ordering}resultsPerPage=25"
到
<a rel="nofollow" href="?{$ordering}resultsPerPage=40"
调整每页的产品数量。
我正在查看 Prestashop 1.7,我想覆盖负责产品列表(又名类别存档)的控制器。 我正在使用官方的 Prestashop 入门主题,我想重写控制器以获得更多数据进行排序-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>
在上面的代码片段中有一个 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>
我的目标是覆盖负责的控制器,以便生成一些链接来更改 resultsPerPage,就像 $sort_order 更改列表顺序将一些参数传递给 url 一样。 问题是虽然我搜索了几乎所有控制器,但我没有找到将这些数据传递给 tpl 的控制器。 由于缺乏适当的文档,我想从更有经验的开发人员那里获得一些 "where-is-that" 的信息 提前致谢
首先,为 classes/controller/ProductListingFrontController 创建覆盖。php
并更改第 279 行:
$resultsPerPage <= 0 || $resultsPerPage > 36
到(例如..)
$resultsPerPage <= 0 || $resultsPerPage > 100
此示例中的 100 是您希望每页显示的最大项目数。您也可以选择更多或更少,具体取决于您想要什么。现在让我们改变你的 .tpl
在您的主题中,转到 themes/yourtheme/templates/catalog/_partials/sort-orders.tpl
在页面顶部(许可证正下方)添加以下内容以分配变量:
{if !empty($smarty.get.order)}
{capture assign='ordering'}order={$smarty.get.order}&{/capture}
{else}
{assign var='ordering' value=''}
{/if}
{if !empty($smarty.get.resultsPerPage)}
{assign var='results_per_page' value=$smarty.get.resultsPerPage}
{else}
{assign var='results_per_page' value=25}
{/if}
现在,在下方添加此代码:
<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>
您可能需要更改布局(或项目数,或每页的最大结果数...),但您可以继续:)
例如,如果您要更改项目数量(在下拉列表中),只需更改:
<a rel="nofollow" href="?{$ordering}resultsPerPage=25"
到
<a rel="nofollow" href="?{$ordering}resultsPerPage=40"
调整每页的产品数量。