Здравствуйте!Чтобы в ручную не заполнять поле alt в свойствах товара VirtueMart, а автоматически подставить в данное поле наименование товара необходимо:
1) Переопределите шаблон товара (чтобы сохранились изменения после обновления), для этого скопируйте всю папку
components/com_virtuemart/views/productdetails в
templates/ваш шаблон/html/com_virtuemart/productdetails/ 2) Внутри папки
templates/ваш шаблон/html/com_virtuemart/productdetails/ в файле
default_images.php после строки
$image = $this->product->images[0]; добавьте строку
$image->file_meta = $this->product->product_name; Должно получится:if (!empty($this->product->images)) {
$image = $this->product->images[0];
$image->file_meta = $this->product->product_name;
?>UPD Если в названии товара встречаются кавычки (пример: Товар "Марка товара"), то лучше использовать код ниже (этот код очистит наименование товара от кавычек перед вставкой в alt / title / наименование товара под изображением когда оно увеличено и все будут заполнены корректно):
if (!empty($this->product->images)) {
$image = $this->product->images[0];
$productName = $this->product->product_name;
$productName = str_replace('"', '', $productName);
$image->file_meta = $productName;
?>
Если кавычки внутри Alt / Title и т.д. очень нужны то, можно заменить на код ниже, (код поменяет Товар "Марка товара" на Товар «Марка товара» и потом добавит наименование в alt / title / итд )
Код ниже чувствительный к кодировке (символы кавычек), убедитесь что файл сохранен в UTF-8if (!empty($this->product->images)) {
$image = $this->product->images[0];
$productName = $this->product->product_name;
function replaceQuotes($text) { $inQuotes = false; $result = ""; for ($i = 0; $i < strlen($text); $i++) { if ($text[$i] === '"') { if ($inQuotes) { $result .= '»'; } else { $result .= '«'; } $inQuotes = !$inQuotes; } else { $result .= $text[$i]; } } return $result; }
$productName = replaceQuotes($productName);
$image->file_meta = $productName;
?>
Данный код не только автоматически заполнит атрибут
alt у изображения, но и добавит наименование товара в атрибут
title у родительской ссылки внутри которой находится заглавное изображение товара, а также добавит строку с наименование товара под изображением когда оно увеличено.
Также, если требуется ниже можно добавить еще одну строку:
$image->file_description= $this->product->product_name; это позволит автоматически подставлять наименование товара в поле
"Название / описание изображения"Должно получится:if (!empty($this->product->images)) {
$image = $this->product->images[0];
$image->file_meta = $this->product->product_name;
$image->file_description= $this->product->product_name;
?>3) Если необходимо решить аналогичную задачу у дополнительных изображений товара, то:
внутри папки
templates/ваш шаблон/html/com_virtuemart/productdetails/ в файле
default_images_additional.php после строки
$image = $this->product->images[$i]; добавьте аналогичную строку
$image->file_meta = $this->product->product_name; Возможно кому-то пригодится
Способ проверен на
Joomla! 3.10.12 / VirtueMart 4.0.12 /