Помощь Как скрыть описание категории на всех страницах, кроме первой?

Статус
В этой теме нельзя размещать новые ответы.

Freeman Liberty

Постоялец
Регистрация
19 Май 2009
Сообщения
489
Реакции
173
Вроде как распространенная проблема и должно быть масса решений, но подходящего так и не нашел.

J 1.5 если задать описание категории, то оно выводиться не только на первой странице категории, но и на всех последующих (если материалов много).

Естественно такое дублирование контента плохо сказывается и на юзабилити и на seo.

Поискал в сети наиболее приемлемым вариантом показался вот этот Для просмотра ссылки Войди или Зарегистрируйся .

Но у меня не работает- то ли потому, что включен sh404Sef и ссылки не имеют параметра limitstart; то ли потому, что установлен шаблон от JA и в нем вывод описания категории задан совсем по другому.

Может кто подскажет другое решение или что надо изменить в данном коде, чтобы описание выводилось только на первой странице категории?

код такой:
Код:
<?php if ($this->params->def('show_description', 1) || $this->params->def('show_description_image', 1)) : ?>
<div class="category-desc clearfix">
 
<?php if ($this->params->get('show_description_image') && $this->category->image) : ?>
<img src="<?php echo $this->baseurl . $cparams->get('image_path') . '/' . $this->category->image; ?>" class="image_<?php echo $this->category->image_position; ?>" />
<?php endif; ?>
 
<?php if ($this->params->get('show_description') && $this->category->description) :
echo $this->category->description;
endif; ?>
 
<?php if ($this->params->get('show_description_image') && $this->category->image) : ?>
<div class="wrap_image">&nbsp;</div>
<?php endif; ?>
 
</div>
<?php endif; ?>
 
Попробуйте вывести limitstart, чтобы убедиться, что его значение отсутствует
$limitstart = JRequest::getInt('limitstart', 0);
echo "Limitstart is: ".$limitstart;
if ($limitstart <= 0)
// выводим
 
Joomla\ components\com_content\views\category\tmpl\ blog.php
ищем:
Код:
<?php echo $this->category->description; ?>
заменяем на:
Код:
<?php if (!isset($_GET['limitstart'])) {echo $this->category->description; }?>
Также можно сделать и для шаблона блога раздела. Для этого, аналогичную проверку делаем в файле Joomla\ components\com_content\views\section\tmpl\blog.php .
 
uf1976 -внимательно прочтите первый пост.
Я же написал в самом начале, что этот вариант показался наиболее приемлемым, а также что в моем случае он не подходит.
 
код такой:
Код:
<?php if ($this->params->def('show_description', 1) || $this->params->def('show_description_image', 1)) : ?>
<div class="category-desc clearfix">
 
<?php if ($this->params->get('show_description_image') && $this->category->image) : ?>
<img src="<?php echo $this->baseurl . $cparams->get('image_path') . '/' . $this->category->image; ?>" class="image_<?php echo $this->category->image_position; ?>" />
<?php endif; ?>
 
<?php if ($this->params->get('show_description') && $this->category->description) :
echo $this->category->description;
endif; ?>
 
<?php if ($this->params->get('show_description_image') && $this->category->image) : ?>
<div class="wrap_image">&nbsp;</div>
<?php endif; ?>
 
</div>
<?php endif; ?>

Откуда этот код? Файл джумлы или файл вашего макета? И куда вы вставляли код из приведённой вами ссылки? Потому что если задан шаблон вывода в макете JA, то там и нужно вставлять. И возможно надо будет вставлять через JRequest.
 
Vladya - вроде старался все подробно расписать.
Код из шаблона Joomla Art (если кто не знает, то все их шаблоны имеют собственный фреимворк)
Пробовал делать изменения как предложил uf1976 и как описано в ссылке приведенной мною в первом посте но это никак не отразилась на выводе категории (т.е. можно даже полностью удалить строку <?php echo $this->category->description; ?> - описание все равно выводится). Поискал в файлах шаблона и нашел, что вывод категории формируется в файле blog.php расположенном plugins\system\jat3\base-themes\default\html\com_content\category
Если в нем удалить участок кода, а именно:
PHP:
<?php if ($this->params->get('show_description') && $this->category->description) :
            echo $this->category->description;
        endif; ?>
то описание категории выводиться перестает.

Логично предположить, что редактировать надо этот файл.
Но как интегрировать способ с редактирование строки <?php echo $this->category->description; ?> с этим котом и будет ли он работать при включенном sh404Sef ??
Может есть другие варианты? вывести информацию только на первой странице категории не выводя на остальных?
Пробовал Advanced Module Manager, но нужного варианта добиться так и не смог .
 
если используете шаблон blog для вывода, то надо именно этот файл и редактировать
попробуйте мой код

проверка

Код:
<?php
$limit = JRequest::getInt('limitstart',0);
if ($limit == 0){
$categorydesc=1;
}?>

вывод

Код:
<?php if ($categorydesc==1) : ?>
<?php echo JHtml::_('content.prepare', $this->category->description, '', 'com_content.category'); ?>
<?php endif; ?>
 
Заменил

PHP:
<?php if ($this->params->get('show_description') && $this->category->description) :
            echo $this->category->description;
        endif; ?>

на код предложенный Bodrilo вроде как на локалке все работает как надо.

Осталось проверить будет ли работать с включенным sh404Sef.
 
PHP:
<?php if ($this->params->get('show_description') &&
          $this->category->description &&
          JRequest::getVar('limitstart',0) == 0)
echo $this->category->description;
?>

работает с включенным sh404Sef.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху