Вопрос в следующем. Стандартно каталог выводит альт для изображений так:
для изображений teaserimage - это имя объекта
для изображений gallery - имя файла-картинки ( вообще непонятно зачем так сделано)
Вывод переменной для teaserimage находится по адресу components/com_zoo/views/element/tmpl/image.php
в строке
<img src="<?php echo JRoute::_($link); ?>" title="<?php echo $title; ?>" alt="<?php echo $title; ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
Переменная $title объявляется по адресу components/com_zoo/views/item/view.html.php
в коде
$title = $item->name;
$menus = &JSite::getMenu();
$menu = $menus->getActive();
if ($menu) {
$menu_params = new JParameter($menu->params);
if ($menu_params->get('page_title')) {
$title = $menu_params->get('page_title');
}
}
и дальше есть еще кусок кода, но там я думаю она просто фигурирует
// set metadata
$document->setTitle($title);
if ($item->metadesc) $document->setDescription($item->metadesc);
if ($item->metakey) $document->setMetadata('keywords', $item->metakey);
if ($mainframe->getCfg('MetaTitle')) $document->setMetadata('title', $item->name);
if ($mainframe->getCfg('MetaAuthor')) $document->setMetadata('author', $item->author);
$metadata = new JParameter($item->metadata);
foreach ($metadata->toArray() as $tag => $value) {
if ($value) $document->setMetadata($tag, $value);
}
Но, если временно удалить эти куски кода, то alt для изображений не меняется и не пропадает - выводится как и раньше.
Кто знает, где определяется переменная для вывода альта для изображений? Собственно, это нужно для того чтобы в альт запихивать metadesc объекта. ( для яндекс-картинок)
Заранее спасибо!
Итак, решение нашел самостоятельно и делюсь имcomponents/com_zoo/views/element/tmpl/image.php
в строке
<img src="<?php echo JRoute::_($link); ?>" title="<?php echo $title; ?>" alt="<?php echo $title; ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
там где alt="<?php echo $title; ?>" меняем $title например на $altimage
Далее в файле administrator/components/com_zoo/elements/image/image.php
там добавляем то что выделено красным цветом
// init vars
$params =& $this->getParams();
$title = $params->get('title', $this->_item->name);
$altimage = $params->get('altimage', $this->_item->metadesc); $width = $params->get('width', 0);
$height = $params->get('height', 0);
$link = trim($this->directory, '/').'/'.$this->file;
// render layout
if ($layout = $this->getLayout()) {
return Element::renderLayout($layout, array('file' => $this->file, 'title' => $title,
'altimage' => $altimage, 'link' => $link, 'width' => $width, 'height' => $height));
вместо
metadesc делаете выборку оттуда, откуда вам нужно чтобы был текст для alt изображения.
Пока я сделал это для teaserimage, для галери ищу решение.