Аватар пользователя B.X

Auf fuit, aut veniet...

Auf fuit, aut veniet, nihil est praesentis in illa, Morsque minus poenae quam mora mortis habet. — Смерть или была или будет, она не имеет отношения к настоящему; и менее мучительна сама смерть, чем её ожидание.

Рейтинг@Mail.ru Rambler's Top100 Каталог webplus.info Яндекс.Метрика

Сейчас на сайте 0 пользователей.

«Они считали чувство вины ошибкой, а угрызения совести — слабостью. Они всегда были практичны и никогда — сентиментальны. Но дружба их не имела границ.»

Добавить в Image Gallery переход к следующему изображению... | [Харзах]-[РУ]

Аватар пользователя B.X

Немного неудобно устроена Галерея изображений, так как нет возможности переходить к следующему или предыдущему изображению. Можно, конечно, поставить что-то более функциональное, но зачем, если модуль Галереи изображений, меня, можно сказать, во всём устраивает? В нём присутвует достаточно достоинств, чтобы попытаться его улучшить, а не удалять.

Хотя, подобная функциональность (на мой взгляд) уже давно могла бы быть включена опционально в код модуля, также как это присутствует в модуле форумов или подшивок. ещё лучше, если бы показывалось несколько изображений, по которым можно было бы переходить, тогда юзабилити было бы вообще на высоте, но, что имеем, то имеем...

Итак, находим решение для версии Друпала 5.6 (модуль Image 5.x-1.x):

<?php
/**
* Custom theme function for displaying an image node.
* Implements previous and next buttons for images grouped in a gallery.
*/
function название-темы_image_body($node$size) {
  
//find out term id the node is tagged with (gallery tid)
  
$result db_query("SELECT t.tid FROM {term_node} t WHERE t.nid = %d",$node->nid);
  
$tid db_result($result);

  
//print out image
  
$output image_display($node$size);

  
//get all images with same tid (same gallery)
  
$result db_query("SELECT n.nid FROM {term_node} t INNER JOIN {node} n ON t.nid=n.nid WHERE n.status=1 AND n.type='image' AND t.tid=%d ORDER BY n.sticky DESC, n.created DESC",$tid);

  
//compose array we need for finding out prev and next
  
$images = array();
  while (
$imageNode db_fetch_object($result)) {
      
$images[] = $imageNode->nid;
  }

  
//get array key for current node
  
$key array_search($node->nid,$images);

  
//if there is a key before this node's key, render prev
  
if(array_key_exists($key-1,$images)) {
      
$output .= '<ul class="image_nav">'."\n";
      
$output .= '    <li>'.l(t('First'),'node/'.$images[0])."</li>\n";
      
$output .= '    <li>'.l(t('Previous'),'node/'.$images[$key-1])."</li>\n";
      
$output .= "</ul>\n";

  }
  
//if there is a key after this node's key, render next
  
if(array_key_exists($key+1,$images)) {
      
$output .= '<ul class="image_nav">'."\n";
      
$output .= '    <li>'.l(t('Next'),'node/'.$images[$key+1])."</li>\n";
      
$output .= '    <li>'.l(t('Last'),'node/'.$images[count($images)-1])."</li>\n";
      
$output .= "</ul>\n";
  }

  return 
$output;
}
?>

Впишите название темы и вставьте данный код в template.php вашей темы, вот собственно и все изменения. В документах, которые находятся вашей галерее изображений появится строка с ссылками на изображения, для удобства навигации. Посмотреть как это выглядит можно, например, здесь...