Joomla VM

’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, Программирование    |    Постоянная ссылка

Как снять товар с продажи в новом Virtuemart 2.0.12f

Ноябрь 7, 2012

Никогда бы не подумал, что это может стать проблемой. Как и в ранней версии Virtuemart установил количество товара на складе на "0", а товар остался доступен к покупке. Так как поиски я начинаю всегда с кода, то как я ни копал, данное условие не срабатывало:

$stockhandle = VmConfig::get( 'stockhandle', 'none' );
if ( ( $stockhandle == 'disableit' or $stockhandle == 'disableadd' ) and ( $this->product->product_in_stock - $this->product->product_ordered ) < 1) {
	...
}

Стал копать в Интернете и увидел рекомендацию "enable Check Stock". Ок, но это еще нужно найти в настройках Virtuemart.

Решение выглядит так:

  • переходим: Virtuemart --> Инструменты --> Панель управления --> Настройки
  • перемещаемся на вкладку "Внешний вид"
  • отмечаем в блоке "Действие при поступлении товара на склад" - "Показывать 'Известить меня' вместо кнопки 'Добавить в корзину'"

Теперь указанное условие сработает.

Tags: , ,
Записано в Joomla    |    Постоянная ссылка

Делаем мета-тег 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, Программирование    |    Постоянная ссылка

Ошибка при установке демо-данных в Virtuemart 2.0.12f

Ноябрь 5, 2012

Ошибка выглядит следующим образом:

JInstaller::install: /var/www/kroko/administrator/components/com_virtuemart/install/install_sample_data.sql Ошибка SQL Ошибка базы данных с номером 1054 
Unknown column 'product_price_vdate' in 'field list' SQL=-- -- Dumping data for table `B4kn1_virtuemart_product_prices` -- INSERT INTO `B4kn1_virtuemart_product_prices` (`virtuemart_product_price_id`, `virtuemart_product_id`, `product_price`, `override`, `product_override_price`, `product_tax_id`, `product_discount_id`, `product_currency`, `product_price_vdate`, `product_price_edate`, `virtuemart_shoppergroup_id`, `price_quantity_start`, `price_quantity_end`) VALUES (1, 5, '24.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (2, 1, '4.49000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (3, 2, '39.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (4, 3, '24.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (5, 4, '17.99000', 1, '77.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (6, 6, '4.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (7, 7, '149.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (8, 8, '220.90000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (9, 9, '48.12000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (10, 10, '74.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (11, 11, '2.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (12, 12, '14.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (13, 13, '79.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (14, 14, '49.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (15, 15, '59.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0), (16, 16, '3.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0);
SQL =
--
-- Dumping data for table `#__virtuemart_product_prices`
--

INSERT INTO `#__virtuemart_product_prices` (`virtuemart_product_price_id`, `virtuemart_product_id`, `product_price`, `override`, `product_override_price`, `product_tax_id`, `product_discount_id`, `product_currency`, `product_price_vdate`, `product_price_edate`, `virtuemart_shoppergroup_id`, `price_quantity_start`, `price_quantity_end`) VALUES
(1, 5, '24.99000', 0, '0.00000', NULL, NULL, '144', 0, 0,  NULL, 0, 0),
(2, 1, '4.49000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(3, 2, '39.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(4, 3, '24.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(5, 4, '17.99000', 1, '77.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(6, 6, '4.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(7, 7, '149.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(8, 8, '220.90000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(9, 9, '48.12000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(10, 10, '74.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(11, 11, '2.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(12, 12, '14.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(13, 13, '79.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(14, 14, '49.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(15, 15, '59.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0),
(16, 16, '3.99000', 0, '0.00000', NULL, NULL, '144', 0, 0, NULL, 0, 0);
vmError: Problems execution of SQL File /var/www/kroko/administrator/components/com_virtuemart/install/install_sample_data.sql

Будем считать, что явно что-то нехорошее. Однако, решение простое. Переходим в данную папку:

/administrator/components/com_virtuemart/install

и открываем файл: install_sample_data.sql

В файле заменяем:

  1. product_price_vdate --> to product_price_publish_up
  2. product_price_edate --> to product_price_publish_down

Сохраняем файл и:

  1. переходим Компоненты - Virtuemart - Инструменты - Панель управления - Настройки.
  2. Отмечаем "Обновление базы данных" и сохраняем изменения.
  3. переходим в "Инструменты и миграция".
  4. нажимаем "Восстановить таблицы и установить демо данные".
Видим сообщение об успешном обновлении:
Dropped virtuemart table adminmenuentries, calc_categories, calc_countries, calc_shoppergroups, calc_states, calcs, categories, categories_ru_ru, category_categories, category_medias, configs, countries, coupons, currencies, customs, invoices, manufacturer_medias, manufacturercategories, manufacturercategories_ru_ru, manufacturers, manufacturers_ru_ru, medias, migration_oldtonew_ids, modules, order_calc_rules, order_histories, order_items, order_userinfos, orders, orderstates, paymentmethod_shoppergroups, paymentmethods, paymentmethods_ru_ru, permgroups, product_categories, product_customfields, product_manufacturers, product_medias, product_prices, product_relations, product_shoppergroups, products, products_ru_ru, rating_reviews, rating_votes, ratings, shipmentmethod_shoppergroups, shipmentmethods, shipmentmethods_ru_ru, shoppergroups, states, userfield_values, userfields, userinfos, vendor_medias, vendors, vendors_ru_ru, vmuser_shoppergroups, vmusers, waitingusers, worldzones
System succesfull restored and sampledata installed, user id of the mainvendor is 990
Info: created table B4kn1_virtuemart_products_ru_ru
Info: created table B4kn1_virtuemart_vendors_ru_ru
Info: created table B4kn1_virtuemart_categories_ru_ru
Info: created table B4kn1_virtuemart_manufacturers_ru_ru
Info: created table B4kn1_virtuemart_manufacturercategories_ru_ru
Info: created table B4kn1_virtuemart_paymentmethods_ru_ru
Info: created table B4kn1_virtuemart_shipmentmethods_ru_ru
Info: Данные сохранились
Info: Данные сохранены
Info: Демо-данные установлены!
Info: Taking config from file

Ссылки по теме

Tags: ,
Записано в Joomla    |    Постоянная ссылка