Как я отметил, если "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 будет равным названию товара (в моем случае включая артикул).