CCK + imagefield + imagecache
Прислано: tema
вт, 25/07/2006 - 17:45
Хотелось здесь оставить комментарий, не вышло (возможно позже появятся несколько одинаковых: старая болезнь старых движков).
Короче, здесь речь шла о "безобразной работе с картинками"...
=============================================================
- SergM@drupal.org:
Неужели все терпят безобразные возможности работы с картиками.
Модуль - image явно слабоват.
image_gallery - убожество!
Кто что использует дополнительно?
Подскажите!
(---skip---)
-
kiev1
к сожалению все
я правда доработал часть флексиноды - поле image...(---skip---)
=============================================================
Мой комментарий:
С flexinode поработал недолго, ощущения тоже не из приятных, CCK не в пример удобнее, чего стоит хотя бы его widgets (правда, к сожалению, пока с документацией туго).
Так вот, недавно появилось поле image (модуль imagefield), что решает многие проблемы с картинками в Друпале. Ресайзит, скалит и кропает в этом случае не менее приятный модуль imagecache, который создает именованные наборы правил обработки картинок (последовательность операций Scale, Crop, Resize), к которым можно обращаться через URL. К результатам этих операций модуль относится как к кэшу, что позволяет сильно экономить место на превьюшках старых картинок.
Конечно, не без недостатков и просто глюков, но, надеюсь, со временем все пофиксится.
- tema's blog
- Для комментирования войдите или зарегистрируйтесь
Вот бы еще кто-нибудь объяснил, как этот imagecache прикрутить к imagefield CCK.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
- Для комментирования войдите или зарегистрируйтесь
Предположим, поле называется 'field_images' (multiple - возможно несколько картинок), namespace для превьюшек - 'thumbs'.
Для teaser:
<div class="field-images"> <?php print l("<img src="/files/imagecache/thumbs/$field_images[0]['filename'] alt=$field_images[0]['alt'] />", "node/$nid", array('title' => $field_images[0]['title']), NULL, NULL, FALSE, TRUE); ?> </div>
В данном случае ссылка ведет на ноду, содержащую поле с картинкой, а не на полноразмерную картинку. Аттрибут 'alt' цепляется к картинке, а 'title' - к ссылке.
Для body:
<div class="field-images"> <div class="field-items"> <?php foreach ((array)$field_images as $item) { ?> <div class="field-item"> <?php print l('<img src="/files/imagecache/thumbs/'. $item['filename'] .'" alt="'. $item['alt'] .'" />', $item['filepath'], array('title' => $item['title']), NULL, NULL, FALSE, TRUE); ?> </div> <?php } ?> </div> </div>
А здесь ссылка уже на полноразмерную картинку.
Все это у меня участвует в шаблоне для отдельного типа контента, пользуюсь модулем шаблонов для CCK contemplate, теоретически должно работать в файле 'node-content-имяконтента.tpl.php', но увы, не работает в файле 'field-field_имяполя.tpl.php', о чем здесь и здесь доложено тов. dopry, автору imagefield и imagecache.
Сей баг сильно осложняет разработку, ведь CCK может использовать одни и те же поля в разных типах контента, а значит логичнее написать по шаблону на каждое поле и управлять их порядком в ноде с помощью веса. При создании нового типа контента из уже имеющихся полей не потребуется делать дополнительную работу для его оформления.
Вместо этого приходится описывать каждый тип контента, в основном, методом copy/paste, это более громоздко и плохо поддается отладке.
К сожалению, тов. dopry пока что безмолвствует по данному поводу.
- Для комментирования войдите или зарегистрируйтесь
еще один. Alex, пожалуйста, разреши нам удалять свои комментарии!
- Для комментирования войдите или зарегистрируйтесь
у меня не работает этот самый imagecache
даже если писать просто в адресе
site.ru/files/imagecache/thumbs/files/pic.jpg
может нужно в .htaccess что-то дописать?
в чём может быть проблема?
- Для комментирования войдите или зарегистрируйтесь
проделал данную операцию на главной странице( т.е. теазер) вываливается вот такая ошибка:
Parse error: parse error, unexpected T_STRING in k:\home\drp.loc\www\modules\contemplate\contemplate.module(455) : eval()'d code on line 2
при заходе в статью ошибок нет, но картинки тоже нет, а только ссылка но полную картинку. где копать?
- Для комментирования войдите или зарегистрируйтесь
после того как полазил на drupal.com перепробовал все советы, ничего не помогло... но потом всё же заработало, какой-то странный глюк:( нехотелось бы чтоб он вылез при разработке, а не тестировнаие
- Для комментирования войдите или зарегистрируйтесь
Чтобы imagecache заработал, нужно добавить в .htaccess директории files
+FollowSymlinks
и закомментировать
#RewriteEngine off
Те же инструкции, что и imagefield, но почему-то автор не удосужился добавить инструкции в readme.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
- Для комментирования войдите или зарегистрируйтесь
...что dopry (аффтар imagefield и imagecache) тормознул свои разработки до тех пор, пока команда CCK наконец определится, как им дальше жить с новым ядром (v5.0).
видимо появится целый File API (не знаю когда и в какой версии Друпала).
- Для комментирования войдите или зарегистрируйтесь
Что-то у меня эта связка не работает. Делаю так, как говорят авторы, а в результате показывается полная картинка, а не превьюшка.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
- Для комментирования войдите или зарегистрируйтесь
Похоже, imagecache просто не создает превьюшки
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
- Для комментирования войдите или зарегистрируйтесь
У меня следующая фигня:
0. imagecache установлен, правило (normal) создано, .htaccess поправлен.
1. В папке files лежит файл logo_auto.gif
2. Путь /files/logo_auto.gif показывает файл
3. Путь /files/imagecache/logo_auto.gif выдаёт "Page not found" (всё правильно)
4. Путь /files/imagecache/normal/logo_auto.gif выдаёт "Page not found" со следующими сообщениями:
- The selected file could not be copied, because no file by that name exists. Please check that you supplied the correct filename.
- warning: getimagesize(files/imagecache/normal/logo_auto.gif): failed to open stream: No such file or directory in z:\home\et0\www\modules\imagecache\imagecache.module on line 139.
- warning: filesize(): Stat failed for files/imagecache/normal/logo_auto.gif (errno=2 - No such file or directory) in z:\home\et0\www\modules\imagecache\imagecache.module on line 142.
- warning: fopen(files/imagecache/normal/logo_auto.gif): failed to open stream: No such file or directory in z:\home\et0\www\includes\file.inc on line 561.
При этом, в папке files создаётся каталог imagecache\normal и создаётся(ются) фал(ы) tmplogo_autogif(_0 _1 ...).
Тесты на Денвере. Может из-за этого?
- Для комментирования войдите или зарегистрируйтесь
Вроде разобрался:
путь к картинке должен быть /files/imagecache/normal/files/logo_auto.gif, то есть:
'/files/imagecache/normal/files'. $item['filename']
или
'/files/imagecache/normal/'. $item['filepath']
Непонятно, почему у tema работает...
PS: /admin/settings: File system settings -- Public
- Для комментирования войдите или зарегистрируйтесь
Парюсь второй день.... на локальной машине imageche работает на пять....все отлично и замечательно на хостинге траблы....пишет не могу найти файло в директории. на локальной тоже было однако прописал права на tmp и files и все заработало.....на хостинге уже даже так сделал /files/imagecache/big/files поставил 777 права....все равно пресет big не отрабатывает...на tmp тоже все 777....может кто сталкивался. хостинг мастерхост.
- Для комментирования войдите или зарегистрируйтесь
А можно сжатую инструкцию по imagecache?
Я модуль проинсталировал. Захожу по /admin/settings/imagecache/ и создаю правило, например kartinka. После чего меня возращает на эту же страницу, при этом запись в БД (imagecache_action, imagecache_preset) и никаких правил вводить не дает.
Модуль upload включён. Краткие ссылки включены. Друпал v 5.1. Модуль imagecache-5.x-1.2.
- Для комментирования войдите или зарегистрируйтесь
Можете кто нить выложить сюда свой дамп imagecache_action, imagecache_preset?
- Для комментирования войдите или зарегистрируйтесь
проблема с imagecache
установил модуль
создал правило thumb для превью
установил "clean urls"
настроил .httacess
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks
при загрузке файла не создается ни папки imagecache/thumb
даже при создании таковой папки ниего не происходит
изображение загружается в files/
что сделать что бы imagecache заработал?
- Для комментирования войдите или зарегистрируйтесь
Скажите, а зачем вам imagecache? Если массовая загрузка картинок и создание превью, то модуль image с этим теперь справляется сам. Или есть в imagecache какая-то "изюминка"?
- Для комментирования войдите или зарегистрируйтесь
imagecache нужен для автоматического создания картинок с разным разрешением из одной исходной.
Чтобы превью создалось, надо к нему обратиться. Путь не помню, но что-то вроде files/imagecache/thumb/your_file.jpg.
Модуль это хорош именно в связке с CCK и imagefield
- Для комментирования войдите или зарегистрируйтесь
imagecache нужен для автоматического создания картинок с разным разрешением из одной исходной.
Но ведь и image не вручную создает разные "дериваты" от картинки - thumbnails, preview, любые свои форматы, original.
- Для комментирования войдите или зарегистрируйтесь
Как-то я этот момент пропустил. Спасибо за информацию!
- Для комментирования войдите или зарегистрируйтесь
image создает ноду для каждой картинки, что не всегда надо. А imagecache работает с imagefield, - полем для картинки ССК.
- Для комментирования войдите или зарегистрируйтесь
Ага, точно!
Я помню он мне чем-то не понравился :)
- Для комментирования войдите или зарегистрируйтесь
разобрался!
правило назвал logo1
1 директории куда будут создаваться картинки поля imagefield назвал files/logo1
2 откуда брать обработанные модулем imagecache превьюшки?
в директории files/imagecache/files/logo1/ вижу необработанные картинки
обработанные лежат в files/imagecache/logo1/files/logo1/
- Для комментирования войдите или зарегистрируйтесь
прибейте спамера ttt,allsearchx,biz пожалуйста - он во многих статьях drupal.ru прописался
- Для комментирования войдите или зарегистрируйтесь
хорошая тема, но прибейте же наконец то спамера, задрал он уже
- Для комментирования войдите или зарегистрируйтесь
Следует обратить внимание что imagecache ищет запрашиваемую катринку в корневом каталоге файловой системы друпала (Administer -> Site configuration -> File system -> File system path).
При этом он не учитывает настройку каталога куда складываются изображения для заданного поля imagefield ( Administer -> Content management -> Content types -> Ваш тип контента -> Ваше поле -> Image path).
Выход:
- Для корректной работы необходимо в настройках Шаблона контента ( Content template) использовать проверку на "заполнение" поля Image path и подставлять его в URL изображения.
- Не заполнять поле Image path, что ведёт к скоплению кучи картинок в каталоге files
- Для комментирования войдите или зарегистрируйтесь
у меня тоже не работает imagecache. ни папки не создаются ни превьюшки... пробовал и на локалке и на хосте не работает и всё тут.
можно подробно написать где и что поправить
- Для комментирования войдите или зарегистрируйтесь
2Ilja: как проверяете?
- Для комментирования войдите или зарегистрируйтесь
Что то вы народ замудрили тут совсем. Какие то пути прописывать .htaccess менять .... бррр...
Вот связка Imagefield + Imagecache + LightBox2
http://artterem.be-in.ru/projects/2007/solomennaya-krysha-i-telegi-v-res...
Все просто как раз два три.
1. Создаете новый тип материала с полем Imagefield (допустим тип image)
2. Создаете новое правило для Imagecache (допустим rule)
3. Переходите на http://ваш_сайт/admin/content/types/image/display (админ->содержание->типы материалов->ваш тип->display fields) там будет возможность выбора как показывать ваши картинки (просто превью, превью со ссылкой, как LightBox - если он установлен)
4. Теперь в шаблоне можно использовать <?php print $node->content['field_имя_поля_картинки'][0]['#value'] ?> и все будет печататься только так.
Foreach() к этому делу прикрутить я думаю не сложно.
См. файл. В моем случае тип материала "Новые проекты" а правило для imagecache называется project_gallery
- Для комментирования войдите или зарегистрируйтесь
У пробую связку Imagefield+Imagecache+Thickbox. Все работает даже без дополнительных шаблонов. И даже с views интегрируется :)
- Для комментирования войдите или зарегистрируйтесь
2Dan
в моём случае поле называется 'field_photo' , namespace для превьюшек - 'preview'.
Для teaser:
<div class="field-images"> <?php print l("<img src="/files/imagecache/preview/$field_photo[0]['filename'] alt=$field_photo[0]['alt'] />", "node/$nid", array('title' => $field_photo[0]['title']), NULL, NULL, FALSE, TRUE); ?> </div> <?php } ?>
вываливается ошибка
Parse error: syntax error, unexpected T_STRING in Z:\home\kab.info\www\modules\contemplate\contemplate.module(713) : eval()'d code on line 2
Для body:
<div class="field-images"> <div class="field-items"> <?php foreach ((array)$field_photo as $item) { ?> <div class="field-item"> <?php print l('<img src="/files/imagecache/preview/'. $item['filename'] .'" alt="'. $item['alt'] .'" />', $item['filepath'], array('title' => $item['title']), NULL, NULL, FALSE, TRUE); ?> </div> <?php } ?> </div> </div>
всё работает! превьюшки создаются в папке /files/imagecache/preview/
но что делать с кодом teaser? нужно чтобы превьюха в тизере вела на ноду...
и еще в обоих случаях альт картинки должен быть заголовком материала (title).
помогите с кодом :)
- Для комментирования войдите или зарегистрируйтесь
Thickbox - суупер просто то что нужно !!!
- Для комментирования войдите или зарегистрируйтесь
2 Ilja
Не понятно почему Вы не хотите использовать такую простую конструкцию
<?php foreach ($node->field_photo as $item) { ?> <div class="field-item"> <?php print $item['view'] ?></div> <?php } ?>
а используете это монстрообразное образование:
Система, ведь, сама может сгенерить окончательный HTML так как вы ей укажете на странице "администрирование/содержание/типы материалов/ваш материал/display fields"
- Для комментирования войдите или зарегистрируйтесь
Кроме того, я где то слышал, что функция l() перестанет работать в шестерке.
- Для комментирования войдите или зарегистрируйтесь
А куда она денется?
http://api.drupal.org/api/function/l
- Для комментирования войдите или зарегистрируйтесь
Да, ошибся немного.
Однако изменения тож конкретные. Сравните:
D5
l($text, $path, $attributes = array(), $query = NULL, $fragment = NULL, $absolute = FALSE, $html = FALSE)
D6
l($text, $path, $options = array())
- Для комментирования войдите или зарегистрируйтесь
зато короче :)
- Для комментирования войдите или зарегистрируйтесь
И выходит короче, нередко нужно просто html=true и внутри разбор аргументов проще и быстрее
- Для комментирования войдите или зарегистрируйтесь
я плохо знаю php....
вот только обрадовался и полез переносить всё на хостинг, но там опять imagecache не хочет создавать превьюшки ....
установил только
cck
date
imagecache
imagefield
thickbox
создал папку files\imagecache\prewiev права на папках 777
запускал cron
пишет set_time_limit() has been disabled for security reasons в файле /home/httpd/vhosts/сайт.ру/httpdocs/includes/common.inc в строке 1991.
может из-за этого не работать?
- Для комментирования войдите или зарегистрируйтесь
Ну не знаю.
Папки ни какие не надо создавать. Все должно само.
А строку 1991 в файле includes/common.inc надо закамментить. У вас хостер не позволяет эту операцию делать.
- Для комментирования войдите или зарегистрируйтесь
странно...
а ни где не надо поправить что нибудь (в htaccess или template.php) например ?
- Для комментирования войдите или зарегистрируйтесь
хорошо теперь когда есть LightBox2 интегрированный с ImageCache, а раньше-то его не было!
а чем LightBox2 от Thickbox отличается, можно пример?
- Для комментирования войдите или зарегистрируйтесь
Тем, что в LightBox2 можно листать стрелками клавиатуры, а в ThickBox нельзя.
- Для комментирования войдите или зарегистрируйтесь
все перепробовал, даже по инструкции переустановил http://www.drupal.ru/node/10301#comment-67490 на другой домен.... не создает превьюхи и всё тут!
в бд таблицы создает, а папки нет
может на tmp права не те?
расскажите по шагам как вы ставили imagecache, может я что то упустил.
или дело в хостинге (mchost)?
жду помощи... ;)
- Для комментирования войдите или зарегистрируйтесь
2Ilja:
у меня тоже не работает imagecache. ни папки не создаются ни превьюшки... пробовал и на локалке и на хосте не работает и всё тут.
можно подробно написать где и что поправить
Для body: ... всё работает! превьюшки создаются в папке /files/imagecache/preview/
Илья, определитесь, работает или нет :)
<?php print l("<img src="/files/imagecache/preview/$field_photo[0]['filename'] alt=$field_photo[0]['alt'] />", "node/$nid", array('title' => $field_photo[0]['title']), NULL, NULL, FALSE, TRUE); ?>
<?php } ?>
вываливается ошибка
Parse error: syntax error, unexpected T_STRING in Z:\home\kab.info\www\modules\contemplate\contemplate.module(713) : eval()'d code on line 2
Причём здесь imagecache? Это ошибка в PHP. Imagecache у Вас, судя по "всё работает", работает.
Для конектации строк используется точка: вместо
<?php print l("<img src="/files/imagecache/preview/$field_photo[0]['filename'] alt=$field_photo[0]['alt'] />", "node/$nid", array('title' => $field_photo[0]['title']), NULL, NULL, FALSE, TRUE);?>
надо так:
<?php print l("<img src=\"/files/imagecache/preview/{$field_photo[0]['filename']}\" alt=\"{$field_photo[0]['alt']}\" />", "node/$nid", array('title' => $field_photo[0]['title']), NULL, NULL, FALSE, TRUE); ?>(один из способов).
- Для комментирования войдите или зарегистрируйтесь
В предыдущем посте хотел показать как точку использовать, в процессе передумал :)
Работает или нет imagecach, проверяется очень просто:
- настраиваем imagecahe, создав своё правило, например preview;
- заливаем в каталог /files файл (file.jpg) любым доступным способом, хоть фтп (именно в files, чтоб сдругими каталогами не путаться)
- идём по адресу /files/imagecache/preview/file.jpg
Всё. Если у вас _нормальный_ хостинг, всё должно работать (под словом "нормальный я подразумеваю, что нет каких-нить ограничений, типа запрет на .htaccess или что-то вроде...)
- Для комментирования войдите или зарегистрируйтесь
2Dan, сори. это я по ходу дела писал ...
уточняю.. на локалке (Denwer3) работает, за исключением моих ошибок в написании кода, превью и папки создаются.
ставлю все тоже самое на хостинг, создаю правило в imagechace, свой тип материала, поля imagefield... в итоге загружается только оригинальная картинка в папку files, thumbs не создаются.
вот параметры
Drupal 5.6 PHP 4.4.7 База данных MySQL 4.1.20 Библиотека GD bundled (2.0.28 compatible) Библиотека Unicode PHP расширение Mbstring Веб-сервер Apache Статус обновления ядра Drupal Новая Схема базы данных Новая Файл настроек Защищен Файловая система Запись разрешена (публичный метод загрузки)
- Для комментирования войдите или зарегистрируйтесь
Меняйте хостера
- Для комментирования войдите или зарегистрируйтесь
просто большенство моих сайтов стоят на mchost'e и проблем не возникало... решил drupal освоить и в дальнейшем делать некоторые проекты на нем...
ладно буду искать отдельно подходящего под drupal хостера.
- Для комментирования войдите или зарегистрируйтесь
надо логи смотреть - может где-то warning-и вылазят и на мысль наведут
- Для комментирования войдите или зарегистрируйтесь











Комментарии