[Drupal 7] Темизация страницы тегов (решено)

Тема в разделе "Drupal", создана пользователем puagardian, 10 дек 2013.

Информация :
Прежде чем создать новую тему внимательно ознакомьтесь с правилами раздела
Модераторы: DMS
  1. puagardian

    puagardian One Love

    Moderator
    Регистр.:
    16 июл 2012
    Сообщения:
    433
    Симпатии:
    558
    Есть страница со списком нод привязанных к термину (http://jimoffe.ru/seen-films-games/demo), но выводятся там они совершенно ужасно и криво. Вопрос в том как настроить нормальный вывод, где в доках или еще где почитать по этому поводу? Или кратко как нормально все сделать опишите.
     
  2. NoName013

    NoName013 Постоялец

    Регистр.:
    10 ноя 2013
    Сообщения:
    80
    Симпатии:
    18
    Все прописывается в стилях. Классы node node-aircraft node-navy node-teaser row-fluid post full и так далее.
     
  3. puagardian

    puagardian One Love

    Moderator
    Регистр.:
    16 июл 2012
    Сообщения:
    433
    Симпатии:
    558
    Вывод конкретных полей на странице тегов в стилях не прописывается. Вопрос абсолютно о другом.
     
  4. ZOLK

    ZOLK

    Регистр.:
    13 сен 2011
    Сообщения:
    189
    Симпатии:
    107
    Идешь в /modules/taxonomy/
    Берешь там taxonomy-term.tpl.php

    Запиливаешь его к себе в папку с шаблоном(templates) и темизируешь как тебе нужно.

    Если не получиться, то запили в templates.php своего шаблона:

    Код:
    function ТВОЙШАБЛОН_preprocess_taxonomy_term(&$variables) {
      $variables['view_mode'] = $variables['elements']['#view_mode'];
      $variables['term'] = $variables['elements']['#term'];
      $term = $variables['term'];
    
      $uri = entity_uri('taxonomy_term', $term);
      $variables['term_url']  = url($uri['path'], $uri['options']);
      $variables['term_name'] = check_plain($term->name);
      $variables['page']      = $variables['view_mode'] == 'full' && taxonomy_term_is_page($term);
    
      // Flatten the term object's member fields.
      $variables = array_merge((array) $term, $variables);
    
      // Helpful $content variable for templates.
      $variables['content'] = array();
      foreach (element_children($variables['elements']) as $key) {
        $variables['content'][$key] = $variables['elements'][$key];
      }
    
      // field_attach_preprocess() overwrites the $[field_name] variables with the
      // values of the field in the language that was selected for display, instead
      // of the raw values in $term->[field_name], which contain all values in all
      // languages.
      field_attach_preprocess('taxonomy_term', $term, $variables['content'], $variables);
    
      // Gather classes, and clean up name so there are no underscores.
      $vocabulary_name_css = str_replace('_', '-', $term->vocabulary_machine_name);
      $variables['classes_array'][] = 'vocabulary-' . $vocabulary_name_css;
    
      $variables['theme_hook_suggestions'][] = 'taxonomy_term__' . $term->vocabulary_machine_name;
      $variables['theme_hook_suggestions'][] = 'taxonomy_term__' . $term->tid;
    }
    П.С это я со своего templates.php взял, тут многое тебе не нужно, просто лень выпиливать, тут главное вот это:

    // Gather classes, and clean up name so there are no underscores.
    $vocabulary_name_css = str_replace('_', '-', $term->vocabulary_machine_name);
    $variables['classes_array'][] = 'vocabulary-' . $vocabulary_name_css;

    $variables['theme_hook_suggestions'][] = 'taxonomy_term__' . $term->vocabulary_machine_name;
    $variables['theme_hook_suggestions'][] = 'taxonomy_term__' . $term->tid;

    Я просто с этим не сталкивался, но примерно так должно быть
     
  5. puagardian

    puagardian One Love

    Moderator
    Регистр.:
    16 июл 2012
    Сообщения:
    433
    Симпатии:
    558
    Пробовал одним и другим способом, пробовал указывать машинное имя и tid, чистил кэш но к той странице шаблон так и не привязался. Зато вываливается куча ошибок c указанием на ошибки в кастомных шаблонах нод:
    Warning: Invalid argument supplied for foreach() in element_children() (line 6396 of /site.ru/includes/common.inc).
    Warning: Cannot use a scalar value as an array in drupal_render() (line 5863 of /site.ru/includes/common.inc).
    Warning: Cannot use a scalar value as an array in drupal_render() (line 5918 of /site.ru/includes/common.inc).
    Notice: Undefined index: field_atags in include() (line 103 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Trying to get property of non-object in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Undefined index: field_sinfg in include() (line 118 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Trying to get property of non-object in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Trying to get property of non-object in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php).
    Notice: Undefined index: field_ntag in include() (line 103 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: field_sinfg in include() (line 118 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 121 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Trying to get property of non-object in include() (line 123 of /site.ru/sites/all/themes/mentor/templates/nodes/node--navy.tpl.php).
    Notice: Undefined index: field_ltag in include() (line 103 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).
    Notice: Undefined index: taxonomy_term in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in include() (line 108 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--land-systems.tpl.php).
    Notice: Trying to get property of non-object in taxonomy_term_uri() (line 147 of /site.ru/modules/taxonomy/taxonomy.module).

    Подозреваю что друпал именно их использует при выводе, вот только тут переменные нод не все доступны и валятся ошибки. На страницах самих нод все отлично работает.
     
  6. shamaner

    shamaner Постоялец

    Регистр.:
    10 окт 2007
    Сообщения:
    141
    Симпатии:
    18
    ну так это нотисы же. что в строке 106 Notice: Undefined index: taxonomy_term in include() (line 106 of /site.ru/sites/all/themes/mentor/templates/nodes/node--aircraft.tpl.php) и тд?
     
  7. puagardian

    puagardian One Love

    Moderator
    Регистр.:
    16 июл 2012
    Сообщения:
    433
    Симпатии:
    558
    В файлах там все в порядке. Notice только на страницах "тегов" появляются.

    И все же мне так и осталось непонятно. Как настроить вывод определенных полей нод на странице тега (http://jimoffe.ru/seen-films-games/demo) сразу для всех терминов словаря, чтобы поля одинаково выводились на всех страницах терминов. Ну или хотя бы как так вывод полей нод настроить для каждого термина. Последняя загвоздка, а времени больше всего отнимает.


    UPDATE: Решил настройкой через Panels и Views.
     
    Последнее редактирование: 17 дек 2013
  8. shamaner

    shamaner Постоялец

    Регистр.:
    10 окт 2007
    Сообщения:
    141
    Симпатии:
    18
    если все в порядке - нотисов не бывает. у вас php 5.3 как минимум. в 5.2 проверок на наличие не нужно было делать
     
  9. puagardian

    puagardian One Love

    Moderator
    Регистр.:
    16 июл 2012
    Сообщения:
    433
    Симпатии:
    558
    Вот когда вывод этих страниц настроил, то и нотисы исчезли. PHP 5.3