SiteIS

Virtuemart - мощный компонент для создания электронного магазина!

- Бесплатное решение для интернет-магазина под управлением Joomla

- Огромное количество дополнительных расширений

- Неограниченная вложенность категорий

- Возможность создания шаблонов импорта/экспорта для различных целей

Увеличение фото в модулях Virtuemart 1.1.x

Находим файл administrator/components/com_virtuemart/classes/ps_product.php, ищем там строку function product_snapshot и коментируем (или удаляем) ее. Участок кода, который нужно закоментировать, выглядит так:

function product_snapshot( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {  
	global $sess, $mm_action_url; 
	$db = new ps_DB; 
	require_once(CLASSPATH.'ps_product_category.php'); 
	$ps_product_category = new ps_product_category; 
	$q = "SELECT product_id, product_name, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'"; 
	$db->query( $q ); 

	if ($db->next_record()) { 
		$product_id = $db->f("product_id" ); 
		$tpl = new $GLOBALS['VM_THEMECLASS'](); 		 
		$cid = $ps_product_category->get_cid( $product_id );
		$tpl->set( 'product_id', $product_id); 
		$tpl->set( 'product_name', $db->f("product_name") ); 
		$tpl->set( 'show_product_name', $show_product_name ); 
		
		if ($db->f("product_parent_id")) { 
			$url = "?page=shop.product_details&category;_id=$cid&flypage;=".$this->get_flypage($db->f("product_parent_id")); 
			$url .= "&product;_id=" . $db->f("product_parent_id"); 
		} else { 
			$url = "?page=shop.product_details&category;_id=$cid&flypage;=".$this->get_flypage($db->f("product_id")); 
			$url .= "&product;_id=" . $db->f("product_id"); 
		} 
		
		$product_link = $sess->url($mm_action_url. "index.php" . $url); 
		$tpl->set( 'product_link', $product_link ); 
		$tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\""); 
		
		if (_SHOW_PRICES == '1' && $show_price) { 
			// Show price, but without "including X% tax" 
			$price = $this->show_price( $db->f("product_id"), true ); 
			$tpl->set( 'price', $price ); 
		}
		
		if (USE_AS_CATALOGUE != 1 && $show_addtocart 
				&& isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart 
				&& !$this->product_has_attributes($product_id, true) // Parent Products and Products with attributes can't be added to cart this way 
				) { 
			$url = "?page=shop.cart&func;=cartAdd&product;_id=" . $db->f("product_id"); 
			$addtocart_link = $sess->url($mm_action_url. "index.php" . $url); 
			$tpl->set( 'addtocart_link', $addtocart_link ); 
		} 
		return $tpl->fetch( 'common/productsnapshot.tpl.php'); 
	} 	 
	return '';         
}

Вместо нее вставляем следующий код:

function product_snapshot( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {  
	global $sess, $mm_action_url; 
	$db = new ps_DB; 
	require_once(CLASSPATH.'ps_product_category.php'); 
	$ps_product_category = new ps_product_category; 
	$q = "SELECT product_id, product_name, product_parent_id, product_thumb_image, product_full_image FROM #__{vm}_product WHERE product_sku='$product_sku'"; 
	$db->query( $q );
	
	if ($db->next_record()) { 
		$product_id = $db->f("product_id" ); 
		$tpl = new $GLOBALS['VM_THEMECLASS'](); 
		$cid = $ps_product_category->get_cid( $product_id ); 
		$tpl->set( 'product_id', $product_id); 
		$tpl->set( 'product_name', $db->f("product_name") ); 
		$tpl->set( 'show_product_name', $show_product_name ); 
		
		if ($db->f("product_parent_id")) { 
			$url = "?page=shop.product_details&category;_id=$cid&flypage;=".$this->get_flypage($db->f("product_parent_id")); 
			$url .= "&product;_id=" . $db->f("product_parent_id"); 
		} else { 
			$url = "?page=shop.product_details&category;_id=$cid&flypage;=".$this->get_flypage($db->f("product_id")); 
			$url .= "&product;_id=" . $db->f("product_id"); 
		} 
		
		$product_link = $sess->url($mm_action_url. "index.php" . $url); 
		$tpl->set( 'product_link', $product_link ); 
		$tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\""); 
		$tpl->set( 'product_full_image', $db->f("product_full_image"), "alt=\"".$db->f("product_name")."\""); 
		
		if (_SHOW_PRICES == '1' && $show_price) { 
			// Show price, but without "including X% tax" 
			$price = $this->show_price( $db->f("product_id"), true ); 
			$tpl->set( 'price', $price ); 
		} 
		
		if (USE_AS_CATALOGUE != 1 && $show_addtocart 
				&& isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart 
				&& !$this->product_has_attributes($product_id, true) // Parent Products and Products with attributes can't be added to cart this way 
				) { 
			$url = "?page=shop.cart&func;=cartAdd&product;_id=" . $db->f("product_id"); 
			$addtocart_link = $sess->url($mm_action_url. "index.php" . $url); 
			$tpl->set( 'addtocart_link', $addtocart_link ); 
		} 
		return $tpl->fetch( 'common/productsnapshot.tpl.php'); 
	} 
	return ''; 
}

По сути в этой функции требуется внести два изменения. В запрос к базе добавляем еще один параметр:

//Было:
$q = "SELECT product_id, product_name, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'";

//Стало:
$q = "SELECT product_id, product_name, product_parent_id, product_thumb_image, product_full_image FROM #__{vm}_product WHERE product_sku='$product_sku'";

И после следующей строки:

$tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\"");

Вставляем код:

$tpl->set( 'product_full_image', $db->f("product_full_image"), "alt=\"".$db->f("product_name")."\"");

Как поступить - искать нужные строчки, или заменить код целиком - решать Вам. Сохраняем измененный файл и закрываем его.

Теперь открываем файл components/com_virtuemart/themes/имя_шаблона/templates/common/productsnapshot.tpl.php - будем препарировать его. В самом верху находим строку:

?hp if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

Сразу же под ней вставляем следующий код:

$link = 'components/com_virtuemart/shop_image/product/'.$product_full_image; 
$text = ps_product::image_tag( $product_thumb_image, "alt=\"".$product_name."\"");

Отыскиваем и комментируем строки:

atitle="<?php echo $product_name ?>" href="/"> 
     

Вместо закомментированных строк вставляем:

echo vmCommonHTML::getLightboxImageLink( $link, $text, $product_name, $product_id );

Теперь все картинки в модулях по клику будут увеличиваться.

Автор: http://joomla-show.ru