Как я отметил, если "Alt текст изображения" в товаре для изображения не задается, то за описание видимо берется имя файла. К примеру:
- название файла:
paljto-s-shirokim-vorotnikom-na-pugovicakh-c02011.jpg
- атрибут alt:
paljto-s-shirokim-vorotnikom-na-pugovicakh-c02011
Идея понятна, таким alt быть не должен. Я считаю, если alt не задан, то он должен быть равным "названию товара + артикул" (у меня на сайте по-умолчанию артикул включен в название товара).
Virtuemart в функции displayMediaThumb() использует следующий алгоритм:
if(empty($this->file_meta)){
if(!empty($this->file_description)){
$file_alt = $this->file_description;
} else if(!empty($this->file_name)) {
$file_alt = $this->file_name;
} else {
$file_alt = '';
}
} else {
$file_alt = $this->file_meta;
}
В случае заданного "Alt текст изображения", значение хранится в переменной $this->file_meta
. В ином случае в переменную попадает описание (file_description
) или название файла (file_name
). Я не стал разбираться что есть описание файла, поэтому к делу.
Сделаем пустой alt равным "названию товара + артикул". В примере перезапишем шаблон страницы товара. Точнее его подшаблон для отображения изображений по товару.
Переместим данный файл:
/components/com_virtuemart/views/productdetails/tmpl/default_images.php
в папку с используемым шаблоном:
/templates/kroko/html/com_virtuemart/productdetails/
Открываем файл на редактирование и заменяем:
// Product Main Image
if (!empty($this->product->images[0])) {
на:
// Product Main Image
if (!empty($this->product->images[0])) {
if ( empty( $this->product->images[0]->file_meta ) ) {
$this->product->images[0]->file_meta = $this->product->product_name;
}
Теперь при вызове функции displayMediaThumb()
атрибут alt будет равным названию товара (в моем случае включая артикул).