Imagefield.Imagecache. Как вывести alt и title?

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

Аватар пользователя dimonatal dimonatal 9 января 2011 в 2:20

При создании ноды, загружаю картинку, обработанную imagecache.Заполняю поле 'описание',но выводиться только картинка.
Поискав по форуму нашел вот это решение [#36242][/#]..Вроде всё делаю как сказано, но появляется вот такая ошибка
warning: include(./sites/all/themes/abarre/content-field-field_page_image.tpl.php) [function.include]: failed to open stream: Permission denied in /home/www/drupal-6.20/includes/theme.inc on line 1066.
а вот код из tpl

<?php if (!$field_empty) : ?>
<div class="field field-type-<?php print $field_type_css ?> field-<?php print $field_name_css ?>">
  <?php if ($label_display == 'above') : ?>
    <div class="field-label"><?php print t($label?>:&nbsp;</div>
  <?php endif;?>
  
  <?php if ($item['data']['description']): ?>
     <div class="image-caption"><?php print $item['data']['description']; ?></div>
     <?php endif; ?>

  <div class="field-items">
    <?php $count 1;
    foreach (
$items as $delta => $item) :
      if (!
$item['empty']) : ?>
        <div class="field-item <?php print ($count 'odd' 'even'?>">
          <?php if ($label_display == 'inline') { ?>
            <div class="field-label-inline<?php print($delta '' '-first')?>">
              <?php print t($label?>:&nbsp;</div>
          <?php ?>
          <?php print $item['view'?>
        </div>
      <?php $count++;
      endif;
    endforeach;
?>
  </div>
</div>
<?php endif; ?>

что я не так делаю?я в программировании не очень..
заранее спасибо за любую помощь..

Комментарии

Аватар пользователя Nikit Nikit 9 января 2011 в 7:55

У вас что-то не так с правами, проверьте доступы.

А imagecache обычно используется так (у вас другие переменные смените на соответствующие):

print theme('imagecache', 'ИМЯ_ПРЕСЕТА', $node->field_image[0]['filepath'], $node->title, $node->title);

$node - нода, где есть поле рисунка field_image, $node->title - заголовок, соответственно alt и title рисунка станут заголовками.

Аватар пользователя dimonatal dimonatal 9 января 2011 в 15:14

Спасибо большое.
Только не совсем понял.Эту строчку кода необходимо в какой-то файл дописать?Если да то какой?
Либо заменить существующую..
Примерно такое же решение я уже находил здесь, только изменения где делать так и не понял..
Извиняюсь на нудность..Я ведь еще совсем на поверхности плаваю...
Подскажите пожалуйста..

Аватар пользователя Xermit Xermit 17 мая 2011 в 1:22

Может лучше так?

у меня как раз не выводились alt, title у картинок, которые в cck imagefield лежали, картинок в поле несколько и у каждой свой alt, title.

Картинки вывожу через linodef в сочетании с node picker

[nodepicker==node/315==Title_ссылки==[#340:field_image_cache:1,formatter="image_plain",nolink]]

получается картинка ссылка, но вот alt, title указанные для картинки не выводились

код ниже исправляет этот недостаток

в template.php

добавил кусочек который секцию $item['data'] устанавливает какую надо и все заработало.

/**
 * file
 * ImageField formatter hooks and callbacks.
 */

function ваша_тема_imagefield_formatter_image_plain($element)
{
  // Inside a view $element may contain null data. In that case, just return.
  if (empty($element['#item']['fid'])) {
    return '';
  }

  $field = content_fields($element['#field_name']);
  $item = $element['#item'];

  $data = null;
 
  if (isset($element['#node']) && isset($element['#field_name']) && isset($element['#node']->{$element['#field_name']}))
  {
    foreach($element['#node']->{$element['#field_name']} as $val)
    {
      if(isset($val['fid']) && $val['fid'] == $item['fid'])
      {
        $data = $val['data'];
        break;
      }
    }
  }

  $item['data']['alt'] = isset($item['data']['alt']) ? $item['data']['alt'] : '';
  $item['data']['title'] = isset($item['data']['title']) ? $item['data']['title'] : NULL;

  if ($data)
  {
    $item['data'] = $data;
  }

  $class = 'imagefield imagefield-'. $field['field_name'];
  return  theme('imagefield_image', $item, $item['data']['alt'], $item['data']['title'], array('class' => $class));
}

не забудьте в производительности потом кэш сбросить, чтобы темизация функции была замечена.