доработка Virtuemart

’tag’

Делаем умный 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: , ,
Записано в Joomla, PHP, Программирование    |    Постоянная ссылка

Делаем мета-тег description равным краткому описанию товара в Virtuemart 2.0.12f

Ноябрь 7, 2012

В Virtuemart под Joomla 1.0.15 по-умолчанию на странице подробностей товара "Краткое описание" становилось мета-тегом description. HTML-теги из описания вырезались, как и символ новой строки. В новой версии Virtuemart как видно, мета-тег description = описанию сайта, что неверно. Для того, чтобы повторяющиеся мета-описания не стали ошибками в Веб-мастерах Google и Яндекс необходимо изменить шаблон страницы товара Virtuemart.

Перезапишем следующий файл:

/components/com_virtuemart/views/productdetails/tmpl/default.php

Для этого скопируем данный файл в папку с используемым шаблоном сайта. В моем случае шаблон называется "kroko":

/templates/kroko/html/com_virtuemart/productdetails/default.php

В каждой создаваемой папке также должен быть пустой html-файл "index.html".

Открываем скопированный файл и добавляем сверху:

if ( empty( $this->product->product_s_desc ) == false ) {
	$document->setMetaData( 'description', $this->product->product_s_desc );
}

Все. Теперь достаточно задать для товара "Краткое описание" и проверить исходный код страницы. Должно быть так:

<meta name="description" content="..." />

Кстати "Краткое описание" в самом шаблоне Virtuemart (тот же файл default.php) я удалил, чтобы текст не дублировался.

Tags: , ,
Записано в Joomla, PHP, Программирование    |    Постоянная ссылка