Спрятать колонку

просмотр

Drupal. Просмотр присоединенных изображений.

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

Во многих форумах, как IPB, vB, phpBB, есть предпросмотр изображений, которые были приаттачены к посту. По умолчанию drupal не предоставляет такой возможности, однако, как всегда, можно дописать пару функций к template.php или же создать модуль. Модуль я не писал, предпочел обойтись изменениями в template.php, но, имея этот код, можно запросто переделать его в модуль.

В чем смысл функций.
Вся информация о загруженных файлах хранится в таблице {files}. Оттуда можно взять тип файла, путь и размер (если это изображение). В эту таблицу мы можем добавить еще одно поле, в котором будет хранится путь к изображению, используемому для предпросмотра. При просмотре нода мы сначала будем проверять, заполнено ли это поле, и если нет, то будем создавать файл с заранее заданными размерами.

Поехали по пунктам:
Создаем поле, будьте внимательны с префиксом для таблицы (в данном случае я сторонник править core table):

ALTER TABLE files
ADD COLUMN (thumbnail varchar(255) DEFAULT NULL);

В функцию phptemplate_preprocess_comment добавляем кусок кода:

 $cid = $vars['comment']->cid;
    $files = db_query("select f.* from {files} f, {comment_upload} up where up.cid = '$cid' and f.fid = up.fid");
    $contentFiles = getFilesPreview($files);
    if ($contentFiles <> ''){
    	$contentFiles = "<table>$contentFiles</tr></table>";
      $vars['content'] = str_replace('<table class="comment-upload-attachments">', $contentFiles . '<table class="comment-upload-attachments">', $vars['content']);
    }

аналогичный код можно добавить и в phptemplate_preporoccess_node

Функция getFilesPreview:

function getFilesPreview($files){
  $imagesPerRow = 5; -- количество изображений в строке
  $imageWidth = 150;  -- ширина превью

>> Читать далее
RSS-материал

Наверх