diff --git a/packages/Webkul/Admin/src/Config/system.php b/packages/Webkul/Admin/src/Config/system.php index 71f555aa5..cade2e2a0 100644 --- a/packages/Webkul/Admin/src/Config/system.php +++ b/packages/Webkul/Admin/src/Config/system.php @@ -126,10 +126,63 @@ return [ 'type' => 'boolean', ], ], + ], [ + 'key' => 'catalog.products.storefront', + 'name' => 'admin::app.admin.system.storefront', + 'sort' => 2, + 'fields' => [ + [ + 'name' => 'mode', + 'title' => 'admin::app.admin.system.default-list-mode', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'admin::app.admin.system.grid', + 'value' => 'grid', + ], [ + 'title' => 'admin::app.admin.system.list', + 'value' => 'list', + ], + ], + 'channel_based' => true, + ], [ + 'name' => 'products_per_page', + 'title' => 'admin::app.admin.system.products-per-page', + 'type' => 'text', + 'info' => 'admin::app.admin.system.comma-seperated', + 'channel_based' => true, + ], [ + 'name' => 'sort_by', + 'title' => 'admin::app.admin.system.sort-by', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'admin::app.admin.system.from-z-a', + 'value' => 'name-desc', + ], [ + 'title' => 'admin::app.admin.system.from-a-z', + 'value' => 'name-asc', + ], [ + 'title' => 'admin::app.admin.system.newest-first', + 'value' => 'created_at-desc', + ], [ + 'title' => 'admin::app.admin.system.oldest-first', + 'value' => 'created_at-asc', + ], [ + 'title' => 'admin::app.admin.system.cheapest-first', + 'value' => 'price-asc', + ], [ + 'title' => 'admin::app.admin.system.expensive-first', + 'value' => 'price-desc', + ], + ], + 'channel_based' => true, + ] + ], ], [ 'key' => 'catalog.products.review', 'name' => 'admin::app.admin.system.review', - 'sort' => 2, + 'sort' => 3, 'fields' => [ [ 'name' => 'guest_review', diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index acf18f944..276740aac 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -1309,7 +1309,20 @@ return [ 'all-channels' => 'الكل', 'all-locales' => 'الكل', 'invoice-slip-design' => 'Invoice Slip Design', - 'logo' => 'logo', + 'logo' => 'Logo', + 'storefront' => 'Storefront', + 'default-list-mode' => 'Default List Mode', + 'grid' => 'Grid', + 'list' => 'List', + 'products-per-page' => 'Products Per Page', + 'sort-by' => 'Sort By', + 'from-z-a' => 'From Z-A', + 'from-a-z' => 'From A-Z', + 'newest-first' => 'Newest First', + 'oldest-first' => 'Oldest First', + 'cheapest-first' => 'Cheapest First', + 'expensive-first' => 'Expensive First', + 'comma-seperated' => 'Comma Seperated', 'favicon' => 'Favicon' ] ] diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 5279b5491..dfb8ac0d9 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -1317,7 +1317,20 @@ return [ 'all-locales' => 'All Locales', 'all-customer-groups' => 'All Customer groups', 'invoice-slip-design' => 'Invoice Slip Design', - 'logo' => 'logo', + 'logo' => 'Logo', + 'storefront' => 'Storefront', + 'default-list-mode' => 'Default List Mode', + 'grid' => 'Grid', + 'list' => 'List', + 'products-per-page' => 'Products Per Page', + 'sort-by' => 'Sort By', + 'from-z-a' => 'From Z-A', + 'from-a-z' => 'From A-Z', + 'newest-first' => 'Newest First', + 'oldest-first' => 'Oldest First', + 'cheapest-first' => 'Cheapest First', + 'expensive-first' => 'Expensive First', + 'comma-seperated' => 'Comma Seperated', 'favicon' => 'Favicon' ] ] diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 647717193..0a1997c99 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -1315,7 +1315,20 @@ return [ 'all-locales' => 'همه', 'sandbox' => 'Sandbox', 'invoice-slip-design' => 'Invoice Slip Design', - 'logo' => 'logo', + 'logo' => 'Logo', + 'storefront' => 'Storefront', + 'default-list-mode' => 'Default List Mode', + 'grid' => 'Grid', + 'list' => 'List', + 'products-per-page' => 'Products Per Page', + 'sort-by' => 'Sort By', + 'from-z-a' => 'From Z-A', + 'from-a-z' => 'From A-Z', + 'newest-first' => 'Newest First', + 'oldest-first' => 'Oldest First', + 'cheapest-first' => 'Cheapest First', + 'expensive-first' => 'Expensive First', + 'comma-seperated' => 'Comma Seperated', 'favicon' => 'Favicon' ] ] diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index 423e8c787..d3d8dad69 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -1314,7 +1314,20 @@ return [ 'all-channels' => 'Alles', 'all-locales' => 'Alles', 'invoice-slip-design' => 'Invoice Slip Design', - 'logo' => 'logo', + 'logo' => 'Logo', + 'storefront' => 'Storefront', + 'default-list-mode' => 'Default List Mode', + 'grid' => 'Grid', + 'list' => 'List', + 'products-per-page' => 'Products Per Page', + 'sort-by' => 'Sort By', + 'from-z-a' => 'From Z-A', + 'from-a-z' => 'From A-Z', + 'newest-first' => 'Newest First', + 'oldest-first' => 'Oldest First', + 'cheapest-first' => 'Cheapest First', + 'expensive-first' => 'Expensive First', + 'comma-seperated' => 'Comma Seperated', 'favicon' => 'Favicon' ] ] diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index f940ddb75..1088aa8d5 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -1318,7 +1318,20 @@ return [ 'all-locales' => 'Todos', 'sandbox' => 'Sandbox', 'invoice-slip-design' => 'Design da Nota do Pedido', - 'logo' => 'logo', + 'logo' => 'Logo', + 'storefront' => 'Storefront', + 'default-list-mode' => 'Default List Mode', + 'grid' => 'Grid', + 'list' => 'List', + 'products-per-page' => 'Products Per Page', + 'sort-by' => 'Sort By', + 'from-z-a' => 'From Z-A', + 'from-a-z' => 'From A-Z', + 'newest-first' => 'Newest First', + 'oldest-first' => 'Oldest First', + 'cheapest-first' => 'Cheapest First', + 'expensive-first' => 'Expensive First', + 'comma-seperated' => 'Comma Seperated', 'favicon' => 'Favicon' ] ] diff --git a/packages/Webkul/Core/src/Contracts/Address.php b/packages/Webkul/Core/src/Contracts/Address.php new file mode 100644 index 000000000..40a6f3c7f --- /dev/null +++ b/packages/Webkul/Core/src/Contracts/Address.php @@ -0,0 +1,7 @@ +getConfigData('catalog.products.storefront.products_per_page') + ? explode(',', core()->getConfigData('catalog.products.storefront.products_per_page')) + : [9, 15, 21, 28]; } /** @@ -84,8 +86,14 @@ class Toolbar extends AbstractProduct if (isset($params['sort']) && $key == $params['sort'] . '-' . $params['order']) { return true; - } elseif (! isset($params['sort']) && $key == 'created_at-asc') { - return true; + } elseif (! isset($params['sort'])) { + $sortBy = core()->getConfigData('catalog.products.storefront.sort_by') + ? core()->getConfigData('catalog.products.storefront.sort_by') + : 'created_at-asc'; + + if ($key == $sortBy) { + return true; + } } return false; @@ -138,6 +146,8 @@ class Toolbar extends AbstractProduct return $params['mode']; } - return 'grid'; + return core()->getConfigData('catalog.products.storefront.mode') + ? core()->getConfigData('catalog.products.storefront.mode') + : 'grid'; } } \ No newline at end of file