Оказалось, что alt для изображения нельзя задать с помощью параметров функции displayMediaThumb

Параметр alt функция displayMediaThumb() берет из свойств объекта изображения - $product->images[0]

Поэтому нам нужно изменить свойство данного объекта file_meta таким образом:

if (!empty($product->images[0])) {
 if ( empty( $product->images[0]->file_meta ) ) {
  $product->images[0]->file_meta = htmlspecialchars($product->product_name);
 }
}

htmlspecialchars нужен для случая когда в имени товара есть кавычки.

Для Virtuemart 3 alt меняем в файле:

components/com_virtuemart/sublayouts/products.php

Стоит также проверить, действительно ли используется этот файл.. возможно в шаблоне есть переопределение подшаблонов, тогда нужно править файл

шаблон/html/sublayouts/products.php

Либо, код вообще может быть в файле

шаблон/html/com_virtuemart/category/default.php

Находим цикл по продуктам:

foreach ( $products as $product ) {

И в начале цикла добавляем приведенный выше код.

Для категорий в файл

components/com_virtuemart/sublayouts/categories.php

Добавляем примерно такой же код как и для товаров:

if (!empty($category->images[0])) {
 if ( empty( $category->images[0]->file_meta ) ) {
  $category->images[0]->file_meta = htmlspecialchars($category->category_name);
 }
}

 

Комментарии   

#4 Николай 13.02.2017 05:03
Цитирую Aleksandr:
спс, уже решил, но не в foreach ( $products as $product ) { а в ф-цию displaymediathumb... при том что у меня VM3.. cпс.

Для VM3 подходит решение. В функцию тоже хорошо, но обновление виртуемарта может затереть исправления..
#3 Aleksandr 12.02.2017 14:14
спс, уже решил, но не в foreach ( $products as $product ) { а в ф-цию displaymediathu mb... при том что у меня VM3.. cпс.
#2 Николай 12.02.2017 11:23
Цитирую Aleksandr:
не работает, вставил как и написано в начало цикла:
foreach ( $products as $product ) {
if (!empty($product->images[0])) {
if ( empty( $product->images[0]->file_meta ) ) {
$product->images[0]->file_meta = htmlspecialchars($product->product_name);
}
}....

Здравствуйте! Недавно вставлял код, работает. Но может быть особенность шаблона, например, не используется подшаблон sublayouts/prod ucts.php или в шаблоне есть переопределение подшаблонов в папке html шаблона - шаблон/html/sublayouts/prod ucts.php. В моем случае цикл по товарам находился в файле шаблон\html\com_virtuemart\category\default.php
Попробуйте поискать эти файлы, возможно, тот файл, где вы меняли не используется..
#1 Aleksandr 08.02.2017 22:55
не работает, вставил как и написано в начало цикла:
foreach ( $products as $product ) {
if (!empty($produc t->images[0])) {
if ( empty( $product->image s[0]->file_meta ) ) {
$product->image s[0]->file_meta = htmlspecialchar s($product->pro duct_name);
}
}....

Чтобы сделать комментарий, нужно авторизоваться на сайте!