[РЕШЕНО]Вывести описание категорий под содержимым и только на первой странице

Главные вкладки

Аватар пользователя s.e.o-man s.e.o-man 25 апреля 2017 в 11:30

В целом с задачей справился, но выводит ошибку от которой надо избавиться, в этом и прошу помощи.

Итак:
1 - Есть описание терминов таксономии которые выводятся только на 1-ой странице с низу с помощью


<?php if (!isset($_GET['page'])) {
            
$category taxonomy_term_load(arg(2));
            echo 
"{$category->description}";}//вывели описание категории снизу ?>

2 - Соответственно сверху я убрал вывод этого же поля так


<?php         
        hide
($page['content']['system_main']['term_heading']['term']['description']); //запретили вывод описания категории сверху
        
print render($page['content']); ?>

3 - Проблема заключается в том что этот код ругается так "Notice: Trying to get property of non-object в функции include()" на строчку echo "{$category->description}".

Я понимаю что описание термина таксономии есть не на каждой странице (например в нодах его нет)

4 - Задача
а) Как организовать проверку является ли текущая страница "Категорией".
или б) Как проверить есть ли на странице $category->description
в) Или же ваш вариант решения проблемы (Без создания отдельного падж для типа материала)

Комментарии

Аватар пользователя bumble bumble 25 апреля 2017 в 18:13

Говнокод - детектед!

В шаблонах - нет места логике!

Все можно сделать в препроцессоре страницы:

Например, в теме (template.php):

<?php
/**
 * Preprocess  page.
 */
function MYTHEME_preprocess_page(&$variables) {
  
// Объявляем переменную с описанием термина
  
$vars['term_description'] = NULL;

  

// Получааем объект термина
  
$term menu_get_object('taxonomy_term'2);

  

// Смотрим параметры страницы
  
$params drupal_get_query_parameters();

  

// Указываем ID словаря категорий
  
$vid 1;

  

// Бъем в бубен для прохождения проверки
  
if (isset($term) && $term->vid == $vid && !isset($params['page'])) {
    
$vars['term_description'] = $term->description;
  }
}
?>

в шаблоне материала:


<?php if (isset($term_description)): ?>
  <?php print $term_description?>
<?php  
endif; ?>

s.e.o-man wrote:

вариант решения проблемы (Без создания отдельного падж для типа материала)

  1. Добавить блок, выводить в нем.
  2. Альтерить контент и программно выводить.
  3. Всяческие панелайзеры.