// Blocklayered: BugFix in pagination

// Blocklayered: Add translations
// Blocklayered: BugFix with sliders (when cursor min and max are at 0)
This commit is contained in:
mDeflotte
2011-11-30 14:50:45 +00:00
parent 670de80a03
commit e66a83d08d
5 changed files with 211 additions and 123 deletions
+5 -1
View File
@@ -4,7 +4,7 @@
#layered_block_left ul {
padding-left: 0;
max-height: 100px;
max-height: 120px;
overflow-y: auto;
overflow-x: hidden;
padding-left: 1px;
@@ -107,4 +107,8 @@
}
#layered_form .color-option.on {
border: 1px solid red;
}
#layered_form input[type=radio] {
margin-left: 2px;
vertical-align: middle;
}
+11 -1
View File
@@ -160,7 +160,17 @@ function getValueSelected(){
}
function paginationButton() {
$('#pagination li').not('.current, .disabled').each( function () {
$('#pagination a').not(':hidden').each(function () {
if ($(this).attr('href').search('&p=') == -1) {
var page = 1;
}
else {
var page = $(this).attr('href').replace(/^.*&p=(\d+).*$/, '$1');
}
var location = window.location.href.replace(/#.*$/, '');
$(this).attr('href', location+current_friendly_url.replace(/\/page-(\d+)/, '')+'/page-'+page);
});
$('#pagination li').not('.current, .disabled').each(function () {
var nbPage = 0;
if ($(this).attr('id') == 'pagination_next')
nbPage = parseInt($('#pagination li.current').children().html())+ 1;
+170 -109
View File
@@ -66,6 +66,7 @@ class BlockLayered extends Module
Configuration::updateValue('PS_LAYERED_HIDE_0_VALUES', 0);
Configuration::updateValue('PS_LAYERED_SHOW_QTIES', 1);
Configuration::updateValue('PS_LAYERED_FULL_TREE', 1);
Configuration::updateValue('PS_LAYERED_FILTER_PRICE_USETAX', 1);
$this->rebuildLayeredStructure();
$this->rebuildLayeredCache();
@@ -97,6 +98,7 @@ class BlockLayered extends Module
Configuration::deleteByName('PS_LAYERED_SHOW_QTIES');
Configuration::deleteByName('PS_LAYERED_FULL_TREE');
Configuration::deleteByName('PS_LAYERED_INDEXED');
Configuration::deleteByName('PS_LAYERED_FILTER_PRICE_USETAX');
Db::getInstance()->Execute('DROP TABLE IF EXISTS '._DB_PREFIX_.'layered_price_index');
Db::getInstance()->Execute('DROP TABLE IF EXISTS '._DB_PREFIX_.'layered_friendly_url');
@@ -116,9 +118,13 @@ class BlockLayered extends Module
Db::getInstance()->Execute('
CREATE TABLE `'._DB_PREFIX_.'layered_price_index` (
`id_product` INT NOT NULL, `id_currency` INT NOT NULL,
`price_min` INT NOT NULL, `price_max` INT NOT NULL,
PRIMARY KEY (`id_product`, `id_currency`), INDEX `id_currency` (`id_currency`),
`id_product` INT NOT NULL,
`id_currency` INT NOT NULL,
`id_shop` INT NOT NULL,
`price_min` INT NOT NULL,
`price_max` INT NOT NULL,
PRIMARY KEY (`id_product`, `id_currency`, `id_shop`),
INDEX `id_currency` (`id_currency`),
INDEX `price_min` (`price_min`), INDEX `price_max` (`price_max`)) ENGINE = '._MYSQL_ENGINE_);
}
@@ -924,58 +930,56 @@ class BlockLayered extends Module
$groups = array();
}
static $currencyList = null;
if (is_null($currencyList))
$currencyList = Currency::getCurrencies();
$minPrice = array();
$maxPrice = array();
if ($smart)
Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'layered_price_index` WHERE `id_product` = '.(int)$idProduct);
$maxTaxRate = Db::getInstance()->getValue('
SELECT max(t.rate) max_rate
FROM `'._DB_PREFIX_.'product` p
LEFT JOIN `'._DB_PREFIX_.'tax_rules_group` trg ON (trg.id_tax_rules_group = p.id_tax_rules_group)
LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (tr.id_tax_rules_group = trg.id_tax_rules_group)
LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.id_tax = tr.id_tax AND t.active = 1)
WHERE id_product = '.(int)$idProduct.'
GROUP BY id_product');
$productMinPrices = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT id_shop, id_currency, id_country, id_group, from_quantity
FROM `'._DB_PREFIX_.'specific_price`
WHERE id_product = '.(int)$idProduct);
// Get min price
foreach ($currencyList as $currency)
$shop_list = array();
if (version_compare(_PS_VERSION_,'1.5','>'))
{
$price = Product::priceCalculation(null, (int)$idProduct, null, null, null, null,
$currency['id_currency'], null, null, false, true, false, true, true,
$specificPriceOutput, true);
if (!isset($maxPrice[$currency['id_currency']]))
$maxPrice[$currency['id_currency']] = 0;
if (!isset($minPrice[$currency['id_currency']]))
$minPrice[$currency['id_currency']] = null;
if ($price > $maxPrice[$currency['id_currency']])
$maxPrice[$currency['id_currency']] = $price;
if ($price == 0)
continue;
if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']])
$minPrice[$currency['id_currency']] = $price;
$shop_list = Shop::getShops(false, null, $get_as_list_id = true);
}
else {
$shop_list[] = 0;
}
foreach ($productMinPrices as $specificPrice)
foreach ($shop_list as $id_shop)
{
static $currencyList = null;
if (is_null($currencyList))
{
if (version_compare(_PS_VERSION_,'1.5','>'))
$currencyList = Currency::getCurrencies(false, 1, new Shop($id_shop));
else
$currencyList = Currency::getCurrencies(false, 1);
}
$minPrice = array();
$maxPrice = array();
if ($smart)
Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'layered_price_index` WHERE `id_product` = '.(int)$idProduct.' AND `id_shop` = '.(int)$id_shop);
if (Configuration::get('PS_LAYERED_FILTER_PRICE_USETAX'))
$maxTaxRate = Db::getInstance()->getValue('
SELECT max(t.rate) max_rate
FROM `'._DB_PREFIX_.'product` p
LEFT JOIN `'._DB_PREFIX_.'tax_rules_group` trg ON (trg.id_tax_rules_group = p.id_tax_rules_group)
LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (tr.id_tax_rules_group = trg.id_tax_rules_group)
LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.id_tax = tr.id_tax AND t.active = 1)
WHERE id_product = '.(int)$idProduct.'
GROUP BY id_product');
else
$maxTaxRate = 0;
$productMinPrices = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT id_shop, id_currency, id_country, id_group, from_quantity
FROM `'._DB_PREFIX_.'specific_price`
WHERE id_product = '.(int)$idProduct);
// Get min price
foreach ($currencyList as $currency)
{
if ($specificPrice['id_currency'] && $specificPrice['id_currency'] != $currency['id_currency'])
continue;
$price = Product::priceCalculation((($specificPrice['id_shop'] == 0) ? null : (int)$specificPrice['id_shop']), (int)$idProduct,
null, (($specificPrice['id_country'] == 0) ? null : $specificPrice['id_country']), null, null,
$currency['id_currency'], (($specificPrice['id_group'] == 0) ? null : $specificPrice['id_group']),
$specificPrice['from_quantity'], false, true, false, true, true, $specificPriceOutput, true);
$price = Product::priceCalculation($id_shop, (int)$idProduct, null, null, null, null,
$currency['id_currency'], null, null, false, true, false, true, true,
$specificPriceOutput, true);
if (!isset($maxPrice[$currency['id_currency']]))
$maxPrice[$currency['id_currency']] = 0;
@@ -988,34 +992,60 @@ class BlockLayered extends Module
if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']])
$minPrice[$currency['id_currency']] = $price;
}
foreach ($groups as $group)
foreach ($productMinPrices as $specificPrice)
foreach ($currencyList as $currency)
{
if ($specificPrice['id_currency'] && $specificPrice['id_currency'] != $currency['id_currency'])
continue;
$price = Product::priceCalculation((($specificPrice['id_shop'] == 0) ? null : (int)$specificPrice['id_shop']), (int)$idProduct,
null, (($specificPrice['id_country'] == 0) ? null : $specificPrice['id_country']), null, null,
$currency['id_currency'], (($specificPrice['id_group'] == 0) ? null : $specificPrice['id_group']),
$specificPrice['from_quantity'], false, true, false, true, true, $specificPriceOutput, true);
if (!isset($maxPrice[$currency['id_currency']]))
$maxPrice[$currency['id_currency']] = 0;
if (!isset($minPrice[$currency['id_currency']]))
$minPrice[$currency['id_currency']] = null;
if ($price > $maxPrice[$currency['id_currency']])
$maxPrice[$currency['id_currency']] = $price;
if ($price == 0)
continue;
if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']])
$minPrice[$currency['id_currency']] = $price;
}
foreach ($groups as $group)
foreach ($currencyList as $currency)
{
$price = Product::priceCalculation(null, (int)$idProduct, null, null, null, null, (int)$currency['id_currency'], (int)$group['id_group'],
null, false, true, false, true, true, $specificPriceOutput, true);
if (!isset($maxPrice[$currency['id_currency']]))
$maxPrice[$currency['id_currency']] = 0;
if (!isset($minPrice[$currency['id_currency']]))
$minPrice[$currency['id_currency']] = null;
if ($price > $maxPrice[$currency['id_currency']])
$maxPrice[$currency['id_currency']] = $price;
if ($price == 0)
continue;
if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']])
$minPrice[$currency['id_currency']] = $price;
}
$values = array();
foreach ($currencyList as $currency)
{
$price = Product::priceCalculation(null, (int)$idProduct, null, null, null, null, (int)$currency['id_currency'], (int)$group['id_group'],
null, false, true, false, true, true, $specificPriceOutput, true);
if (!isset($maxPrice[$currency['id_currency']]))
$maxPrice[$currency['id_currency']] = 0;
if (!isset($minPrice[$currency['id_currency']]))
$minPrice[$currency['id_currency']] = null;
if ($price > $maxPrice[$currency['id_currency']])
$maxPrice[$currency['id_currency']] = $price;
if ($price == 0)
continue;
if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']])
$minPrice[$currency['id_currency']] = $price;
}
$values = array();
foreach ($currencyList as $currency)
$values[] = '('.(int)$idProduct.', '.(int)$currency['id_currency'].',
'.(int)$minPrice[$currency['id_currency']].', '.(int)($maxPrice[$currency['id_currency']] * (100 + $maxTaxRate) / 100).')';
Db::getInstance()->Execute('
INSERT INTO `'._DB_PREFIX_.'layered_price_index` (id_product, id_currency, price_min, price_max)
VALUES '.implode(',', $values).'
ON DUPLICATE KEY UPDATE id_product = id_product # avoid duplicate keys');
$values[] = '('.(int)$idProduct.',
'.(int)$currency['id_currency'].',
'.$id_shop.',
'.(int)$minPrice[$currency['id_currency']].',
'.(int)($maxPrice[$currency['id_currency']] * (100 + $maxTaxRate) / 100).')';
Db::getInstance()->Execute('
INSERT INTO `'._DB_PREFIX_.'layered_price_index` (id_product, id_currency, id_shop, price_min, price_max)
VALUES '.implode(',', $values).'
ON DUPLICATE KEY UPDATE id_product = id_product # avoid duplicate keys');
}
}
public function hookLeftColumn($params)
@@ -1222,6 +1252,7 @@ class BlockLayered extends Module
Configuration::updateValue('PS_LAYERED_HIDE_0_VALUES', Tools::getValue('ps_layered_hide_0_values'));
Configuration::updateValue('PS_LAYERED_SHOW_QTIES', Tools::getValue('ps_layered_show_qties'));
Configuration::updateValue('PS_LAYERED_FULL_TREE', Tools::getValue('ps_layered_full_tree'));
Configuration::updateValue('PS_LAYERED_FILTER_PRICE_USETAX', Tools::getValue('ps_layered_filter_price_usetax'));
$html .= '
<div class="conf">'.
@@ -1784,6 +1815,15 @@ class BlockLayered extends Module
'.$this->l('No').' <input type="radio" name="ps_layered_full_tree" value="0" '.(!Configuration::get('PS_LAYERED_FULL_TREE') ? 'checked="checked"' : '').' />
</td>
</tr>
<tr>
<td style="text-align: right;">'.$this->l('Use tax to filter price').'</td>
<td>
<img src="../img/admin/enabled.gif" alt="'.$this->l('Yes').'" title="'.$this->l('Yes').'" />
'.$this->l('Yes').' <input type="radio" name="ps_layered_filter_price_usetax" value="1" '.(Configuration::get('PS_LAYERED_FILTER_PRICE_USETAX') ? 'checked="checked"' : '').' />
<img src="../img/admin/disabled.gif" alt="'.$this->l('No').'" title="'.$this->l('No').'" style="margin-left: 10px;" />
'.$this->l('No').' <input type="radio" name="ps_layered_filter_price_usetax" value="0" '.(!Configuration::get('PS_LAYERED_FILTER_PRICE_USETAX') ? 'checked="checked"' : '').' />
</td>
</tr>
</table>
<p style="text-align: center;"><input type="submit" class="button" name="submitLayeredSettings" value="'.$this->l('Save configuration').'" /></p>
</form>
@@ -1968,7 +2008,14 @@ class BlockLayered extends Module
case 'quantity':
if (count($selectedFilters['quantity']) == 2)
break;
$queryFiltersWhere .= ' AND p.quantity '.(!$selectedFilters['quantity'][0] ? '=' : '>').' 0';
if (version_compare(_PS_VERSION_,'1.5','>'))
{
$queryFiltersWhere .= ' AND sa.quantity '.(!$selectedFilters['quantity'][0] ? '>=' : '>').' 0 ';
$queryFiltersFrom .= 'LEFT JOIN stock_available sa ON (sa.id_product = p.id_product AND sa.id_shop = '.(int)Context::getContext()->shop->getID(true).') ';
}
else
$queryFiltersWhere .= ' AND p.quantity '.(!$selectedFilters['quantity'][0] ? '>=' : '>').' 0 ';
//$queryFiltersWhere .= ' AND p.quantity '.(!$selectedFilters['quantity'][0] ? '>=' : '>').' 0';
break;
case 'manufacturer':
@@ -2053,7 +2100,7 @@ class BlockLayered extends Module
while ($product = DB::getInstance()->nextRow($allProductsOut))
if (isset($priceFilter) && $priceFilter)
{
$price = (int)Product::getPriceStatic($product['id_product']); // Cast to int because we don't care about cents
$price = (int)Product::getPriceStatic($product['id_product'], Configuration::get('PS_LAYERED_FILTER_PRICE_USETAX')); // Cast to int because we don't care about cents
if ($price < $priceFilter['min'] || $price > $priceFilter['max'])
continue;
$productIdList[] = (int)$product['id_product'];
@@ -2115,7 +2162,7 @@ class BlockLayered extends Module
{
case 'price':
case 'weight':
if ($value[0] == '' && $value[1] == '' || $value[0] == 0 && $value[1] == 0)
if ($value[0] == '' && $value[1] == '')
unset($selectedFilters[$key]);
break;
default:
@@ -2135,15 +2182,20 @@ class BlockLayered extends Module
case 'weight':
case 'condition':
case 'quantity':
$sqlQuery['select'] = '
SELECT p.`id_product`, p.`condition`, p.`id_manufacturer`, p.`quantity`, p.`weight`
';
if (version_compare(_PS_VERSION_,'1.5','>'))
$sqlQuery['select'] = 'SELECT p.`id_product`, p.`condition`, p.`id_manufacturer`, sa.`quantity`, p.`weight` ';
else
$sqlQuery['select'] = 'SELECT p.`id_product`, p.`condition`, p.`id_manufacturer`, p.`quantity`, p.`weight` ';
$sqlQuery['from'] = '
FROM '._DB_PREFIX_.'product p ';
$sqlQuery['join'] = '
INNER JOIN '._DB_PREFIX_.'category_product cp ON (cp.id_product = p.id_product)
INNER JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category AND
'.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.' AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).') ';
if (version_compare(_PS_VERSION_,'1.5','>'))
$sqlQuery['join'] .= 'LEFT JOIN '._DB_PREFIX_.'stock_available sa
ON (sa.id_product = p.id_product AND sa.id_shop = '.(int)$this->context->shop->getID(true).') ';
$sqlQuery['where'] = 'WHERE p.`active` = 1 ';
$sqlQuery['group'] = ' GROUP BY p.id_product ';
break;
@@ -2258,7 +2310,7 @@ class BlockLayered extends Module
$products = false;
if (!empty($sqlQuery['from']))
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sqlQuery['select']."\n".$sqlQuery['from']."\n".$sqlQuery['join']."\n".$sqlQuery['where']."\n".$sqlQuery['group']);
foreach ($filters as $filterTmp)
{
$methodName = 'filterProductsBy'.ucfirst($filterTmp['type']);
@@ -2742,7 +2794,7 @@ class BlockLayered extends Module
if (isset($filterValue) && $filterValue && isset($product['price_min']) && isset($product['id_product'])
&& ((int)$filterValue[0] > $product['price_min'] || (int)$filterValue[1] < $product['price_max']))
{
$price = Product::getPriceStatic($product['id_product']);
$price = Product::getPriceStatic($product['id_product'], Configuration::get('PS_LAYERED_FILTER_PRICE_USETAX'));
if ($price < $filterValue[0] || $price > $filterValue[1])
continue;
unset($productCollection[$key]);
@@ -2805,9 +2857,18 @@ class BlockLayered extends Module
{
if (count($filterValue) == 2 || empty($filterValue))
return array();
$queryFilters = ' AND p.quantity '.(!$filterValue[0] ? '=' : '>').' 0 ';
return array('where' => $queryFilters);
$queryFiltersJoin = '';
if (version_compare(_PS_VERSION_,'1.5','>'))
{
$queryFilters = ' AND sav.quantity '.(!$filterValue[0] ? '>=' : '>').' 0 ';
$queryFiltersJoin = 'LEFT JOIN stock_available sav ON (sav.id_product = p.id_product AND sav.id_shop = '.(int)Context::getContext()->shop->getID(true).') ';
}
else
$queryFilters = ' AND p.quantity '.(!$filterValue[0] ? '>=' : '>').' 0 ';
return array('where' => $queryFilters, 'join' => $queryFiltersJoin);
}
private static function getManufacturerFilterSubQuery($filterValue, $ignoreJoin)
@@ -2902,9 +2963,9 @@ class BlockLayered extends Module
<option value="20">20</option>
</select>
<select class="filter_type" name="layered_selection_subcategories_filter_type">
<option value="0">'.$this->l('Allow multiple filter value').'</option>
<option value="1">'.$this->l('One filter value').'</option>
<option value="2">'.$this->l('Select').'</option>
<option value="0">'.$this->l('Checkbox').'</option>
<option value="1">'.$this->l('Radio button').'</option>
<option value="2">'.$this->l('Drop-down list').'</option>
</select>
</li>
</ul>
@@ -2921,9 +2982,9 @@ class BlockLayered extends Module
<option value="20">20</option>
</select>
<select class="filter_type" name="layered_selection_stock_filter_type">
<option value="0">'.$this->l('Allow multiple filter value').'</option>
<option value="1">'.$this->l('One filter value').'</option>
<option value="2">'.$this->l('Select').'</option>
<option value="0">'.$this->l('Checkbox').'</option>
<option value="1">'.$this->l('Radio button').'</option>
<option value="2">'.$this->l('Drop-down list').'</option>
</select>
</li>
</ul>
@@ -2941,9 +3002,9 @@ class BlockLayered extends Module
<option value="20">20</option>
</select>
<select class="filter_type" name="layered_selection_condition_filter_type">
<option value="0">'.$this->l('Allow multiple filter value').'</option>
<option value="1">'.$this->l('One filter value').'</option>
<option value="2">'.$this->l('Select').'</option>
<option value="0">'.$this->l('Checkbox').'</option>
<option value="1">'.$this->l('Radio button').'</option>
<option value="2">'.$this->l('Drop-down list').'</option>
</select>
</li>
</ul>
@@ -2961,9 +3022,9 @@ class BlockLayered extends Module
<option value="20">20</option>
</select>
<select class="filter_type" name="layered_selection_manufacturer_filter_type">
<option value="0">'.$this->l('Allow multiple filter value').'</option>
<option value="1">'.$this->l('One filter value').'</option>
<option value="2">'.$this->l('Select').'</option>
<option value="0">'.$this->l('Checkbox').'</option>
<option value="1">'.$this->l('Radio button').'</option>
<option value="2">'.$this->l('Drop-down list').'</option>
</select>
</li>
</ul>
@@ -2982,8 +3043,8 @@ class BlockLayered extends Module
</select>
<select class="filter_type" name="layered_selection_weight_slider_filter_type">
<option value="0">'.$this->l('Slider').'</option>
<option value="1">'.$this->l('inputs').'</option>
<option value="2">'.$this->l('list').'</option>
<option value="1">'.$this->l('Inputs area').'</option>
<option value="2">'.$this->l('List of values').'</option>
</select>
</li>
</ul>
@@ -3002,8 +3063,8 @@ class BlockLayered extends Module
</select>
<select class="filter_type" name="layered_selection_price_slider_filter_type">
<option value="0">'.$this->l('Slider').'</option>
<option value="1">'.$this->l('inputs').'</option>
<option value="2">'.$this->l('list').'</option>
<option value="1">'.$this->l('Inputs area').'</option>
<option value="2">'.$this->l('List of values').'</option>
</select>
</li>
</ul>';
@@ -3028,9 +3089,9 @@ class BlockLayered extends Module
<option value="20">20</option>
</select>
<select class="filter_type" name="layered_selection_ag_'.(int)$attributeGroup['id_attribute_group'].'_filter_type">
<option value="0">'.$this->l('Allow multiple filter value').'</option>
<option value="1">'.$this->l('One filter value').'</option>
<option value="2">'.$this->l('Select').'</option>
<option value="0">'.$this->l('Checkbox').'</option>
<option value="1">'.$this->l('Radio button').'</option>
<option value="2">'.$this->l('Drop-down list').'</option>
</select>
</li>';
$html .= '</ul>';
@@ -3055,9 +3116,9 @@ class BlockLayered extends Module
<option value="20">20</option>
</select>
<select class="filter_type" name="layered_selection_feat_'.(int)$feature['id_feature'].'_filter_type">
<option value="0">'.$this->l('Allow multiple filter value').'</option>
<option value="1">'.$this->l('One filter value').'</option>
<option value="2">'.$this->l('Select').'</option>
<option value="0">'.$this->l('Checkbox').'</option>
<option value="1">'.$this->l('Radio button').'</option>
<option value="2">'.$this->l('Drop-down list').'</option>
</select>
</li>';
$html .= '</ul>';
+11 -9
View File
@@ -47,13 +47,15 @@ param_product_url = '';
{foreach from=$filter_values key=filter_key item=filter_value name=f_values}
{foreach from=$filters item=filter}
{if $filter.type == $filter_type && isset($filter.values)}
{if isset($filter.slider) && $smarty.foreach.f_values.first}
<li>
<a href="#" rel="layered_{$filter.type}_slider" title="{l s='Cancel' mod='blocklayered'}">x</a>
{$filter.name|escape:html:'UTF-8'}{l s=':'}
{$filter.values[0]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'} -
{$filter.values[1]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'}
</li>
{if isset($filter.slider)}
{if $smarty.foreach.f_values.first}
<li>
<a href="#" rel="layered_{$filter.type}_slider" title="{l s='Cancel' mod='blocklayered'}">x</a>
{$filter.name|escape:html:'UTF-8'}{l s=':'}
{$filter.values[0]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'} -
{$filter.values[1]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'}
</li>
{/if}
{else}
{foreach from=$filter.values key=id_value item=value}
{if $id_value == $filter_key && !is_numeric($filter_value) && ($filter.type eq 'id_attribute_group' || $filter.type eq 'id_feature') || $id_value == $filter_value && $filter.type neq 'id_attribute_group' && $filter.type neq 'id_feature'}
@@ -85,7 +87,7 @@ param_product_url = '';
{if !isset($filter.slider)}
{if $filter.filter_type == 0}
{foreach from=$filter.values key=id_value item=value}
<li class="nomargin {if $value@index > $filter.filter_show_limit}hiddable{/if}">
<li class="nomargin {if $value@index >= $filter.filter_show_limit}hiddable{/if}">
{if isset($filter.is_color_group) && $filter.is_color_group}
<input class="color-option {if isset($value.checked) && $value.checked}on{/if}" type="button" name="layered_{$filter.type_lite}_{$id_value}" rel="{$id_value}_{$filter.id_key}" id="layered_id_attribute_group_{$id_value}" {if !$value.nbr} value="X" disabled="disabled"{/if} style="background: {if isset($value.color)}{if file_exists($smarty.const._PS_ROOT_DIR_|cat:"/img/co/$id_value.jpg")}url(img/co/{$id_value}.jpg){else}{$value.color}{/if}{else}#CCC{/if};" />
{if isset($value.checked) && $value.checked}<input type="hidden" name="layered_{$filter.type_lite}_{$id_value}" value="{$id_value}" />{/if}
@@ -103,7 +105,7 @@ param_product_url = '';
{/foreach}
{else if $filter.filter_type == 1}
{foreach from=$filter.values key=id_value item=value}
<li class="nomargin">
<li class="nomargin {if $value@index >= $filter.filter_show_limit}hiddable{/if}">
{if isset($filter.is_color_group) && $filter.is_color_group}
<input class="radio color-option {if isset($value.checked) && $value.checked}on{/if}" type="button" name="layered_{$filter.type_lite}_{$id_value}" rel="{$id_value}_{$filter.id_key}" id="layered_id_attribute_group_{$id_value}" {if !$value.nbr} value="X" disabled="disabled"{/if} style="background: {if isset($value.color)}{if file_exists($smarty.const._PS_ROOT_DIR_|cat:"/img/co/$id_value.jpg")}url(img/co/{$id_value}.jpg){else}{$value.color}{/if}{else}#CCC{/if};"/>
{if isset($value.checked) && $value.checked}<input type="hidden" name="layered_{$filter.type_lite}_{$id_value}" value="{$id_value}" />{/if}
+14 -3
View File
@@ -60,6 +60,12 @@ $_MODULE['<{blocklayered}prestashop>blocklayered_f72c75bdf80dc88b2529162f4947edc
$_MODULE['<{blocklayered}prestashop>blocklayered_64646db703ca003a37bd1e73977a3a4d'] = 'Catégories utilisant ce modèle';
$_MODULE['<{blocklayered}prestashop>blocklayered_d758a9754eb9f36db05c22ad0c77e38e'] = 'Sélectionnez une ou plusieurs catégories utilisant ce modèle';
$_MODULE['<{blocklayered}prestashop>blocklayered_5965d2ce192837f00d743d8a674382c1'] = 'Cliquez sur \"Sauvegarder cette sélection\" ou fermez la fenêtre pour sauvegarder';
$_MODULE['<{blocklayered}prestashop>blocklayered_8cf04a9734132302f96da8e113e80ce5'] = 'Accueil';
$_MODULE['<{blocklayered}prestashop>blocklayered_b56c3bda503a8dc4be356edb0cc31793'] = 'Tout replier';
$_MODULE['<{blocklayered}prestashop>blocklayered_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Tout étendre';
$_MODULE['<{blocklayered}prestashop>blocklayered_5e9df908eafa83cb51c0a3720e8348c7'] = 'Tout cocher';
$_MODULE['<{blocklayered}prestashop>blocklayered_9747d23c8cc358c5ef78c51e59cd6817'] = 'Tout décocher';
$_MODULE['<{blocklayered}prestashop>blocklayered_d0f06038b6b3aa5edc07c7a6fd3ca3f9'] = 'Chercher une catégorie';
$_MODULE['<{blocklayered}prestashop>blocklayered_72dd03f11489ff6f604a4eb57c957202'] = 'Sauvegarder cette sélection';
$_MODULE['<{blocklayered}prestashop>blocklayered_2e527847e8c785f3fd99651f64006798'] = 'Etape 2/3 - Sélectionnez vos filtres';
$_MODULE['<{blocklayered}prestashop>blocklayered_3488a51eb7f723d65daeff912e69b177'] = 'Filres sélectionnés';
@@ -80,6 +86,7 @@ $_MODULE['<{blocklayered}prestashop>blocklayered_93cba07454f06a4a960172bbd6e2a43
$_MODULE['<{blocklayered}prestashop>blocklayered_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Non';
$_MODULE['<{blocklayered}prestashop>blocklayered_8531c73de81b9ed94322dda7cf947daa'] = 'Afficher le nombre de produits qui correspondent';
$_MODULE['<{blocklayered}prestashop>blocklayered_ee61c015043c79c1370fc14980dd27b9'] = 'Montrez les produits des sous-catégories';
$_MODULE['<{blocklayered}prestashop>blocklayered_3e652bd299bb3ee3d458c0dcc7fd706e'] = 'Utiliser les taxes dans le filtre prix';
$_MODULE['<{blocklayered}prestashop>blocklayered_cf565402d32b79d33f626252949a6941'] = 'Configuration enregistré';
$_MODULE['<{blocklayered}prestashop>blocklayered_3601146c4e948c32b6424d2c0a7f0118'] = 'Prix';
$_MODULE['<{blocklayered}prestashop>blocklayered_8c489d0946f66d17d73f26366a4bf620'] = 'Poids';
@@ -94,12 +101,16 @@ $_MODULE['<{blocklayered}prestashop>blocklayered_c0bd7654d5b278e65f21cf4e9153fdb
$_MODULE['<{blocklayered}prestashop>blocklayered_308edffd52afae39cc6277e246ec5df8'] = 'Filtres disponibles';
$_MODULE['<{blocklayered}prestashop>blocklayered_cfbc982f8fb7a0cc3abb3c85c795ab41'] = 'Filtre sous-catégories';
$_MODULE['<{blocklayered}prestashop>blocklayered_af605ea55ee39e54c444f217e346048f'] = 'Pas de limite';
$_MODULE['<{blocklayered}prestashop>blocklayered_f7e8e9adfb9fbb546ae8b9b6ec2849b4'] = 'Autoriser la selection de plusieur valeur de filtre';
$_MODULE['<{blocklayered}prestashop>blocklayered_3c151970b422e3e3cbf927166e4eade4'] = 'Une seul value par filtre';
$_MODULE['<{blocklayered}prestashop>blocklayered_4f8222964f9a317cef99dddc23a121bd'] = 'Case à cocher';
$_MODULE['<{blocklayered}prestashop>blocklayered_07a9ca8c8228dd3399141e228034fedf'] = 'Bouton radio';
$_MODULE['<{blocklayered}prestashop>blocklayered_5204077231fc7164e2269e96b584dd95'] = 'Liste déroulante';
$_MODULE['<{blocklayered}prestashop>blocklayered_cd50ff1c5332f9920acf8173c4aab425'] = 'Filtre stock du produit';
$_MODULE['<{blocklayered}prestashop>blocklayered_048c1728a0a6cf36f56c9dcdd23d8a14'] = 'Filtre état du produit';
$_MODULE['<{blocklayered}prestashop>blocklayered_02ecc2cbb645a2b859deba6907334cc8'] = 'Filtre fabriquant du produit';
$_MODULE['<{blocklayered}prestashop>blocklayered_cc72ed9534a489b5d2e5882735bf1364'] = 'Filtre poids du produit (slider)';
$_MODULE['<{blocklayered}prestashop>blocklayered_2d9b9a764fb0be4be10e1b2fce63f561'] = 'Slider';
$_MODULE['<{blocklayered}prestashop>blocklayered_7e650380ef2b9cec2f2a96e6266ca93d'] = 'Zones de saisies';
$_MODULE['<{blocklayered}prestashop>blocklayered_010359888c6e811caee8e540221f0a21'] = 'Listes de valeurs';
$_MODULE['<{blocklayered}prestashop>blocklayered_0649bb392812f99ff6b0e2ba160675fa'] = 'Filtre prix du produit (slider)';
$_MODULE['<{blocklayered}prestashop>blocklayered_d73c57be7aad115d20508215e8ea9951'] = 'Groupe d\'attributs :';
$_MODULE['<{blocklayered}prestashop>blocklayered_736b91750e516139acc13c5eb6564f92'] = 'attributs';
@@ -112,6 +123,6 @@ $_MODULE['<{blocklayered}prestashop>blocklayered_c32516babc5b6c47eb8ce1bfc223253
$_MODULE['<{blocklayered}prestashop>blocklayered_1262d1b9fbffb3a8e85ac9e4b449e989'] = 'Filtres actifs :';
$_MODULE['<{blocklayered}prestashop>blocklayered_ea4788705e6873b424c65e91c2846b19'] = 'Annuler';
$_MODULE['<{blocklayered}prestashop>blocklayered_853ae90f0351324bd73ea615e6487517'] = ' :';
$_MODULE['<{blocklayered}prestashop>blocklayered_75954a3c6f2ea54cb9dff249b6b5e8e6'] = 'Tranche';
$_MODULE['<{blocklayered}prestashop>blocklayered_146ffe2fd9fa5bec3b63b52543793ec7'] = 'Voir plus';
$_MODULE['<{blocklayered}prestashop>blocklayered_c74ea6dbff701bfa23819583c52ebd97'] = 'Voir moins';
$_MODULE['<{blocklayered}prestashop>blocklayered_75954a3c6f2ea54cb9dff249b6b5e8e6'] = 'Tranche';