Куда идем?

Увеличение картинки через Lightbox в Сопутствующих товарах

  • Александр
  • Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
Больше
9 года 6 мес. назад #7251 от Александр
Здравствуйте
чтобы в Сопутствующих товарах картинка увеличивалась через Lightbox, вместо ссылки на товар, на одном из форумов предложили такое решение:
в administrator/components/com_virtuemart/classes/ps_product.php изменяем функцию product_snapshot
Code:
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 ''; }
в components/com_virtuemart/themes/default/templates/common/productsnapshot.tpl.php
в месте вывода картинки вставляем:
Code:
$link = 'components/com_virtuemart/shop_image/product/'.$product_full_image; $text = ps_product::image_tag( $product_thumb_image, "alt=\"".$product_name."\""); <?php echo vmCommonHTML::getLightboxImageLink( $link, $text, $product_name, $product_id ); ?>

Теперь в Сопутствующих товарах картинка увеличивается через Lightbox.
Если нет картинки, то выводиться заглушка noimage с не полной ссылкой до большой картинки:
Code:
<a href="/components/com_virtuemart/shop_image/product/"

в результате при клике на заглушку открывается попап окно с крутящейся гифкой

Как по условию запретить увеличивать заглушку noimage?

пытался сделать так:
Code:
<?php if(stristr($product_full_image, 'noimage') === false) { ?> <a href="<?php echo 'components/com_virtuemart/shop_image/product/'.$product_full_image ?>" rel="lightbox" title="<?php echo $product_name ?>" alt="<?php echo $product_name ?>"> <?php echo ps_product::image_tag( $product_thumb_image, 'border="0" title="'.$product_name.'" alt="'.$product_name .'"' )?> </a> <?php } else { ?> <img src="http://имясайта/components/com_virtuemart/themes/default/images/noimage.png" border="0"> <?php } ?>

в результате, все тоже самое
Пожалуйста, помогите

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
9 года 6 мес. назад #7254 от Wedal
Александр, в последнем куске примерно правильно написано. Если тоже самое, значит условие IF выполняется в любом случае. Посмотрите его внимательнее, попробуйте изменить.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

  • Александр
  • Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
Больше
9 года 6 мес. назад - 9 года 6 мес. назад #7261 от Александр
сделал так:
Code:
<?php if( !$product_full_image ) { $product_full_image = 'noimage.png'; } ?> <?php if(stristr($product_full_image, 'noimage') === false) { ?> <a href="<?php echo 'components/com_virtuemart/shop_image/product/'.$product_full_image ?>" rel="lightbox" title="<?php echo $product_name ?>" alt="<?php echo $product_name ?>"> <?php echo ps_product::image_tag( $product_thumb_image, 'border="0" title="'.$product_name.'" alt="'.$product_name .'"' )?> </a> <?php } else { ?> <?php echo ps_product::image_tag( $product_thumb_image, 'border="0" title="'.$product_name.'" alt="'.$product_name .'"' )?> <?php } ?>
картинку noimage скопировал в папку с большими картинками: components/com_virtuemart/shop_image/product/

теперь заглушки noimage не увеличиваются
Последнее редактирование: 9 года 6 мес. назад пользователем Александр.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.