Помогите с темизацией ноды пожалуйста!
С помощью вот такого кода
<?php
print $node->field_foto_news[0]['view']
?>
выводится первая фотка из всех, и при ее открытии я не могу просмотреть остальные.
А при таком коде
<?php
$field = content_fields('field_foto_news', $node->type);
print content_view_field($field, $node);
?>
выводится тоже одна первая фотка, но уже есть возможность при ее открытии перелистывать все фото.
Как заставить выводить ВСЕ фотки?
И гугл уже замучил и у вас поисковик тоже не дал результатов...
Комментарии
Каким-то странным путем вы идете... через views вывести поле картинок.
что-то я не понимаю, как сделать вывод через views для Нод типа story...
я делал так: создал файл node-story.tpl.php
в него вставил код:
<?php
<div class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">
<
div style="float:right"><?php echo $node->field_news_image[0]['view']; ?></div><div style="float:left;margin-right:15px;">
<?php print $node->field_video[0]['view'] ?>
</div>
<div style="text-indent: 20px;">
<?php print $node->content['body']['#value'] ?>
</div>
<div class="foto_story">
<?php
print $node->field_foto_news[0]['view']
?>
</div>
<div style="clear:both"> </div>
</div>
?>
делаем отдельную вьюху, добавляем в нее аргумент - ноде ид. Добавляем фильтр по типу материала - стори. Добавляем fields - image. Можно вывести в блок и обернуть дополнительно в теги для последующей покраски)
Вопрос лишь в том, используется ли в проекте модуль views. Ради одной только цели вывести поля картинок в одном типе материала не резонно. Да и вообще не понятна проблема - добавить через cck поля image, настроить их вывод через display fields. Темизировать по необходимости. А вы велисипед изобретаете. В друпале код писать не всегда лучший и оптимальный вариант)
а что мешает к коду которым ты выводишь добавить foreach ?
<?php
foreach ($node->field_foto_newsas $key=>$value) {
print $value['view'];
}
?>
и будет тебе счастье )))
Все-таки разобрался я как сделать вывод отдельной ноды через view, огромное спасибо raspytnik'у!
Но все-равное есть загвоздка....
При выводе фото как "Lightbox2: photo-100x100->original compact" отображается только первая фотка и есть возможность перелистывать все остальные.
При выводе фото как "photo-100x100 изображение со ссылкой на исходное изображение" выводятся все фотки, но вот открываются без Lightbox2 и в отдельных вкладках...
Подскажите, как побороть эту проблему... может я что-то в настройках упустил?
самый простой способ:
1. делаешь поле с картинкой
2. в настройках отображения подключаешь лайтбокс и исключаешь из вывода
4. в шаблоне типа материала делаешь вывод
<?php
foreach ($node->field_name_of_field as $key=>$value) {
print $value['view'];
}
?>
name_of_field - это название твоего поля.
если хочешь через вювс то тогда сними галочку группировки (в настройках поля вювса) или уникальности в настройках вювса.
У меня ошибка сыпет....
Вот код вьюхи
<?php foreach ($fields as $id => $field): ?>
<?php
if($id=='title'){$title=$field->content;}
if($id=='field_news_image_fid'){$img=$field->content;}
if($id=='body'){$text=$field->content;}
if($id=='tid'){$razdel=$field->content;}
if($id=='field_video_embed'){$video=$field->content;}
if($id=='created'){$date=$field->content;}
?>
<?php endforeach; ?>
<div class="node_story">
<div class="content_node_story">
<div class="video_node_story"><?=$video?></div>
<div class="title_node_story"><?=$title?></div>
<div class="img_node_story"><?=$img?></div>
<div class="text_node_story"><?=$text?></div>
</div>
<div class="foto_node_story">
!тут вывод видео!
</div>
<div class="info_node_story">
<div class="date_node_story"><?=$date?></div>
<div class="razdel_node_story"><?=$razdel?></div>
</div>
</div>
?>
Ошибка Invalid argument supplied for foreach() in /home/***/public_html/sites/all/themes/***/views-view-fields--node-story--page.tpl.php on line 19.
когда вставляю твой код.
конечно будет выдавать ошибку, прочитай про foreach и посмотри еще раз что я писал.
нужно вот так
<?php
if($id=='title'){$title=$field->content;}
if($id=='field_news_image_fid'){$img=$field->content;}
if($id=='body'){$text=$field->content;}
if($id=='tid'){$razdel=$field->content;}
if($id=='field_video_embed'){$video=$field->content;}
if($id=='created'){$date=$field->content;}
?>
это блок с фото
<div class="node-photos">
<?php
foreach ($node->field_news_image as $key=>$value) {
print $value['view'];
}
?>
</div>
конец блока фото
<div class="node_story">
<div class="content_node_story">
<div class="video_node_story"><?=$video?></div>
<div class="title_node_story"><?=$title?></div>
<div class="img_node_story"><?=$img?></div>
<div class="text_node_story"><?=$text?></div>
</div>
<div class="foto_node_story">
!тут вывод видео!
</div>
<div class="info_node_story">
<div class="date_node_story"><?=$date?></div>
<div class="razdel_node_story"><?=$razdel?></div>
</div>
</div>
?>
и сделай print_r($node) увидишь структуру ноды.
и самое главное ты почему это делаешь в шаблоне вюхи? 0_о это в шаблоне ноды для твоего материала нужно делать!
Я вывод ноды делаю через views.
Файл "views-view-fields--node-story--page.tpl.php":
<?php
if($id=='title'){$title=$field->content;}
if($id=='field_news_image_fid'){$img=$field->content;}
if($id=='body'){$text=$field->content;}
if($id=='tid'){$razdel=$field->content;}
if($id=='field_video_embed'){$video=$field->content;}
if($id=='created'){$date=$field->content;}
?>
<div class="node_story">
<div class="content_node_story">
<div class="video_node_story"><?=$video?></div>
<div class="title_node_story"><?=$title?></div>
<div class="img_node_story"><?=$img?></div>
<div class="text_node_story"><?=$text?></div>
</div>
<div class="foto_node_story">
<?php
foreach ($node->field_foto_news_fid as $key=>$value) {
print $value['view'];
}
?>
</div>
<div class="info_node_story">
<div class="date_node_story"><?=$date?></div>
<div class="razdel_node_story"><?=$razdel?></div>
</div>
</div>
?>
с таким кодом вот такая ошибка: Invalid argument supplied for foreach() in /home/***/public_html/sites/all/themes/***/views-view-fields--node-story--page.tpl.php on line 18.
тогда нужно сначала сделать вот так
<?php $node = node_load($node->nid);?>
и у вас будут все поля этой ноды. $node->nid - это id нужной ноды.но если честно, то я не понимаю зачем ноду выводить в шаблоне поля вювса...
Ну просто я вьюсом делаю вывод... в шаблоне и темезирую, много разных типов материала... ну в общем как-то так:)
ясно, получилось сделать или нет?