diff --git a/client/html/src/Client/Html/Catalog/Base.php b/client/html/src/Client/Html/Catalog/Base.php
index fa4ee323f..3f69e5452 100644
--- a/client/html/src/Client/Html/Catalog/Base.php
+++ b/client/html/src/Client/Html/Catalog/Base.php
@@ -450,6 +450,7 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products )
* @see client/html/catalog/stock/url/controller
* @see client/html/catalog/stock/url/action
* @see client/html/catalog/stock/url/config
+ * @see client/html/catalog/stock/url/max-items
*/
$target = $view->config( 'client/html/catalog/stock/url/target' );
@@ -466,6 +467,7 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products )
* @see client/html/catalog/stock/url/target
* @see client/html/catalog/stock/url/action
* @see client/html/catalog/stock/url/config
+ * @see client/html/catalog/stock/url/max-items
*/
$cntl = $view->config( 'client/html/catalog/stock/url/controller', 'catalog' );
@@ -482,6 +484,7 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products )
* @see client/html/catalog/stock/url/target
* @see client/html/catalog/stock/url/controller
* @see client/html/catalog/stock/url/config
+ * @see client/html/catalog/stock/url/max-items
*/
$action = $view->config( 'client/html/catalog/stock/url/action', 'stock' );
@@ -504,10 +507,28 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products )
* @see client/html/catalog/stock/url/target
* @see client/html/catalog/stock/url/controller
* @see client/html/catalog/stock/url/action
- * @see client/html/url/config
+ * @see client/html/catalog/stock/url/max-items
*/
$config = $view->config( 'client/html/catalog/stock/url/config', [] );
+ /** client/html/catalog/stock/url/max-items
+ * Maximum number of product stock levels per request
+ *
+ * To avoid URLs that exceed the maximum amount of characters (usually 8190),
+ * each request contains only up to the configured amount of product codes.
+ * If more product codes are available, several requests will be sent to the
+ * server.
+ *
+ * @param integer Maximum number of product codes per request
+ * @since 2018.10
+ * @category Developer
+ * @see client/html/catalog/stock/url/target
+ * @see client/html/catalog/stock/url/controller
+ * @see client/html/catalog/stock/url/action
+ * @see client/html/catalog/stock/url/config
+ */
+ $max = $view->config( 'client/html/catalog/stock/url/config', 200 );
+
$codes = [];
@@ -516,8 +537,13 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products )
}
sort( $codes );
+ $urls = [];
+
+ while( ( $list = array_splice( $codes, -$max ) ) !== [] ) {
+ $urls[] = $view->url( $target, $cntl, $action, array( "s_prodcode" => $list ), [], $config );
+ }
- return $view->url( $target, $cntl, $action, array( "s_prodcode" => $codes ), [], $config );
+ return array_reverse( $urls );
}
diff --git a/client/html/templates/catalog/detail/header-standard.php b/client/html/templates/catalog/detail/header-standard.php
index 6d26cfe06..d10f9c88b 100644
--- a/client/html/templates/catalog/detail/header-standard.php
+++ b/client/html/templates/catalog/detail/header-standard.php
@@ -57,7 +57,9 @@
detailStockUrl ) ) : ?>
-
+ detailStockUrl as $url ) : ?>
+
+
= $this->get( 'detailHeader' ); ?>
diff --git a/client/html/templates/catalog/lists/items-header-standard.php b/client/html/templates/catalog/lists/items-header-standard.php
index cbef8b81c..2a960f8f7 100644
--- a/client/html/templates/catalog/lists/items-header-standard.php
+++ b/client/html/templates/catalog/lists/items-header-standard.php
@@ -11,5 +11,7 @@
?>
itemsStockUrl ) ) : ?>
-
+ promoStockUrl as $url ) : ?>
+
+
diff --git a/client/html/templates/catalog/lists/promo-header-standard.php b/client/html/templates/catalog/lists/promo-header-standard.php
index d68912ab7..bbb779032 100644
--- a/client/html/templates/catalog/lists/promo-header-standard.php
+++ b/client/html/templates/catalog/lists/promo-header-standard.php
@@ -11,5 +11,7 @@
?>
promoStockUrl ) ) : ?>
-
-
+ promoStockUrl as $url ) : ?>
+
+
+