Jump to content
Kerm

Делаем вывод описания категории только на первой странице, с поддержкой blocklayered навигации.

Recommended Posts

Схема только для 1.4, для 1.5 думаю что почти все тоже самое...


1) В файле category.tpl, найти строчки:
 

{if $category->description}
{$category->description}
{/if}

Скопировать их в блокнот и затем удалить или закомментировать {* *} из файла category.tpl

 

В место удаленого кода вставить это:

{include file="$tpl_dir./p2.tpl"}

2) Создаем новый файл p2.tpl и вставляем туда следующие строчки:
 

{if isset($p) && $p}
{if $p > 1}
<div class="cat_desc"></div>
{else}
<div class="cat_desc">{if $category->description}{$category->description}{/if}</div>
{/if}
{/if}

3) Открываем файл \modules\blocklayered\blocklayered.js и находим примерно на 397 строчки этот код:
 

ajaxQuery = $.ajax(
{
type: 'GET',
url: baseDir + 'modules/blocklayered/blocklayered-ajax.php',
data: data+params_plus+n,
dataType: 'json',
cache: false, // @todo see a way to use cache and to add a timestamps parameter to refresh cache each 10 minutes for example
success: function(result)
{
...............................

Далее после этого правила:
 

if (result.pagination.search(/[^\s]/) >= 0) {
if ($(result.pagination).find('ul.pagination').length)
{
$('div#pagination').show();
$('ul.pagination').each(function () {
$(this).replaceWith($(result.pagination).find('ul.pagination'));
});
}
else if (!$('ul.pagination').length)
{
$('div#pagination').show();
$('div#pagination').each(function () {
$(this).html($(result.pagination));
});
}
else
{
$('ul.pagination').html('');
$('div#pagination').hide();
}
}
else
{
$('ul.pagination').html('');
$('div#pagination').hide();
}

Сразу за ним вставляем этот код:
 

if (result.p2.search(/[^\s]/) >= 0) {
$('.cat_desc').each(function () {
$(this).replaceWith($(result.p2));
});
};

4) Далее открываем там же файл blocklayered.php

Находим в нем функцию:
 

public function ajaxCall()
{
.............................

Сразу после этих строчек:
 

$nArray = array_unique($nArray);
asort($nArray);

Добавляем этот код:
 

$id_category = array('id' => (int)Tools::getValue('id_category_layered', 1));
$category = new Category((int)($id_category['id']));
if (isset($category->description[1])) $category->description = $category->description[1];

5) После сразу ниже находим:
 

$smarty->assign(
array(
'homeSize' => Image::getSize('home'),
'nb_products' => $nb_products,
......................

Находим и комментируем:
 

// 'category' => (object)array('id' => (int)Tools::getValue('id_category_layered', 1)),

Сразу после нашего комментария вставляем:
 

'category' => $category,

Не забудь почистить кеш престашопа и браузера после!

 

-----------------------------------------------

 

В сети еще нашел вот такой код, но он не мой, и не отвечаю за его работоспособность:

 

{if $category->description}
        	{if $smarty.get.p<=1} 
			<div class="cat_desc">{$category->description}</div>
            {/if}
            {else}
            <div class="cat_desc"></div>
		{/if}
Edited by Kerm (see edit history)

Share this post


Link to post
Share on other sites

Схема только для 1.4, для 1.5 думаю что почти все тоже самое...

 

 

1) В файле category.tpl, найти строчки:

 

{if $category->description}
{$category->description}
{/if}

Скопировать их в блокнот и затем удалить или закомментировать {* *} из файла category.tpl

 

В место удаленого кода вставить это:

{include file="$tpl_dir./p2.tpl"}

2) Создаем новый файл p2.tpl и вставляем туда следующие строчки:

 

{if isset($p) && $p}
{if $p > 1}
<div class="cat_desc"></div>
{else}
<div class="cat_desc">{if $category->description}{$category->description}{/if}</div>
{/if}
{/if}

3) Открываем файл \modules\blocklayered\blocklayered.js и находим примерно на 397 строчки этот код:

 

ajaxQuery = $.ajax(
{
type: 'GET',
url: baseDir + 'modules/blocklayered/blocklayered-ajax.php',
data: data+params_plus+n,
dataType: 'json',
cache: false, // @todo see a way to use cache and to add a timestamps parameter to refresh cache each 10 minutes for example
success: function(result)
{
...............................

Далее после этого правила:

 

if (result.pagination.search(/[^\s]/) >= 0) {
if ($(result.pagination).find('ul.pagination').length)
{
$('div#pagination').show();
$('ul.pagination').each(function () {
$(this).replaceWith($(result.pagination).find('ul.pagination'));
});
}
else if (!$('ul.pagination').length)
{
$('div#pagination').show();
$('div#pagination').each(function () {
$(this).html($(result.pagination));
});
}
else
{
$('ul.pagination').html('');
$('div#pagination').hide();
}
}
else
{
$('ul.pagination').html('');
$('div#pagination').hide();
}

Сразу за ним вставляем этот код:

 

if (result.p2.search(/[^\s]/) >= 0) {
$('.cat_desc').each(function () {
$(this).replaceWith($(result.p2));
});
};

4) Далее открываем там же файл blocklayered.php

 

Находим в нем функцию:

 

public function ajaxCall()
{
.............................

Сразу после этих строчек:

 

$nArray = array_unique($nArray);
asort($nArray);

Добавляем этот код:

 

$id_category = array('id' => (int)Tools::getValue('id_category_layered', 1));
$category = new Category((int)($id_category['id']));
if (isset($category->description[1])) $category->description = $category->description[1];

5) После сразу ниже находим:

 

$smarty->assign(
array(
'homeSize' => Image::getSize('home'),
'nb_products' => $nb_products,
......................

Находим и комментируем:

 

// 'category' => (object)array('id' => (int)Tools::getValue('id_category_layered', 1)),

Сразу после нашего комментария вставляем:

 

'category' => $category,

Не забудь почистить кеш престашопа и браузера после!

 

Демо: _bikinimal.(РУ)/82417053-lora-grig-2013-novaja-kollekcija-kupalnikov

А для чего? я например хочу видеть описание на каждой, вот сцены и картинка - это да

Share this post


Link to post
Share on other sites

Для сео вроде как плохо когда один и тот же текст на многих страницах вылазиет.

Могу переделать для 1.5 платно, пиши в пм

Share this post


Link to post
Share on other sites

Инструкция для 1.5 та же..единственное уточнение для обоих версий:

 

Когда прописываем это:

if (isset($category->description[1])) $category->description = $category->description[1];

То цифру 1 надо заменить на ID вашего языка..у всех он может быть разным. Так что по внимательнее.

Edited by Kerm (see edit history)

Share this post


Link to post
Share on other sites

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More