Node Gallery и views

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

Аватар пользователя Arturus Arturus 24 октября 2009 в 15:58

Уважаемые, подскажите, как с помощью views задавать размер выводимого изображения добавленного в галерею Node Gallery?

У меня получается вывести только одним размером, заданным в настройках модуля Node Gallery. А мне надо чтобы в материале изображение выводились крупно, а в блоках через views мелко.

Комментарии

Аватар пользователя Arturus Arturus 24 октября 2009 в 17:01

imagecache у меня стоит и настроен, создаются 3 варианта размера изображения. Вопрос как задавать показ этих вариантов во views ?

Аватар пользователя Arturus Arturus 27 октября 2009 в 10:53

Ничего не найдя сделал через сниппеты

<?php
   
// Лимит вывода на странице
   
$limit 10;
 
   
// Выбранный типы материала
   
$type 'node_gallery_image';
 
   
// тут будем всё хранить
   
$output  '';
 
   
// Формируем запрос к базе
   
$query "SELECT DISTINCT(node.nid) AS nid,
   node_galleries.fid AS node_galleries_fid,
   node_galleries.gid AS gid, 
  node_galleries.nid AS node_galleries_nid,
   node_revisions.timestamp AS node_revisions_timestamp,
   node_files.filename AS node_filename,
   node_users.name AS name,
   node_users.uid AS uid,
   node.title AS title
 FROM club_node node 
 INNER JOIN club_node_galleries node_galleries ON node.nid = node_galleries.nid
 LEFT JOIN club_node_revisions node_revisions ON node.vid = node_revisions.vid
 LEFT JOIN club_files node_files ON node_galleries.fid = node_files.fid
 LEFT JOIN club_users node_users ON node.uid = node_users.uid
 WHERE node.type in ('node_gallery_image')
   ORDER BY node_revisions_timestamp ASC limit 1"
;
 
   
// Спрашиваем у БД то, что сформировали
   
$result db_query($query$type$limit);
 
   
// Проходимся циклом по результату
   // На каждую найденную строку формируем строку вывода и прибавляем её к общему результату ($output)
      
while ($arr db_fetch_array($result)) {
 
         
// Заголовок
$img='../sites/default/files/imagecache/node-gallery-display/'.$arr['node_filename'];

     

$output .= '<h2 class="title">'.$arr[title].'<a href=../node/'$arr[gid].'><img src="'.$img.'"></a></h2>';

         

// Автор
            
$output .= '<span class="submitted">' t('автор: ') . l($arr['name'], 'user/'$arr['uid']) .'</span><hr>';
 
   }
 
      print  
$output;
?> 

понимаю, что это не самое удобное решение, но другого для себя не нашел. Вопрос остается открытым.

Аватар пользователя Arturus Arturus 28 октября 2009 в 3:19

Для Node Gallery такого нет, там используется только один, заданный в настройках Node Gallery.
Если я ошибаюсь, подскажите где искать, желательно скриншот

Аватар пользователя Arturus Arturus 21 декабря 2010 в 7:43

Вывод галерей с названиями и топовыми изображениями

<?php//запрос на вывод галерей
///////////////////////////
 
$query_g = "SELECT DISTINCT(node.nid) AS nid,
   node.title AS node_title
 FROM portal_node node 
 WHERE node.type in ('node_gallery_gallery')
 GROUP BY nid
  ORDER BY nid DESC limit 5";

   // Спрашиваем у БД то, что сформировали
   $result_g = db_query($query_g);
 
   // Проходимся циклом по результату
      while ($arr_g = db_fetch_array($result_g)) {

   $gid=$arr_g['nid'];

//выводим изображения
   // тут будем всё хранить
   $output  = '';
 
   // Формируем запрос к базе
   $query = "SELECT DISTINCT(node.nid) AS nid,
   node_galleries.fid AS fid,
   node_galleries.gid AS gid, 
  node_galleries.nid AS node_galleries_nid,
   node_revisions.timestamp AS node_revisions_timestamp,
   node_revisions.title AS title_g,
   node_files.filename AS node_filename,
   node_users.name AS name,
   node_users.uid AS uid,
   node.title AS title
 FROM portal_node node
 INNER JOIN portal_node_galleries node_galleries ON node.nid = node_galleries.nid
 LEFT JOIN portal_node_revisions node_revisions ON node.vid = node_revisions.vid
 LEFT JOIN portal_files node_files ON node_galleries.fid = node_files.fid
 LEFT JOIN portal_users node_users ON node.uid = node_users.uid
 WHERE node.type in ('node_gallery_image') AND gid=$gid AND  node_galleries.is_cover <> 0
   ORDER BY node_revisions_timestamp ASC limit 1";
 
   // Спрашиваем у БД то, что сформировали
   $result = db_query($query);
 
   // Проходимся циклом по результату
   // На каждую найденную строку формируем строку вывода и прибавляем её к общему результату ($output)
      while ($arr = db_fetch_array($result)) {

//картинка
$img='../sites/default/files/imagecache/node-gallery-thumbnail/'.$arr['node_filename'];

         // Заголовок
     $output .= '<td class="col-1"><div class="views-field-fid">
                <span class="field-content"><div class="image-thumbnail-view ">
  <div class="image-thumbnail"><a href=../node/'. $arr[gid].'><img src="'.$img.'"></a></div></div></span></div>
<div class="views-field-title"><span class="field-content">
<a href=../node/'. $arr[gid].'>'.$arr_g['node_title'].'</a></span>
  </div></td>';
/*
         // Автор
            $output .= '<span class="submitted">' . t('автор: ') . l($arr['name'], 'user/'. $arr['uid']) .'</span><hr>';
*/ 
   }
 
      print  $output;

      }     

?>

Вот только не знаю как урлы заменить их синонимами, если кто знает подскажите из какой таблицы брать.

Аватар пользователя Arturus Arturus 26 сентября 2011 в 6:08

Корректировка кода с учетом дублирования названий файлов imagecache

<?php<div class="view-content">
<table class="views-view-grid">
    <tbody>
        <tr class="row-1 row-first row-last">
            <?php

//запрос на вывод галерей
///////////////////////////
 
$query_g "SELECT DISTINCT(node.nid) AS nid,
   node.title AS node_title
 FROM portal_node node 
 WHERE node.type in ('node_gallery_gallery')
 GROUP BY nid
  ORDER BY nid DESC limit 10"
;

   

// Спрашиваем у БД то, что сформировали
   
$result_g db_query($query_g);
 
   
// Проходимся циклом по результату
      
while ($arr_g db_fetch_array($result_g)) {

   

$gid=$arr_g['nid'];

//выводим изображения
   // тут будем всё хранить
   
$output  '';
 
   
// Формируем запрос к базе
   
$query "SELECT DISTINCT(node.nid) AS nid,
   node_galleries.fid AS fid,
   node_galleries.gid AS gid, 
  node_galleries.nid AS node_galleries_nid,
   node_revisions.timestamp AS node_revisions_timestamp,
   node_revisions.title AS title_g,
   node_files.filepath AS node_filename,
   node_users.name AS name,
   node_users.uid AS uid,
   node.title AS title
 FROM portal_node node
 INNER JOIN portal_node_galleries node_galleries ON node.nid = node_galleries.nid
 LEFT JOIN portal_node_revisions node_revisions ON node.vid = node_revisions.vid
 LEFT JOIN portal_files node_files ON node_galleries.fid = node_files.fid
 LEFT JOIN portal_users node_users ON node.uid = node_users.uid
 WHERE node.type in ('node_gallery_image') AND gid=
$gid AND  node_galleries.is_cover <> 0
   ORDER BY node_revisions_timestamp ASC limit 1"
;
 
   
// Спрашиваем у БД то, что сформировали
   
$result db_query($query);
 
   
// Проходимся циклом по результату
   // На каждую найденную строку формируем строку вывода и прибавляем её к общему результату ($output)
      
while ($arr db_fetch_array($result)) {

//картинка
//получаем реальную картинку с учетом imagecache
$img=explode("/",$arr['node_filename']);
$img='../sites/default/files/imagecache/node-gallery-thumbnail/'.$img[3];

         

// Заголовок
if ($img<>'' && $count_top<6) {
$count_top++;
     
$output .= '<td class="col-1"><div class="views-field-fid">
                <span class="field-content"><div class="image-thumbnail-view ">
  <div class="image-thumbnail"><a href=../node/'
$arr[gid].'><img src="'.$img.'"></a></div></div></span></div>
<div class="views-field-title"><span class="field-content">
<a href=../node/'
$arr[gid].'>'.$arr_g['node_title'].'</a></span>
  </div></td>'
;
}
/*
         // Автор
            $output .= '<span class="submitted">' . t('автор: ') . l($arr['name'], 'user/'. $arr['uid']) .'</span><hr>';
*/ 
   
}
 
      print  
$output;

      }     

?>
        </tr>
    </tbody>
</table>
</div>?>