Уважаемые, подскажите, как с помощью views задавать размер выводимого изображения добавленного в галерею Node Gallery?
У меня получается вывести только одним размером, заданным в настройках модуля Node Gallery. А мне надо чтобы в материале изображение выводились крупно, а в блоках через views мелко.
Комментарии
imagecache
imagecache у меня стоит и настроен, создаются 3 варианта размера изображения. Вопрос как задавать показ этих вариантов во views ?
Ничего не найдя сделал через сниппеты
<?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 .= '<span class="submitted">' . t('автор: ') . l($arr['name'], 'user/'. $arr['uid']) .'</span><hr>';
}
print $output;
?>
понимаю, что это не самое удобное решение, но другого для себя не нашел. Вопрос остается открытым.
в настройках views можно же выбирать, какой использовать пресет imagecache при выводе изображений.
Для Node Gallery такого нет, там используется только один, заданный в настройках Node Gallery.
Если я ошибаюсь, подскажите где искать, желательно скриншот
Вывод галерей с названиями и топовыми изображениями
<?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;
}
?>
Вот только не знаю как урлы заменить их синонимами, если кто знает подскажите из какой таблицы брать.
Корректировка кода с учетом дублирования названий файлов imagecache
<?php<div class="view-content">
// Спрашиваем у БД то, что сформировали
$gid=$arr_g['nid']; //выводим изображения
// Заголовок
<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)) {
// тут будем всё хранить
$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>?>