Пятница, 02 Декабрь 2011 18:46

Увеличение картинки в модулях Virtuemart

Оцените материал
(1 Голосовать)

Задача: сделать так, чтобы в модулях mod_virtuemart_randomprod, mod_virtuemart_latestprod т. п. при клике на изображение товара картинка увеличивалась, а не перебрасывала бы вас на flypage-страницу товара.

При беглом просмотре структуры дефолтного шаблона виртуемарта, становится понятно, что для этого нужно просто внедрить переменную product_full_image в файл productsnapshot.tpl.php, но если просто заменить product_link на product_full_image, то ссылка с картинки будет вести на главную страницу сайта. Подробное решение задачи под катом. Если у вас Virtuemart 2, смотрим как увеличить картинку в модулях mod_virtuemart_product компонента Virtuemart 2.

Прежде всего нам нужно внести небольшие правки в файл ps_product.php, который лежит в папке administrator/components/com_virtuemart/classes/. Необходимо найти и закомментировать функцию product_snapshot.

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

У меня эта функция расположена на 2518-й строке. Но, чтобы не запутаться, лучше найти ее в поиске по ключевой фразе function product_snapshot

Комментируем вот этот кусок кода:

Показать/скрыть php код

Посмотреть код
  1. function product_snapshot( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {
  2.  
  3.         global $sess, $mm_action_url;
  4.  
  5.         $db = new ps_DB;
  6.  
  7.         require_once(CLASSPATH.'ps_product_category.php');
  8.         $ps_product_category = new ps_product_category;
  9.  
  10.         $q = "SELECT product_id, product_name, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'";
  11.         $db->query( $q );
  12.  
  13.         if ($db->next_record()) {
  14.             $product_id = $db->f("product_id" );
  15.             $tpl = new $GLOBALS['VM_THEMECLASS']();
  16.             
  17.             $cid = $ps_product_category->get_cid( $product_id );
  18.  
  19.             $tpl->set( 'product_id', $product_id);
  20.             $tpl->set( 'product_name', $db->f("product_name") );
  21.             $tpl->set( 'show_product_name', $show_product_name );
  22.             
  23.             if ($db->f("product_parent_id")) {
  24.                 $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_parent_id"));
  25.                 $url .= "&product_id=" . $db->f("product_parent_id");
  26.             } else {
  27.                 $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_id"));
  28.                 $url .= "&product_id=" . $db->f("product_id");
  29.             }
  30.             $product_link = $sess->url($mm_action_url. "index.php" . $url);
  31.             $tpl->set( 'product_link', $product_link );
  32.             $tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\"");
  33.  
  34.             if (_SHOW_PRICES == '1' && $show_price) {
  35.                 // Show price, but without "including X% tax"
  36.                 $price = $this->show_price( $db->f("product_id"), true );
  37.                 $tpl->set( 'price', $price );
  38.             }
  39.             if (USE_AS_CATALOGUE != 1 && $show_addtocart
  40.                     && isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart
  41.                     && !$this->product_has_attributes($product_id, true) // Parent Products and Products with attributes can't be added to cart this way
  42.                     ) {
  43.                 $url = "?page=shop.cart&func=cartAdd&product_id=" . $db->f("product_id");
  44.                 $addtocart_link = $sess->url($mm_action_url. "index.php" . $url);
  45.                 $tpl->set( 'addtocart_link', $addtocart_link );
  46.             }
  47.             return $tpl->fetch( 'common/productsnapshot.tpl.php');
  48.         }
  49.         
  50.         return '';
  51.         
  52.     }

Ниже вставляем:

Показать/скрыть php код

Посмотреть код
  1. function product_snapshot( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {
  2.  
  3.         global $sess, $mm_action_url;
  4.  
  5.         $db = new ps_DB;
  6.  
  7.         require_once(CLASSPATH.'ps_product_category.php');
  8.         $ps_product_category = new ps_product_category;
  9.  
  10.         $q = "SELECT product_id, product_name, product_parent_id, product_thumb_image, product_full_image FROM #__{vm}_product WHERE product_sku='$product_sku'";
  11.         $db->query( $q );
  12.  
  13.         if ($db->next_record()) {
  14.             $product_id = $db->f("product_id" );
  15.             $tpl = new $GLOBALS['VM_THEMECLASS']();
  16.  
  17.             $cid = $ps_product_category->get_cid( $product_id );
  18.  
  19.             $tpl->set( 'product_id', $product_id);
  20.             $tpl->set( 'product_name', $db->f("product_name") );
  21.             $tpl->set( 'show_product_name', $show_product_name );
  22.  
  23.             if ($db->f("product_parent_id")) {
  24.                 $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_parent_id"));
  25.                 $url .= "&product_id=" . $db->f("product_parent_id");
  26.             } else {
  27.                 $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_id"));
  28.                 $url .= "&product_id=" . $db->f("product_id");
  29.             }
  30.             $product_link = $sess->url($mm_action_url. "index.php" . $url);
  31.             $tpl->set( 'product_link', $product_link );
  32.             $tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\"");
  33.             $tpl->set( 'product_full_image', $db->f("product_full_image"), "alt=\"".$db->f("product_name")."\"");
  34.  
  35.             if (_SHOW_PRICES == '1' && $show_price) {
  36.                 // Show price, but without "including X% tax"
  37.                 $price = $this->show_price( $db->f("product_id"), true );
  38.                 $tpl->set( 'price', $price );
  39.             }
  40.             if (USE_AS_CATALOGUE != 1 && $show_addtocart
  41.                     && isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart
  42.                     && !$this->product_has_attributes($product_id, true) // Parent Products and Products with attributes can't be added to cart this way
  43.                     ) {
  44.                 $url = "?page=shop.cart&func=cartAdd&product_id=" . $db->f("product_id");
  45.                 $addtocart_link = $sess->url($mm_action_url. "index.php" . $url);
  46.                 $tpl->set( 'addtocart_link', $addtocart_link );
  47.             }
  48.             return $tpl->fetch( 'common/productsnapshot.tpl.php');
  49.         }
  50.  
  51.         return '';
  52.  
  53.     }
 

Сохраняем и закрываем файл. Больше он нам не пригодится. Переходим к следующему этапу. Открываем тот самый productsnapshot.tpl.php. Найти его можно в папке components/com_virtuemart/themes/имя_шаблона/templates/common. Находим в нем самую верхнюю строку 

Показать/скрыть php код

Посмотреть код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

Под ней вставляем

Показать/скрыть php код

Посмотреть код
  1. $link = 'components/com_virtuemart/shop_image/product/'.$product_full_image;
  2. $text = ps_product::image_tag( $product_thumb_image, "alt=\"".$product_name."\"");

Далее находим и комментируем строки

Показать/скрыть php код

Посмотреть код
  1. <a title="<?php echo $product_name ?>" href="<?php echo $product_link ?>">
  2.     <?php
  3.         // Print the product image or the "no image available" image
  4.         echo ps_product::image_tag( $product_thumb_image, "alt=\"".$product_name."\"");
  5.     ?>
  6. </a>

И вместо них вставляем

Показать/скрыть php код

Посмотреть код
echo vmCommonHTML::getLightboxImageLink( $link, $text, $product_name, $product_id );

Если действовать предельно аккуратно и строго по инструкции, все картинки в модулях будут увеличиваться, а не переводить вас на страницу товара.

 

Прочитано 7191 раз
Твитнуть
Другие материалы в этой категории: « Шаблон корзины Virtuemart Очистка корзины Virtuemart »

Комментарии   

 
Evonne
0 #6 Evonne 20.04.2014 09:12
Hi there this is kind of of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML.
I'm starting a blog soon but have no coding experience so
I wanted to get guidance from someone with experience.
Any help would be enormously appreciated!

My site :: http://portageparkdistrict.org: http://portageparkdistrict.org
Цитировать
 
 
Rosalina
0 #5 Rosalina 17.04.2014 11:19
Good post. I certainly appreciate this site. Keep writing!



Have a look at my website http://journal-cinema.org: http://journal-cinema.org
Цитировать
 
 
Chadwick
0 #4 Chadwick 16.04.2014 12:24
Hi! I know this is kinda off topic nevertheless I'd figured I'd
ask. Would you be interested in exchanging links or maybe guest authoring a
blog article or vice-versa? My website covers a lot of the
same topics as yours and I believe we could greatly benefit from each other.
If you might be interested feel free to send me
an email. I look forward to hearing from you! Excellent blog by the way!


my web page - http://journal-cinema.org: http://journal-cinema.org
Цитировать
 
 
Prince
0 #3 Prince 16.04.2014 09:10
Having read this I believed it was very enlightening.
I appreciate you finding the time and effort to
put this short article together. I once again find myself
personally spending a significant amount of time both reading and leaving comments.
But so what, it was still worth it!

Stop by my webpage: http://iupatdc5.org: http://iupatdc5.org
Цитировать
 
 
Antonietta
0 #2 Antonietta 14.04.2014 00:44
I was suggested this blog by my cousin. I am not sure
whether this post is written by him as no one else know such detailed about
my trouble. You are amazing! Thanks!

Review my web-site http://portageparkdistrict.org/: http://portageparkdistrict.org/
Цитировать
 
 
Barry
0 #1 Barry 13.04.2014 12:21
Hi colleagues, its wonderful piece of writing about tutoringand fully defined, keep it up
all the time.

my web blog http://pdfpills.com/: http://pdfpills.com/
Цитировать
 

Добавить комментарий

Защитный код
Обновить

joomla 1.7

Не получаются доработки?

Становитесь партнером студии Millor! Быстро и недорого эти ребята помогут решить практически любую проблему.

Хотите подзаработать?

Если да, то вам сюда! Партнерская программа студии MyWebSite. Получи 20% за каждого клиента! Работаем по всей России и СНГ!

Рекламное место свободно.