Темизация ноды.

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

Аватар пользователя dimitrian777 dimitrian777 10 октября 2014 в 16:39

К знатокам такой вопрос. Вывод ноды реализован с помощью такого кода:


<?php
      
      
print views_embed_view('viewblog''block_1',$node->nid);
      print 
render($content['comments']);
?>

Так выводится представление под конкретный тип материалов (тип блог). То есть представление использует в конкретном случае "FILTER CRITERIA"-"Content: Type (= Blog)".

Как сделать чтобы все типы материалов выводились как предыдущее представление. Понятно, что для следующего типа материала я клонирую предыдущее представление, изменяю ссылку на страницу где оно будет, прописываю другой пункт меню, и изменяю в "FILTER CRITERIA" тип материала. Вообщем представление для другого раздела готово. Но вот, что делать с нодой как его вывести?

Комментарии

Аватар пользователя whiesam whiesam 10 октября 2014 в 16:55

Зачем Вы вьюсом то выводите ноду?
Вьюсом выводятся списки нод там и т.д.

Если надо поменять разметку допустим в типе материала Blog то вот:
Drupal suggestions.
В template.php темы, только сменить название функции на название шаблона. Кстати бывает и такое что уже прописано если шаблон не самописный.

<?php
function MYTHEME_preprocess_page(&$variables) {
  if (!empty(
$variables['node']) && !empty($variables['node']->type)) {
    
$variables['theme_hook_suggestions'][] = 'page__node__' $variables['node']->type;
  }
}
?>

Далее создаём файл типа: page--node--blog.tpl.php (где blog машинное название типа материала).
И там уже играемся с разметкой.
Вот переменные для page--*: https://api.drupal.org/api/drupal/modules!system!page.tpl.php/7

Аватар пользователя dimitrian777 dimitrian777 10 октября 2014 в 17:36

Спасибо за ответ, но это меня не устроит. Такой вопрос, как то можно определить тип материала на котором находится пользователь чтобы выводить ноду согласно условиям ну типа если открыт тип1 то использовать первую php-конструкцию, если тип2 вторую... и так далее.
То есть:
if (тип== тип1){

print views_embed_view('viewname1', 'block_1',$node->nid);
print render($content['comments']);
if (тип== тип2){

print views_embed_view('viewname2', 'block_2',$node->nid);
print render($content['comments']);
}
Можно ли как то так реализовать?

Аватар пользователя whiesam whiesam 10 октября 2014 в 17:48

"dimitrian777" wrote:
если открыт тип1 то использовать первую php-конструкцию, если тип2 вторую... и так далее.

Я написал так-то выше.
"dimitrian777" wrote:
Можно ли как то так реализовать?

Можно наверное (хотя скорее нет, не проверял), но у нас за такое руки топором без вопросов отрубают.
Это вообще по другому делается.

Вангую, Вы до этого сидели на Джумле или ВП?