Вывод всех фоток в ноде

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

Аватар пользователя derron116 derron116 18 февраля 2012 в 21:19

Помогите с темизацией ноды пожалуйста!

С помощью вот такого кода

<?php
print $node->field_foto_news[0]['view']
?>

выводится первая фотка из всех, и при ее открытии я не могу просмотреть остальные.

А при таком коде

<?php
$field 
content_fields('field_foto_news'$node->type);
print    
content_view_field($field$node);
?>

выводится тоже одна первая фотка, но уже есть возможность при ее открытии перелистывать все фото.

Как заставить выводить ВСЕ фотки?

И гугл уже замучил и у вас поисковик тоже не дал результатов...

Комментарии

Аватар пользователя derron116 derron116 18 февраля 2012 в 22:06

что-то я не понимаю, как сделать вывод через 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">&nbsp;</div>

</div>
?>

Аватар пользователя raspytnik raspytnik 19 февраля 2012 в 0:02

"derron116" wrote:
что-то я не понимаю, как сделать вывод через views для Нод типа story...

делаем отдельную вьюху, добавляем в нее аргумент - ноде ид. Добавляем фильтр по типу материала - стори. Добавляем fields - image. Можно вывести в блок и обернуть дополнительно в теги для последующей покраски)
Вопрос лишь в том, используется ли в проекте модуль views. Ради одной только цели вывести поля картинок в одном типе материала не резонно. Да и вообще не понятна проблема - добавить через cck поля image, настроить их вывод через display fields. Темизировать по необходимости. А вы велисипед изобретаете. В друпале код писать не всегда лучший и оптимальный вариант)

Аватар пользователя derron116 derron116 20 февраля 2012 в 14:10

Все-таки разобрался я как сделать вывод отдельной ноды через view, огромное спасибо raspytnik'у!

Но все-равное есть загвоздка....

При выводе фото как "Lightbox2: photo-100x100->original compact" отображается только первая фотка и есть возможность перелистывать все остальные.

При выводе фото как "photo-100x100 изображение со ссылкой на исходное изображение" выводятся все фотки, но вот открываются без Lightbox2 и в отдельных вкладках...

Подскажите, как побороть эту проблему... может я что-то в настройках упустил?

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 20 февраля 2012 в 21:03

самый простой способ:
1. делаешь поле с картинкой
2. в настройках отображения подключаешь лайтбокс и исключаешь из вывода
4. в шаблоне типа материала делаешь вывод


<?php        
    
foreach ($node->field_name_of_field as $key=>$value) {
        print 
$value['view'];
    }
?>

name_of_field - это название твоего поля.

если хочешь через вювс то тогда сними галочку группировки (в настройках поля вювса) или уникальности в настройках вювса.

Аватар пользователя derron116 derron116 20 февраля 2012 в 23:52

vitaliy.stymkovskyy wrote:
самый простой способ:
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.
когда вставляю твой код.

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 21 февраля 2012 в 0:31

конечно будет выдавать ошибку, прочитай про 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_о это в шаблоне ноды для твоего материала нужно делать!

Аватар пользователя derron116 derron116 21 февраля 2012 в 13:55

vitaliy.stymkovskyy wrote:
конечно будет выдавать ошибку, прочитай про 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.

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 21 февраля 2012 в 21:02

тогда нужно сначала сделать вот так <?php $node node_load($node->nid);?> и у вас будут все поля этой ноды. $node->nid - это id нужной ноды.
но если честно, то я не понимаю зачем ноду выводить в шаблоне поля вювса...

Аватар пользователя derron116 derron116 22 февраля 2012 в 0:48

Ну просто я вьюсом делаю вывод... в шаблоне и темезирую, много разных типов материала... ну в общем как-то так:)