Делаем умный alt у изображений в Virtuemart 2.0.12f

Ноябрь 14, 2012

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

Tags: , ,

Запись опубликована Среда, Ноябрь 14, 2012 в 17:37 и находится в Joomla, PHP, Программирование . Вы можете следить за ответами к этой записи через RSS 2.0 ленту. Вы можете оставить комментарий, или обратиться к записи со своего сайта.

16 Ответов to “ Делаем умный alt у изображений в Virtuemart 2.0.12f ”

  1. Все отлично заработало) спасибо огромное!

  2. Владислав:

    Спасибо автору. Очень пригодилось, работает!

  3. Юра:

    Спасибо, помогло!

  4. Cay:

    Это одна из мелочей для SEO, что реализовал для себя. Что не можете сделать, спрашивайте.

  5. Добрый день! Спасибо в карточке товара alt отображается красиво. А как подобную операцию проделать для модулей?
    Спасибо.

    • Cay:

      На примере:
      modules\mod_virtuemart_product\tmpl

      Надеюсь без комментариев будет понятно (все по аналогии):
      < ?php
      if ( ! empty( $product->images[ 0 ] ) ) {
      if ( empty( $product->images[ 0 ]->file_meta ) ) {
      $product->images[ 0 ]->file_meta = $product->product_name;
      }

      $image = $product->images[0]->displayMediaThumb('class="featuredProductImage" border="0"', false );
      ?>

      При добавлении изображений к товару, поля "Название изображения" и "Alt текст изображения" оставлял пустыми.

  6. nnn:

    А если название товара содержит кавычки, напр Чай "Зелёная долина" 100 г ж.б , то альт обрезается на слове с кавычками, то есть в моём случае получается alt=Чай Как этого избежать??

    • Cay:

      Самое быстрое решение, что приходит в голову - заменяем:
      $this->product->images[0]->file_meta = $this->product->product_name;

      на:
      $s_file_meta = trim( str_replace( array( '\'', '"' ), '', $this->product->product_name ) );
      $this->product->images[0]->file_meta = $s_file_meta;

      • nnn:

        Спасибо, очень важное дол дополнение получилось, так как в товарах у многих названия с кавычками

        • Cay:

          Согласен. Своим интернет-магазином сейчас уже не занимаюсь, но в свое время по SEO Virtuemart был очень сильно доработан. Будут идеи/вопросы, пишите через Контакты, буду рад ответить постом.

  7. nnn:

    Ещё вопрос - работает только с перывым изображением, с последующими - нет, остаётся так же - имя файла вместо осмысленного alt Как решить??

  8. Михаил:

    Добры день
    А как поменять Alt для доп изображении , почему то ставит название файла в тэге Alt.

  9. Павел:

    Вопрос, как поменять вывод alt в категории?

Оставить Комментарий

*