Всем знаком модуль views, позволяющий выводить нужную нам информацию. Так вот столкнулся со след проблемой - допустим есть представление, выводящее изображение из определенной ноды. Изображений для показа - 2. Как между этими двумя элементами-изображениями вставить текст?
Комментарии
сначала поле с изображением, показать первое изображение
поле текста
поле с изображением, показать одно, начиная со второго
а где эти настройки - показать первое и показать одно, начиная со второго?
скорее всего вы меня неправильно поняли, у меня есть 2 ноды, у каждой по изображению, с помощью views выводятся эти изображения, причем в случайной позиции, мне нужно между ними строчку текста вставить
Модуль Views Custom Field http://drupal.org/project/views_customfield
позволяет вставлять текстовые поля.
Давайте еще подробнее, все еще не представил, как это работает
щас постараюсь объяснить:
1. создал тип ноды "менеджер" с полем изображение
2. создал две ноды типа "менеджер", добавив на каждую ноду по изображению
3. создал представление в котором добавляю поле "содержимое:изображение" с фильтром по типу материала "менеджер"
4. кол-во элементов для показа - 2 (необходимо чтобы лишь 2 менеджера были показаны)
5. в сортировке указал чтобы порядок был произвольным, т.е. чтобы при каждой перезагрузке страницы менялся порядок менеджеров (чтобы не было так что один менеджер постоянно наверху, а другой - внизу)
6. это представление выводится в блок в виде двух изображений, между ними необходимо вставить электронный ящик, по-сути простой тект. Как его добавить туда?
Я же написал ,устанавливаешь этот модуль и вставляешь произвольные поля ,хочешь - php , хочешь - html ,хочешь простой текст.
Или почитай http://xandeadx.ru/blog/drupal/356 -там оаисано решение подобного вопроса.
Может, как вариант, создать 2 блока из views. Под первым через views_customfield добавить email
Но лучше всего вывести блок через свой модуль.
Наверное, это то, что нужно.
Я видимо плохо разбираюсь в этом модуле, но он не решает проблему, а вот ссылка на статью решает, только выскакивает ошибка:
Fatal error: Cannot use object of type view as array in Z:\home\site1\www\sites\all\themes\bluespan\template.php on line 79
на 79 строке у меня следующее:
<?php
if (!empty($vars['title'])) {
?>
а вообще вот весь код:
<?php
function bluespan_views_view_unformatted__managers_block($vars) {
$output = '';
if (!empty($vars['title'])) { //злополучная строка
$output .= '<h3>' . $vars['title'] . '</h3>';
}
foreach ($vars['rows'] as $id => $row) {
if ($id > 0 && $id % 1 == 0) {
$output .= '<a href="mailto:mail@mail.ru">mail@mail.ru</a>';
}
$output .= '<div class="' . $vars['classes_array'][$id] . '">';
$output .= $row;
$output .= '</div>';
}
return $output;
}
?>
Решение работает с views 3 только ,если views 2 ,то может и ошибка выскочить.
да, views 2
обновился до бета views 3, но ошибка всё равно возникает
"Обновляем кэш." - делал?
Или обратись к http://www.drupal.ru/username/xxandeadxx автору http://xandeadx.ru/blog/drupal/356 .
кэш обновял
сейчас обращусь
спасибо
решил следующим образом:
в папке с темой создал файл типа views-view-unformatted--[машинное имя представления].tpl.php
а в нем следующее содержание:
<?php
// $Id: views-view-unformatted.tpl.php,v 1.6 2008/10/01 20:52:11 merlinofchaos Exp $
/**
* file views-view-unformatted.tpl.php
* Default simple view template to display a list of rows.
*
* ingroup views_templates
*/
?>
<?php if (!empty($title)): ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
<!-- После первого элемента вставляем e-mail -->
<?php if ($id > 0 && $id % 1 == 0): ?>
<a id="manager_mail" href="mailto:mail@mail.ru">mail@mail.ru</a>
<?php endif; ?>
<div class="<?php print $classes[$id]; ?>">
<?php print $row; ?>
</div>
<?php endforeach; ?>
Далее необходимо зайти в представление в настройку "Тема: Информация", внизу щелкнуть по "Пересканировать файлы шаблона".
просто в поле с картинкой, поставить галкук "заменить вывод на" прописываешь само изображение из примера ниже и дальше текст.
вот
В таком случае текст выведется после каждого из 2 изображений ,а надо между первым и вторым посередине и один раз .
нет. У тебя 1 и 2-е изображение разные поля? если да, то все норм будет
1 и 2-е изображения это одно поле
так что в таком случае после каждого изображения выведется такой текст
трям-пам-пам. пересмотри скриншот.
пересмотрел, но или до меня не дошло, или ты меня неправильно понял, повторюсь, у меня с каждой ноды берется по 1 изображению, вот
А если поле-изображение выводится к примеру 5 раз ,можно ли каждое из них заключить в div с 5-ью разными id ?
а у тебя эти изображения берутся сразу с одной ноды(5 изображений) или с разных нод по одной?
с разных нод по одной - это одно поле field_image ,выводимое с 5 нод .
можно протемизировать, но случай будет работать если в представлении есть лишь одно поле-изображение, примерно так:
<?php
// $Id: views-view-unformatted.tpl.php,v 1.6 2008/10/01 20:52:11 merlinofchaos Exp $
/**
* file views-view-unformatted.tpl.php
* Default simple view template to display a list of rows.
*
* ingroup views_templates
*/
?>
<?php if (!empty($title)): ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
<div class="<?php print $classes[$id]; ?>">
<?php for($i=1; $i<=5; $i++) { ?>
<div id="rowid-<?php print $i; ?>"><?php print $row; ?></div>
<?php } ?>
</div>
<?php endforeach; ?>
если в представлении будут другие поля, то они тоже обернутся дивами с уникальным id
Но можно же остальные поля "исключить из вывода" ,а в каком то одном выбрать "заменить выводимое поле значением " и там обернуть остальные поля своими дивами .
Да, но это уже будет оборачивание остальных полей
Но если на сайте несколько представлений ,то все unformatted представления будут так темизироваться .
А views-view-unformatted-номер_представления(или машинное имя?).tpl.php будет темизировать отдельное представление или по другому будет имя файла tpl.php для отдельного представления ?
Нет, файл будет темизировать только отдельное представление, если имя файла будет выглядеть след образом:
views-view-unformatted--[машинное имя представления].tpl.php
только после создания такого файла нужно перейти в представлении в графу Тема: Информация и внизу нажать пересканировать файлы шаблона.
Лучше всего прогуглить тему по темизации во views