Jump to content

Делаем вывод описания категории только на первой странице, с поддержкой 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)
Link to comment
Share on other sites

  • 2 months later...

Схема только для 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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

  • 8 months later...

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

 

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

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

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

Edited by Kerm (see edit history)
Link to comment
Share on other sites

×
×
  • Create New...