Image Field с множественным выбором: показывать только одно изображение в тизере

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

Аватар пользователя tyred tyred 4 июня 2011 в 21:21

Запись типа <?php print render($content['field_img']); ?>
в друпале 7 вызывает все прикрепленные изображения.
А как вызвать только одно изображение для анонса записи?
Интересует вопрос как вывести первое изображение, или случайное, не важно.
Заранее благодарен

Комментарии

Аватар пользователя kwas kwas 5 июня 2011 в 2:04

логика подсказывает добавить индекс:
print render($content['field_img'][0]);
по крайней мене, с единственным изображением в массиве - это прокатывает

А красные туфли сюда не катят.

Аватар пользователя Sipth Sipth 30 ноября 2015 в 0:07

Может не туда, но извините уж...
В общем есть модуль мета тег, в нем есть поле изображение в которое надо определить какой то токен для изображений.
Соответственно если определить все правильно то это изображение должно будет подставляться в тизерах размещаемых в соц сетях.
Есть токен [node:field_image] который выводит ссылки на все изображения материала через запятую. Причем это оригиналы изображений без наложенных фильтров вотермарок и уменьшений (превью)
А надо что бы какой то токен или еще что то вывело только ссылку на первую превью к данному материалу.
Помогите пожалуйста или направьте куда копать.

Аватар пользователя Sipth Sipth 1 декабря 2015 в 0:06

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

Аватар пользователя dropout dropout 1 декабря 2015 в 0:22

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

пните плиз на какие нить примеры Smile

<?php if($view_mode == 'teaser'): ?>
<!-- Тизер--Первая картинка-->
<?php print render($content['field_img'[0]]); ?>
<?php 
endif; ?>

<?php if($view_mode == 'full'): ?>
<?php 
<!--Полная нода-- скрываем первую картинку-->
hide($content['field_img'[0]]);
<!--
Полная нода--остальные  картинки-->
print 
render($content['field_img']); ?>
<?php 
endif; ?>
Аватар пользователя Sipth Sipth 7 декабря 2015 в 22:10

если я правильно понимаю то этот код можно же в шаблон запихать? или нет?
если можно то
вот так
<?php print render($content['field_img'[0]]); ?>
рушит отображение шаблона, а вот так
<?php print render($content['field_img'][0]); ?>
вообще ничего не выводит. как буд то оно пустое.
в материале картинка есть.

а, нет, выводит ошибку Notice: Undefined variable: field_img в функции include() (строка 114 в файле
что то где то еще надо прописать и определить.

После некоторого разбирательства и копания:
У меня поле field_image , а не field_img - собственно поэтому и не выводило.
Исправил, теперь выводит.
Правда выводит если в шаблоне прописать и выводит полностью код <img src= и так далее, а надо что бы выводило только ссылку.

Нашел что если использовать ['field_image'][0]['#item']['uri'] то можно получить типа путь где лежит картинка
Но она вида public://6fe01c06dd01921_0.jpg

возникает целых 2 вопроса:
1) как очистить от лишнего public://
2) как к этому всему приставить ссылку что то типа http://домен/sites/default/files/styles/medium/public/

вот так думается было бы красиво составлено

Попробовал сделать вот так

<?php print 'http://домен/sites/default/files/styles/medium/public/'?>
<?php 
print render($content['field_image'][0]['#item']['filename']); ?>

но в данном случае выводится только первая часть которая ссылка, а картинка не приставляется.
Вернулся к исходному, картинка не подгружается нормально в токен...

Еще на просторах интернета нашел вот такой код
<?php echo render(file_create_url($node->field_image['und'][0]['uri'])); ?>
но он формирует немного не такую ссылку, а вида
http://домен/sites/default/files/6fe01c06dd01921_0.jpg

и данный код в токене не формирует ссылку на изображение, а почему то делает только на домен и все.

Такое впечатление что при таком коде данные в этот токен поступают после того как загрузится страница...

Аватар пользователя multpix multpix 1 декабря 2015 в 0:29

RTFM!
На оф.стр. модулей нужно всегда обращать внимание на активность разработчика, активность использования, и конечно - на наличие документации.

Аватар пользователя Sipth Sipth 2 декабря 2015 в 23:21

и все же, можно пальцем тыкнуть? если это не подходит для использования то может есть какие то другие мысли?