[Решено] Инструкция: Imagefield для картинок в тизере. Темизация...

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

Аватар пользователя Kollo_dHerbois Kollo_dHerbois 22 сентября 2010 в 9:37

Ну помучался, потыкал, поискал и решил задачу. Чтобы другие также не мучались (бл*, а ведь будут!), вот простой рецепт, совершенно пригодный для чайников - скопировал, вставил и пошел пить пиво, которое пить вредно).
Чтобы отобразить картинку, загруженную в поле imagefield твоей ноды, поместив его слева или справа от текста тизера:

0. Требуемые модули аре: имажфильден, эсеска, имажекаке, лигтбокс (при желании)

1.Открываем node.tpl.php в папке темы (шаблона) твоего сайта и в нем меняем код:

<div class="content">
<?php print $content; ?>
</div>

(удаляем этот кусок)


на этот:

<div class="content">
<?php if ($teaser == 1) {
    print '<div class="node_teaser">';
if (isset($node->field_5444[0])) {
    print '<a href="/'.$node->имятвоего_imagefield[0]['filepath'].'" rel="lightbox[имятвоего_imagefield]" class="node_image" title="'.$node->имятвоего_imagefield[0]['data']['title'].'">';
    print theme('imagecache', 'имятвоегопресетаImagecache', $node ->имятвоего_imagefield[0]['filepath']);
    print '</a>';
    }  
    print '</div>';
    }
    print $content;
?>
</div>

(вставляем этот кусок заместо удаленного)

[Это решение взято отсюда http://drupal.org/node/101748#comment-1995960 и модифицировано мной]

2.Открываем файл CSS темы твоего сайта (style.css) и вносим туда (в любо место) этот код

.node_image {
  float: left;
  margin-top: 4px;
}

а можно и такой код воткнуть

div.node_teaser {
float:left;
margin:4px;
}

без разницы.

Ну и все!

Что мы получим?

-Получим первую картинку из загруженных в поле imagefield данной ноды, размещенную слева или справа от текста тизера
-Получим возможность увеличить картинку через лайтбокс
-Получим отвращение показа остальных картинок из imagefield данной ноды - лайтбокс покажет одну (первую) картинку без листания
-Все это работает при отключенном Display для поля imagefield в тизере (если вы включите показ в тизере - будет дубль)
-можно задать отдельное поле специально для тизера "Мой тизёр" (а также "Мой тизер слева" справа снизу и т.д.) - дисплей по дефолту всегда отключен - туда вообще не лезем - и при добавлении нод просто знаем, где добавлять картинку в тизер... Для меня же главное было н е лезть в редактор каждый раз, позиционировать картинку справа и т.д.)

Если мы не хотим открывать картинку в тизере через лайтбокс, то просто удаляем rel="lightbox[имятвоего_imagefield]" из пункта 1 вышеприведенной инструхции. Можно обойтись и без пресета imagecache - тогда надо... ну все хватит - работает и достаточно! Smile
Пример как работает можно увидеть на гл. моего стр. сайта (ссылка на моем профиле)

p.s. убил три часа на поиск недостающего слеша вэтой строчке a href="/'.$node->имятвоеголяляля - из-за его отсутствия на всех сраницах кроме главное к адресу картинки добавлялся доппуть и картинка брокен...
p.p.s. "решение" записано в поваренную книгу и отправлено инопланетянам!)))

Комментарии

Аватар пользователя Kollo_dHerbois Kollo_dHerbois 22 сентября 2010 в 10:12

чтобы прописать описание и заголовок картинки в строчке

 print theme('imagecache', 'имятвоегопресетаImagecache', $node ->имятвоего_imagefield[0]['filepath']);

надо дописать значения:

print theme('imagecache', 'имятвоегопресетаImagecache', $node ->имятвоего_imagefield[0]['filepath']), $node->имятвоегопресета_imagefield[0]['data']['description'], $node->имятвоегопресета_imagefield[0]['data']['alt'], $node->имятвоегопресета_imagefield[0]['data']['title']);

Аватар пользователя run run 22 сентября 2010 в 14:39

"Kollo_dHerbois" wrote:
пошел пить пиво, которое пить вредно

Пей кoньяк (Кизлярсий).

За решение спасибо.

Аватар пользователя santer@drupal.org santer@drupal.org 30 октября 2010 в 14:57

"Kollo_dHerbois" wrote:
Требуемые модули аре: имажфильден, эсеска, имажекаке, лигтбокс

Специально так написал, чтобы в другом месте по***лись?

imagefield, cck, imagecache, lightbox.
Взялся писать - пиши нормально!

Аватар пользователя Vovovich Vovovich 11 ноября 2010 в 3:32

"Kollo_dHerbois" wrote:
if (isset($node->field_5444[0])) {

В этой строке вместо $node->field_5444[0] необходимо написать $node->имятвоего_imagefield[0]['filepath']

А так все нормуль)) За решение спасибо!