86 protected $_template =
'Magento_Catalog::product/list/toolbar.phtml';
134 \
Magento\Catalog\Model\Session $catalogSession,
136 ToolbarModel $toolbarModel,
142 $this->_catalogSession = $catalogSession;
143 $this->_catalogConfig = $catalogConfig;
144 $this->_toolbarModel = $toolbarModel;
146 $this->_productListHelper = $productListHelper;
147 $this->_postDataHelper = $postDataHelper;
148 parent::__construct($context,
$data);
158 $this->_paramsMemorizeAllowed =
false;
171 if ($this->_paramsMemorizeAllowed && !$this->_catalogSession->getParamsMemorizeDisabled()) {
172 $this->_catalogSession->setData($param,
$value);
224 return $this->_toolbarModel->getCurrentPage();
242 if (!isset(
$orders[$defaultOrder])) {
244 $defaultOrder = $keys[0];
247 $order = $this->_toolbarModel->getOrder();
252 if (
$order != $defaultOrder) {
256 $this->
setData(
'_current_grid_order', $order);
267 $dir = $this->
_getData(
'_current_grid_direction');
272 $directions = [
'asc',
'desc'];
273 $dir = strtolower($this->_toolbarModel->getDirection());
274 if (!$dir || !in_array($dir, $directions)) {
278 if ($dir != $this->_direction) {
282 $this->
setData(
'_current_grid_direction', $dir);
294 $this->loadAvailableOrders();
295 if (isset($this->_availableOrder[$field])) {
296 $this->_orderField = $field;
309 if (in_array(strtolower($dir), [
'asc',
'desc'])) {
310 $this->_direction = strtolower($dir);
322 $this->loadAvailableOrders();
334 $this->_availableOrder =
$orders;
347 $this->loadAvailableOrders();
360 $this->loadAvailableOrders();
361 if (isset($this->_availableOrder[
$order])) {
362 unset($this->_availableOrder[
$order]);
387 $urlParams[
'_current'] =
true;
388 $urlParams[
'_escape'] =
false;
389 $urlParams[
'_use_rewrite'] =
true;
390 $urlParams[
'_query'] =
$params;
391 return $this->
getUrl(
'*/*/*', $urlParams);
414 $defaultMode = $this->_productListHelper->getDefaultViewMode($this->
getModes());
415 $mode = $this->_toolbarModel->getMode();
416 if (!
$mode || !isset($this->_availableMode[
$mode])) {
417 $mode = $defaultMode;
420 $this->
setData(
'_current_grid_mode', $mode);
442 if ($this->_availableMode === []) {
443 $this->_availableMode = $this->_productListHelper->getAvailableViewMode();
457 if (!isset($this->_availableMode)) {
458 $this->_availableMode = $modes;
470 $this->_enableViewSwitcher =
false;
481 $this->_enableViewSwitcher =
true;
502 $this->_isExpanded =
false;
513 $this->_isExpanded =
true;
534 if ($this->
getCurrentMode() ==
'list' && ($default = $this->getDefaultListPerPage())) {
539 return $this->_productListHelper->getDefaultLimitPerPageValue($this->
getCurrentMode());
549 return $this->_productListHelper->getAvailableLimit($this->
getCurrentMode());
559 $limit = $this->
_getData(
'_current_limit');
566 if (!$defaultLimit || !isset($limits[$defaultLimit])) {
567 $keys = array_keys($limits);
568 $defaultLimit = $keys[0];
571 $limit = $this->_toolbarModel->getLimit();
572 if (!$limit || !isset($limits[$limit])) {
573 $limit = $defaultLimit;
576 if ($limit != $defaultLimit) {
580 $this->
setData(
'_current_limit', $limit);
642 $pagerBlock = $this->
getChildBlock(
'product_list_toolbar_pager');
648 $pagerBlock->setUseContainer(
655 $this->_scopeConfig->getValue(
656 'design/pagination/pagination_frame',
660 $this->_scopeConfig->getValue(
661 'design/pagination/pagination_frame_skip',
670 return $pagerBlock->toHtml();
684 $defaultMode = $this->_productListHelper->getDefaultViewMode($this->
getModes());
686 'mode' => ToolbarModel::MODE_PARAM_NAME,
687 'direction' => ToolbarModel::DIRECTION_PARAM_NAME,
688 'order' => ToolbarModel::ORDER_PARAM_NAME,
689 'limit' => ToolbarModel::LIMIT_PARAM_NAME,
690 'modeDefault' => $defaultMode,
693 'limitDefault' => $this->_productListHelper->getDefaultLimitPerPageValue($defaultMode),
697 return json_encode([
'productListToolbarForm' =>
$options]);
707 if ($this->_orderField ===
null) {
708 $this->_orderField = $this->_productListHelper->getDefaultSortField();
718 private function loadAvailableOrders()
720 if ($this->_availableOrder ===
null) {
721 $this->_availableOrder = $this->_catalogConfig->getAttributeUsedForSortByArray();
elseif(isset( $params[ 'redirect_parent']))
getUrl($route='', $params=[])
if($exist=($block->getProductCollection() && $block->getProductCollection() ->getSize())) $mode
setData($key, $value=null)
const DEFAULT_SORT_DIRECTION
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]