0 Пользователей и 1 Гость просматривают эту тему.
  • 77 Ответов
  • 32070 Просмотров
*

beliyadm

  • Легенда
  • 9629
  • 1658 / 66
  • Севастополь == Россия
Несколько раз поднимался вопрос - как сделать несколько изображений в описании товара, причем не убогим способом, как реализовано стандартно, но иначе. Возникла необходимость, потому выложу свою модификацию.
Основная часть хака взята с форума virtuemart.ru (к сожалению что то не работает, потому не могу привести автора)
Файл shop.product_details.php, находим строку с /** AVAILABILITY **/ и перед ней добавляем следующий код:
Код
/* MORE IMAGES (Дополнительные изображения) */
$gavMore_Images = "";
$gavMore_Imagess = "";
 if( !empty($images->images) )
   {
    $gavMore_Images = "<hr /><div style=\"font-weight:bold;float:left;\">Дополнительные изображения&nbsp;</div> (нажмите, чтобы увеличить):<br />";
    $database->setQuery( "SELECT * FROM #__vm_product_files WHERE file_product_id='$product_id' AND file_is_image='1'" );
    $images = $database->loadObjectList();
    $i = 1;
    foreach( $images as $image )
     {
       $info = pathinfo( $image->file_name );
       $src = dirname($image->file_url) ."/resized/". basename($image->file_name, ".".$info["extension"])."_".PSHOP_IMG_WIDTH."x".PSHOP_IMG_HEIGHT.".".$info["extension"];
       $alt = $image->file_title;
       $height = empty($image->file_image_thumb_height) ? PSHOP_IMG_HEIGHT : $image->file_image_thumb_height;
       $width = empty($image->file_image_thumb_width) ? PSHOP_IMG_WIDTH : $image->file_image_thumb_width;
       $src_full = str_replace( $mosConfig_absolute_path, $mosConfig_live_site, $image->file_name );
       if( strstr( $src, $mosConfig_live_site.$image->file_name))
       $src_full = str_replace( $mosConfig_live_site.$image->file_name, $mosConfig_live_site."/".$image->file_name, $src_full );
       $alt_full = $image->file_title;
       $height_full = $image->file_image_height+29;
       $width_full = $image->file_image_width+34;
      $border = 1;
      $titlewsp = str_replace(".", "", basename($image->file_name));
      $title = $image->file_title;
      $gavMore_Images .= "<a href=\"javascript:doPic('$src');\" style=\"cursor:hand;cursor:pointer;\"><img src=\"$src\" width=\"$width\" border=0/></a>";     
      ++$i;
     }//end foreach
   }
  /* END MORE IMAGES (Дополнительные изображения) */
?>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
browserName = navigator.appName;
browserVer = parseInt(navigator.appVersion);

ns3up = (browserName == "Netscape" && browserVer >= 3);
ie4up = (browserName.indexOf("Microsoft") >= 0 && browserVer >= 4);

function doPic(imgName) {
if (ns3up || ie4up) {
imgOn = ("" + imgName);
document.mainpic.src = imgOn;
   }
}
//  End -->
</script>
<?php
$gavMore_Imagess .= "<img name=\"mainpic\" src=\"$imageurl\" width=\"$width_full\"  border=\"0\">";

Далее здесь же находим блок /** NOW LET'S BEGIN AND FILL THE TEMPLATE **/ и добавляем две строки:
Код
$template = str_replace( "{gavMore_Images}", $gavMore_Images, $template );
$template = str_replace( "{gavMore_Imagess}", $gavMore_Imagess, $template );
Теперь можем открыть файл flypage.php и оформить вывод наших двух заглушек, у себя сделал так:
Код
<table border="0">
<tr>
<td>{gavMore_Imagess}</td>
</tr>
<tr>
<td>{gavMore_Images}</td>
</tr>
</table>

немного комментариев:
$gavMore_Images - выведет нам из полученного массива картинки дополнительных изображений (которые управляются через добавление файлов)
$gavMore_Imagess - непосредственно изображение товара

[вложение удалено Администратором]
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb

 !!!???!!!А Вы не в курсе я вывести только 3 дополнительное изображение или только второе, т.е. конкретная задача в том чтобы в {$gavMore_Images2} вывести дополнительные изображения с первого по второе, а {$gavMore_Images3} вывести только 3.
Заранее спасибо. ;D
*

beliyadm

  • Легенда
  • 9629
  • 1658 / 66
  • Севастополь == Россия
сразу не скажу, но если поковыряться то можно и так вывести
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb

Дайте плз хотябы идею, а то ничего не получается.

Подскажите, а как данную вещь изменить для Joomla 13 и ВМРЕ 13?
Очень нужно... не работает
*

ninJo

  • Новичок
  • 4
  • 0 / 0
СУПЕР, то что надо

a это для какой джумлы?
*

beliyadm

  • Легенда
  • 9629
  • 1658 / 66
  • Севастополь == Россия
a это для какой джумлы?
к движку хак отношения не имеет, версию компонента не помню, BMPE последняя на тот момент
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

-L-

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
а можешь выложить только ту часть кода которая отвечает за вывод маленькой картинки без ссылки на большую, а то я в php не силен
*

SolopoV

  • Давно я тут
  • 548
  • 15 / 0
  • зеленею...
Несколько раз поднимался вопрос - как сделать несколько изображений в описании товара, причем не убогим способом, как реализовано стандартно, но иначе. Возникла необходимость, потому выложу свою модификацию.
Основная часть хака взята с форума virtuemart.ru (к сожалению что то не работает, потому не могу привести автора)
Файл shop.product_details.php, находим строку с /** AVAILABILITY **/ и перед ней добавляем следующий код:
Код
/* MORE IMAGES (Дополнительные изображения) */
$gavMore_Images = "";
$gavMore_Imagess = "";
 if( !empty($images->images) )
   {
    $gavMore_Images = "<hr /><div style=\"font-weight:bold;float:left;\">Дополнительные изображения&nbsp;</div> (нажмите, чтобы увеличить):<br />";
    $database->setQuery( "SELECT * FROM #__vm_product_files WHERE file_product_id='$product_id' AND file_is_image='1'" );
    $images = $database->loadObjectList();
    $i = 1;
    foreach( $images as $image )
     {
       $info = pathinfo( $image->file_name );
       $src = dirname($image->file_url) ."/resized/". basename($image->file_name, ".".$info["extension"])."_".PSHOP_IMG_WIDTH."x".PSHOP_IMG_HEIGHT.".".$info["extension"];
       $alt = $image->file_title;
       $height = empty($image->file_image_thumb_height) ? PSHOP_IMG_HEIGHT : $image->file_image_thumb_height;
       $width = empty($image->file_image_thumb_width) ? PSHOP_IMG_WIDTH : $image->file_image_thumb_width;
       $src_full = str_replace( $mosConfig_absolute_path, $mosConfig_live_site, $image->file_name );
       if( strstr( $src, $mosConfig_live_site.$image->file_name))
       $src_full = str_replace( $mosConfig_live_site.$image->file_name, $mosConfig_live_site."/".$image->file_name, $src_full );
       $alt_full = $image->file_title;
       $height_full = $image->file_image_height+29;
       $width_full = $image->file_image_width+34;
      $border = 1;
      $titlewsp = str_replace(".", "", basename($image->file_name));
      $title = $image->file_title;
      $gavMore_Images .= "<a href=\"javascript:doPic('$src');\" style=\"cursor:hand;cursor:pointer;\"><img src=\"$src\" width=\"$width\" border=0/></a>";     
      ++$i;
     }//end foreach
   }
  /* END MORE IMAGES (Дополнительные изображения) */
?>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
browserName = navigator.appName;
browserVer = parseInt(navigator.appVersion);

ns3up = (browserName == "Netscape" && browserVer >= 3);
ie4up = (browserName.indexOf("Microsoft") >= 0 && browserVer >= 4);

function doPic(imgName) {
if (ns3up || ie4up) {
imgOn = ("" + imgName);
document.mainpic.src = imgOn;
   }
}
//  End -->
</script>
<?php
$gavMore_Imagess .= "<img name=\"mainpic\" src=\"$imageurl\" width=\"$width_full\"  border=\"0\">";

Далее здесь же находим блок /** NOW LET'S BEGIN AND FILL THE TEMPLATE **/ и добавляем две строки:
Код
$template = str_replace( "{gavMore_Images}", $gavMore_Images, $template );
$template = str_replace( "{gavMore_Imagess}", $gavMore_Imagess, $template );
Теперь можем открыть файл flypage.php и оформить вывод наших двух заглушек, у себя сделал так:
Код
<table border="0">
<tr>
<td>{gavMore_Imagess}</td>
</tr>
<tr>
<td>{gavMore_Images}</td>
</tr>
</table>

немного комментариев:
$gavMore_Images - выведет нам из полученного массива картинки дополнительных изображений (которые управляются через добавление файлов)
$gavMore_Imagess - непосредственно изображение товара

Существует ли решение данного вопроса для VM версии 1.1.0 ??
*

laked

  • Новичок
  • 5
  • 0 / 0
Спасибо огромное за мудрый скрипт, но у меня версия магазина : ВМРЕ 1.0.15b Стабильный  [Голодный воробей] (если это имеет вообще значение) и благодаря твоему скрипту получается следующее, всё работает, но при нажатии на дополнительное изображение, оно открывается в большом формате, тупо растянув маленькое изображение, и всё дико пикселит. Подскажи плиз в чем заминка, почему не подгружается большая картинка, а растягивается маленькая?
*

laked

  • Новичок
  • 5
  • 0 / 0
разобралась сама поставила вместо $src_full, $src.. Только вот ещё одна заминка: когда листаешь привьюшки, пропадает gavMore_Imagess, и уже вернуть её нельзя, т.к. в привьюшках она отсутствует. Как её внести в списочек привьюшек, что бы как все просматривать и перелистывать?
*

Ole888

  • Осваиваюсь на форуме
  • 35
  • 0 / 0
а не подскажете, как сделать, что если доп. изображений нету, то чтобы  выводилось, скажем, что картинок нет..
*

oleizey

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Мучала долго, но все решила. Спасибо большое.
Но текст теперь сдвинулся вниз под все фотографии, а нужно чтобы он был справа.
Баловалась долго с colspan rowspan ничего не меняется.
Может подскажете в чем дело?  :(
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
В Опере переключение картинок не работает, только если убрать проверку браузера: if (ns3up || ie4up) { }
« Последнее редактирование: 19.11.2008, 13:42:30 от Alex Revo »
*

Yyqq

  • Новичок
  • 7
  • 2 / 0
Те кто долго мучились, но все решили, подскажите пожалуйста...
Может можно выложить уже исправленный код?
В последней версии VirtueMart не нашел в данном файле именно таких комментариев, пытался вставлял всё это куда то, но ничего так и не вышло хорошего :(
*

oleizey

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
У меня Вирт 1.0.15. для новых видимо совсем иные изменения
*

Denis E

  • Новичок
  • 7
  • 0 / 0
В Опере переключение картинок не работает, только если убрать проверку браузера: if (ns3up || ie4up) { }

Убираю проверку, перестает работать везде) кто знает как сделать чтоб в опере работало подскажите плииииз!
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Вот мой файл.

[вложение удалено Администратором]
*

Denis E

  • Новичок
  • 7
  • 0 / 0
ну с вашим файлом они у меня открываются в новом окне(картинки)... вариант переключения конечно намного интереснее, вот бы только в опере работал  >:(
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Да, я забыл просто что там с просмотром.
Я делал так чтобы они менялись в ожном окне, но там возникла сложность с возвратом основной картинки, поэтому решил оставить так.
*

Denis E

  • Новичок
  • 7
  • 0 / 0
а я основную картинку тоже в файлы прикрепил и отлично!


Не в тему:
может вы случайно знаете ещё ответ на этот вопрос http://joomlaforum.ru/index.php/topic,40768.new.html ))))
*

Denis E

  • Новичок
  • 7
  • 0 / 0
Alex Revo а может вы знаете как хотябы сделать проверку браузера, и в случае если опера чтоб открывались в окошках а не переключались?
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Покажите свой текущий код
*

Denis E

  • Новичок
  • 7
  • 0 / 0
НУ собстно вот он
Код
<?php 
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
/**
*
* @version $Id: shop.product_details.php 1188 2008-01-25 19:39:58Z soeren_nb $
* @package VirtueMart
* @subpackage html
* @copyright Copyright (C) 2004-2005 Soeren Eberhardt. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/
mm_showMyFileName( __FILE__ );

require_once(CLASSPATH . 'ps_product_files.php' );
require_once(CLASSPATH . 'ps_product.php' );
$ps_product = new ps_product;

require_once(CLASSPATH . 'ps_product_category.php' );
$ps_product_category = new ps_product_category;

require_once(CLASSPATH . 'ps_product_attribute.php' );
$ps_product_attribute = new ps_product_attribute;

require_once(CLASSPATH . 'ps_product_type.php' );
$ps_product_type = new ps_product_type;
require_once(CLASSPATH . 'ps_reviews.php' ); 

/* Flypage Parameter has old page syntax: shop.flypage
* so let's get the second part - flypage */
$flypage = mosGetParam($_REQUEST, "flypage", FLYPAGE);

$flypage = str_replace( 'shop.', '', $flypage);

$product_id = intval( mosgetparam($_REQUEST, "product_id", null) );
$product_sku = $db->getEscaped( mosgetparam($_REQUEST, "sku", '' ) );
$category_id = mosgetparam($_REQUEST, "category_id", null);
$manufacturer_id = mosgetparam($_REQUEST, "manufacturer_id", null);
$Itemid = $sess->getShopItemid();
$db_product = new ps_DB;

// Get the product info from the database
$q = "SELECT * FROM `#__{vm}_product` WHERE ";
if( !empty($product_id)) {
$q .= "`product_id`=$product_id";
}
elseif( !empty($product_sku )) {
$q .= "`product_sku`='$product_sku'";
}
else {
mosRedirect( $_SERVER['PHP_SELF']."?option=com_virtuemart&keyword=".urlencode($_SESSION['keyword'])."&category_id={$_SESSION['category_id']}&limitstart={$_SESSION['limitstart']}", $VM_LANG->_PHPSHOP_PRODUCT_NOT_FOUND );
}

if( !$perm->check("admin,storeadmin") ) {
  $q .= " AND `product_publish`='Y'";
  if( CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") {
    $q .= " AND `product_in_stock` > 0 ";
  }
}
$db_product->query( $q );

// Redirect back to Product Browse Page on Error
if( !$db_product->next_record() ) {
  $vmLogger->err( $VM_LANG->_PHPSHOP_PRODUCT_NOT_FOUND );
return;
}
if( empty($product_id)) {
$product_id = $db_product->f('product_id');
}
$product_parent_id = $db_product->f("product_parent_id");
if ($product_parent_id != 0) {
$dbp= new ps_DB;
$dbp->query("SELECT * FROM #__{vm}_product WHERE product_id='$product_parent_id'" );
$dbp->next_record();
}

// Let's have a look wether the product has images.
if( $product_parent_id != 0 ) {
  $db->query( "SELECT COUNT(file_id) AS images FROM #__{vm}_product_files WHERE file_product_id=$product_parent_id AND file_is_image=1" );
}
else {
  $db->query( "SELECT COUNT(file_id) AS images FROM #__{vm}_product_files WHERE file_product_id=$product_id AND file_is_image=1" );
}
$db->next_record();
$images = new stdClass();
$images->images = $db->f("images");

// Let's have a look wether the product has related products.
  $q = "SELECT product_sku, related_products FROM #__{vm}_product,#__{vm}_product_relations ";
  $q .= "WHERE #__{vm}_product_relations.product_id='$product_id' AND product_publish='Y' ";
  $q .= "AND FIND_IN_SET(#__{vm}_product.product_id, REPLACE(related_products, '|', ',' )) LIMIT 0, 4";
  $db->query( $q );
/*// This shows randomly selected products from the products table
  // if you don't like to set up related products for each product
  $q = "SELECT product_sku FROM #__{vm}_product ";
  $q .= "WHERE product_publish='Y' AND product_id != $product_id ";
  $q .= "ORDER BY RAND() LIMIT 0, 4";
  $db->query( $q );*/
 
  $related_product_html = "";
  if( $db->num_rows() > 0 ) {
    $related_product_html .= "<hr/>\n";
    $related_product_html .= "<h3>".$VM_LANG->_PHPSHOP_RELATED_PRODUCTS_HEADING.":</h3>\n";
    $related_product_html .= "<table width=\"100%\" align=\"center\"><tr>\n";
    while( $db->next_record() ) {
      $related_product_html .= "<td valign=\"top\">".$ps_product->product_snapshot( $db->f('product_sku') )."</td>\n";
}
    $related_product_html .= "</tr></table>\n";
  }
 
/** GET THE PRODUCT NAME **/
  $product_name = shopMakeHtmlSafe( $db_product->f("product_name") );
  if( $db_product->f("product_publish") == "N" )
    $product_name .= " (".$VM_LANG->_CMN_UNPUBLISHED.")";
  $product_description = $db_product->f("product_desc"); 
  if( (str_replace("<br />", "" , $product_description)=='') && ($product_parent_id!=0) ) {
    $product_description = $dbp->f("product_desc"); // Use product_desc from Parent Product
  }
 
/** Get the CATEGORY NAVIGATION **/
  $navigation_pathway = "";
  $navigation_childlist = "";
  $pathway_appended = false;
  if (empty($category_id))  {
    $q = "SELECT category_id FROM #__{vm}_product_category_xref WHERE product_id = '$product_id' LIMIT 0,1";
    $db->query( $q );
    $db->next_record();
    if( !$db->f("category_id") ) {
      // The Product Has no category entry and must be a Child Product
      // So let's get the Parent Product
      $q = "SELECT product_id FROM #__{vm}_product WHERE product_id = '".$db_product->f("product_parent_id")."' LIMIT 0,1";
      $db->query( $q );
      $db->next_record();
     
      $q = "SELECT category_id FROM #__{vm}_product_category_xref WHERE product_id = '".$db->f("product_id")."' LIMIT 0,1";
      $db->query( $q );
      $db->next_record();
    }
    $_GET['category_id'] = $category_id = $db->f("category_id");
  }
  $navigation_pathway .= $ps_product_category->get_navigation_list($category_id);
  $navigation_pathway .= " ".$ps_product_category->pathway_separator()." ". $product_name;

  if ($ps_product_category->has_childs($category_id) ) {
    $navigation_childlist .= $ps_product_category->get_child_list($category_id);
  }
 
  /* Set Dynamic Pathway */
    $mainframe->appendPathWay( $navigation_pathway );
 
  /* Set Dynamic Page Title */
    $mainframe->setPageTitle( html_entity_decode( substr($product_name, 0, 60 ), ENT_QUOTES ));

  /* Prepend Product Short Description Meta Tag "description" */
    $mainframe->prependMetaTag( "description", strip_tags( $db_product->f("product_s_desc")) );


/** Show an "Edit PRODUCT"-Link ***/
  if ($perm->check("admin,storeadmin")) {
    $edit_link = "<a href=\"". sefRelToAbs($mosConfig_live_site."/index2.php?page=product.product_form&next_page=shop.product_details&product_id=$product_id&option=com_virtuemart&Itemid=$Itemid")."\">
      <img src=\"images/M_images/edit.png\" width=\"16\" height=\"16\" alt=\"". $VM_LANG->_PHPSHOP_PRODUCT_FORM_EDIT_PRODUCT ."\" border=\"0\" /></a>";
  }
  else {
    $edit_link = "";
  }
 
/** LINK TO MANUFACTURER POP-UP **/
  $manufacturer_id = $ps_product->get_manufacturer_id($product_id);
  $manufacturer_name = $ps_product->get_mf_name($product_id);
  $manufacturer_link = "";
  if( $manufacturer_id && !empty($manufacturer_name) ) {
    $link = "$mosConfig_live_site/index2.php?page=shop.manufacturer_page&amp;manufacturer_id=$manufacturer_id&amp;output=lite&amp;option=com_virtuemart&amp;Itemid=".$Itemid;
$text = '( '.$manufacturer_name.' )';
    $manufacturer_link .= vmPopupLink( $link, $text );

    // Avoid JavaScript on PDF Output                           
    if( @$_REQUEST['output'] == "pdf" )
      $manufacturer_link = "<a href=\"$link\" target=\"_blank\" title=\"$text\">$text</a>";
  }
/** PRODUCT PRICE **/
  if (_SHOW_PRICES == '1') { /** Change - Begin */
    if( $db_product->f("product_unit") && VM_PRICE_SHOW_PACKAGING_PRICELABEL)
      $product_price = "<strong>". $VM_LANG->_PHPSHOP_CART_PRICE_PER_UNIT.' ('.$db_product->f("product_unit")."):</strong>";
    else /** Change - End */
      $product_price = "<strong>". $VM_LANG->_PHPSHOP_CART_PRICE. ": </strong>";
    $product_price .= $ps_product->show_price( $product_id );
  }
  else
    $product_price = "";
 
/** Change Packaging - Begin */
/** PRODUCT PACKAGING **/
if (  $db_product->f("product_packaging") ) {
        $packaging = $db_product->f("product_packaging") & 0xFFFF;
        $box = ($db_product->f("product_packaging") >> 16) & 0xFFFF;
        $product_packaging = "";
        if ( $packaging ) {
            $product_packaging .= $VM_LANG->_PHPSHOP_PRODUCT_PACKAGING1.$packaging;
            if( $box ) $product_packaging .= "<br/>";
        }
        if ( $box )
            $product_packaging .= $VM_LANG->_PHPSHOP_PRODUCT_PACKAGING2.$box;
           
        $product_packaging = str_replace("{unit}",$db_product->f("product_unit")?$db_product->f("product_unit") : $VM_LANG->_PHPSHOP_PRODUCT_FORM_UNIT_DEFAULT,$product_packaging);
    }
    else
        $product_packaging = "";
/** Change Packaging - End */

/** PRODUCT IMAGE **/
  $product_image = "";
  $full_image = $db_product->f("product_full_image");
  $full_image = $product_parent_id!=0 && !$db_product->f("product_full_image") ?
  $dbp->f("product_full_image") : $db_product->f("product_full_image"); // Change
  $product_thumb_image = $product_parent_id!=0 && !$db_product->f("product_thumb_image") ?
  $dbp->f("product_thumb_image") : $db_product->f("product_thumb_image"); // Change

  /* Wrap the Image into an URL when applicable */
  if ( $db_product->f("product_url") ) {
    $product_image = "<a href=\"". $db_product->f("product_url")."\" title=\"".$product_name."\" target=\"_blank\">";
    $product_image .= $ps_product->image_tag($full_image, "alt=\"".$product_name."\"", 0);
    $product_image .= "</a>";
  }
  /* Show the Thumbnail with a Link to the full IMAGE */
  elseif( !$db_product->f("product_url") ) {
    if( empty($full_image ) ) {
      $product_image = "<img src=\"".IMAGEURL.NO_IMAGE."\" alt=\"".$product_name."\" border=\"0\" />";
    }
    else {
      // file_exists doesn't work on remote files,
      // so returns false on remote files
      // This should fix the "Long Page generation bug"
      if( file_exists( IMAGEPATH."product/$full_image" )) {
     
        /* Get image width and height */
        if( $image_info = @getimagesize(IMAGEPATH."product/$full_image") ) {
          $width = $image_info[0] + 20;
          $height = $image_info[1] + 20;
        }
      }
      else {
        $width = 640;
        $height= 480;
      }
      if( stristr( $full_image, "http" ) ) {
        $imageurl = $full_image;
      }
      else {
        $imageurl = IMAGEURL."product/$full_image";
      }
      /* Build the "See Bigger Image" Link */
      if( @$_REQUEST['output'] != "pdf" ) {
$link = $imageurl;
$text = $ps_product->image_tag($product_thumb_image, "alt=\"".$product_name."\"", 1)."<br/>".$VM_LANG->_PHPSHOP_FLYPAGE_ENLARGE_IMAGE;
// vmPopupLink can be found in: htmlTools.class.php
$product_image = vmPopupLink( $link, $text, $width, $height );
      }
      else {
        $product_image = "<a href=\"$imageurl\" target=\"_blank\">".$ps_product->image_tag($product_thumb_image, "alt=\"".$product_name."\"", 1)."</a>";
      }
    }
  }

  /* MORE IMAGES ??? */
    $more_images = "";
  if( !empty($images->images) ) {
    /* Build the JavaScript Link */
    $more_images = "<a href=\"$mosConfig_live_site/index.php?option=com_virtuemart&page=shop.view_images&flypage=".mosGetParam($_REQUEST, 'flypage')."&product_id=$product_id&category_id=$category_id&Itemid=$Itemid\">";
    $more_images .= "<img src=\"".IMAGEURL."ps_image/more_images.png\" width=\"16\" height=\"16\" border=\"0\" alt=\"".$VM_LANG->_PHPSHOP_MORE_IMAGES ." (".$images->images.")\" />";
    $more_images .= "<br />".$VM_LANG->_PHPSHOP_MORE_IMAGES." (".$images->images.")</a>";
  }
  /* Files? */
  $file_list = ps_product_files::get_file_list( $product_id );
  /* MORE IMAGES (?????????????? ???????????) */
$gavMore_Images = "";
$gavMore_Imagess = "";
 if( !empty($images->images) )
   {
    $gavMore_Images = "<br />";
    $database->setQuery( "SELECT * FROM #__vm_product_files WHERE file_product_id='$product_id' AND file_is_image='1'" );
    $images = $database->loadObjectList();
    $i = 1;
    foreach( $images as $image )
     {
       $info = pathinfo( $image->file_name );
       $src = dirname($image->file_url) ."/resized/". basename($image->file_name, ".".$info["extension"])."_".PSHOP_IMG_WIDTH."x".PSHOP_IMG_HEIGHT.".".$info["extension"];
       $alt = $image->file_title;
       $height = empty($image->file_image_thumb_height) ? PSHOP_IMG_HEIGHT : $image->file_image_thumb_height;
       $width = empty($image->file_image_thumb_width) ? PSHOP_IMG_WIDTH : $image->file_image_thumb_width;
       $src = str_replace( $mosConfig_absolute_path, $mosConfig_live_site, $image->file_name );
       if( strstr( $src, $mosConfig_live_site.$image->file_name))
       $src_full = str_replace( $mosConfig_live_site.$image->file_name, $mosConfig_live_site."/".$image->file_name, $src_full );
       $alt_full = $image->file_title;
       $height_full = $image->file_image_height+29;
       $width_full = $image->file_image_width+34;
      $border = 1;
      $titlewsp = str_replace(".", "", basename($image->file_name));
      $title = $image->file_title;
      $gavMore_Images .= "<a href=\"javascript:doPic('$src');\" style=\"cursor:hand;cursor:pointer;padding:5px\"><img src=\"$src\" height=\"70px\" border=1/></a>";     
      ++$i;
     }//end foreach
   }
  /* END MORE IMAGES (?????????????? ???????????) */
?>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
browserName = navigator.appName;
browserVer = parseInt(navigator.appVersion);

ns3up = (browserName == "Netscape" && browserVer >= 3);
ie4up = (browserName.indexOf("Microsoft") >= 0 && browserVer >= 4);

function doPic(imgName) {
if (ns3up || ie4up) {
imgOn = ("" + imgName);
document.mainpic.src = imgOn;
   }
}
//  End -->
</script>
<?php
$gavMore_Imagess .= "<img name=\"mainpic\" src=\"$imageurl\" height=\"300px\"  border=\"0\">";
/** AVAILABILITY **/
  // This is the place where it shows:
  // Availability: 24h, In Stock: 5 etc.
  // You can make changes to this functionality in the file: classes/ps_product.php
  if( @$_REQUEST['output'] != "pdf" )
    $product_availability = $ps_product->get_availability($product_id);
   
/* SHOW RATING */
  $product_rating = "";
  if (PSHOP_ALLOW_REVIEWS == '1') {
    $product_rating = "<span class=\"contentheading\">".$VM_LANG->_PHPSHOP_CUSTOMER_RATING.":</span><br />";
    $product_rating .= ps_reviews::allvotes( $product_id );
  }

/* ADD-TO-CART */
  $addtocart = "<div>
    <form action=\"". $mm_action_url."index.php\" method=\"post\" name=\"addtocart\" id=\"addtocart\">"
          .$ps_product_attribute->list_attribute($product_id)
          // added for the advanced attribute modification
          .$ps_product_attribute->list_advanced_attribute($product_id)
          // end added for advanced attribute modification
          .$ps_product_attribute->list_custom_attribute($product_id);
          // end added for custom attribute modification
if (USE_AS_CATALOGUE != '1'
&& $product_price != ""
&& !stristr( $product_price, $VM_LANG->_PHPSHOP_PRODUCT_CALL )
&& $auth['show_prices']) {
$quantity = mosGetParam( $_REQUEST, 'quantity', 1 );
        $addtocart .= "
        <p><label for=\"quantity\" style=\"vertical-align: middle;\">".$VM_LANG->_PHPSHOP_CART_QUANTITY.":</label>
            <input type=\"text\" class=\"inputbox\" size=\"4\" id=\"quantity\" name=\"quantity\" value=\"$quantity\" style=\"vertical-align: middle;\" />&nbsp;
            <input type=\"submit\" ";
        $addtocart .= "style=\"text-align:center;background-position:bottom left;width:160px;height:35px;cursor:pointer;border:none;font-weight:bold;font-family:inherit;background: url('". IMAGEURL ."ps_image/".PSHOP_ADD_TO_CART_STYLE ."') no-repeat left center transparent;vertical-align: middle;\" ";
        $addtocart .= "value=\"".$VM_LANG->_PHPSHOP_CART_ADD_TO ."\" title=\"".$VM_LANG->_PHPSHOP_CART_ADD_TO."\" />
          </p>
      <input type=\"hidden\" name=\"flypage\" value=\"shop.$flypage\" />
      <input type=\"hidden\" name=\"page\" value=\"shop.cart\" />
      <input type=\"hidden\" name=\"manufacturer_id\" value=\"$manufacturer_id\" />
      <input type=\"hidden\" name=\"category_id\" value=\"$category_id\" />
      <input type=\"hidden\" name=\"func\" value=\"cartAdd\" />
      <input type=\"hidden\" name=\"option\" value=\"$option\" />
      <input type=\"hidden\" name=\"Itemid\" value=\"$Itemid\" />";
}
    $addtocart .= "</form>
    </div>";

/* LIST ALL REVIEWS **/
  if (PSHOP_ALLOW_REVIEWS == '1') {
      /*** Show all reviews available ***/
      $product_reviews = ps_reviews::product_reviews( $product_id );
      /*** Show a form for writing a review ***/
      $product_reviewform = ps_reviews::reviewform( $product_id );
  }
  else {
    $product_reviews = $product_reviewform = "";
  }
/* LINK TO VENDOR-INFO POP-UP **/
  $vend_id = $ps_product->get_vendor_id($product_id); 
  $vend_name = $ps_product->get_vendorname($product_id);
 
  $link = "$mosConfig_live_site/index2.php?page=shop.infopage&amp;vendor_id=$vend_id&amp;output=lite&amp;option=com_virtuemart&amp;Itemid=".$Itemid;
  $text = $VM_LANG->_PHPSHOP_VENDOR_FORM_INFO_LBL;
  $vendor_link = vmPopupLink( $link, $text );
 
  // Avoid JavaScript on PDF Output
  if( @$_REQUEST['output'] == "pdf" )
    $vendor_link = "<a href=\"$link\" target=\"_blank\" title=\"$text\">$text</a>";
 
  if ($product_parent_id!=0 && !$ps_product_type->product_in_product_type($product_id)) {
  $product_type = $ps_product_type->list_product_type($product_parent_id);
  }
  else {
$product_type = $ps_product_type->list_product_type($product_id);
  }

/**
*   Read the template file into a String variable.
*   Then replace the placeholders with HTML formatted product details
*
* function read_file( $file, $defaultfile='') ***/
$template = read_file( PAGEPATH.'templates/product_details/'.basename($flypage).'.php', PAGEPATH.'templates/product_details/flypage.php');

/** NOW LET'S BEGIN AND FILL THE TEMPLATE **/
$template = str_replace( "{gavMore_Images}", $gavMore_Images, $template );
$template = str_replace( "{gavMore_Imagess}", $gavMore_Imagess, $template );
$template = str_replace( "{navigation_pathway}", $navigation_pathway, $template );
$template = str_replace( "{navigation_childlist}", $navigation_childlist, $template );
$template = str_replace( "{product_name}", $product_name, $template );
$template = str_replace( "{product_image}", $product_image, $template );
$template = str_replace( "{full_image}", $full_image, $template ); // to display the full image on flypage
$template = str_replace( "{more_images}", $more_images, $template );
$template = str_replace( "{file_list}", $file_list, $template );
$template = str_replace( "{edit_link}", $edit_link, $template );
$template = str_replace( "{manufacturer_link}", $manufacturer_link, $template );
$template = str_replace( "{product_price}", $product_price, $template );
$template = str_replace( "{product_s_desc}", $db_product->f("product_s_desc"), $template );
$template = str_replace( "{product_description}", $product_description, $template );
$template = str_replace( "{product_weight}", $db_product->f("product_weight"), $template );
$template = str_replace( "{product_sku}", $db_product->f("product_sku"), $template );
$template = str_replace( "{addtocart}", $addtocart, $template );
$template = str_replace( "{product_reviews}", $product_reviews, $template );
$template = str_replace( "{product_reviewform}", $product_reviewform, $template );
$template = str_replace( "{product_availability}", $product_availability, $template );
$template = str_replace( "{vendor_link}", $vendor_link, $template );
$template = str_replace( "{mosConfig_live_site}", $mosConfig_live_site, $template );
$template = str_replace( "{related_products}", $related_product_html, $template );
$template = str_replace( "{product_type}", $product_type, $template ); // Changed Product Type
$template = str_replace( "{product_packaging}", $product_packaging, $template ); // Changed Packaging
$template = str_replace( "{product_width}", $db_product->f("product_width"), $template ); // ??????
$template = str_replace( "{product_height}", $db_product->f("product_height"), $template ); // ??????
$template = str_replace( "{product_length}", $db_product->f("product_length"), $template ); // ?????

/*
  Really cool regular expression that let's you easily translate the flypage
  Usage:
   {vm_lang:_PHPSHOP__PHPSHOP_ACCOUNT_TITLE}
   will print the content of $VM_LANG->_PHPSHOP_ACCOUNT_TITLE
   from the current language
*/
$template = preg_replace("/{vm_lang:([^}]*)}/ie", "\$VM_LANG->\\1", $template);

/* Finish and Print out the Page */
echo $template;

?>
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Попробуй вставить скрипт в таком варианте:
Код
<SCRIPT LANGUAGE="JavaScript">
browserName = navigator.appName;
browserVer = parseInt(navigator.appVersion);
ns3up = (browserName == "Netscape" && browserVer >= 3);
ie4up = (browserName.indexOf("Microsoft") >= 0 && browserVer >= 4);

function doPic(imgName) {
imgOn = ("" + imgName);
document.mainpic.src = imgOn;
}
</script>

Всем привет!
Все сделал так как описано в этом топике. Немного переделал под свои нужды. Все классно. Но!!!
Но качество большого изображения стало хуже. Это хорошо видно на картинках с изгибами, особенно в ИЕ (они как будто надорваны). Помогите решить эту проблему.
*

unchowam

  • Новичок
  • 7
  • 0 / 0
Если я правильно понимаю то для joomla 1.5.9 и VM 1.13 ваш код нужно вставить в файл theme.php. Не подскажите как правильно это реализовать?Я не силен в РНР ,но мне кажется что в theme.php описывается class, и там есть уже две крутых  функции: function vmlistAdditionalImages и function vmMoreImagesLink , ваш код нужно добавить как новую функцию?Или функцию vmlistAdditionalImages преоброзовать как нибудь?Или я не прав?
Помогите разобраться разобраться с этим очень прошу?



[вложение удалено Администратором]
*

kewlman

  • Захожу иногда
  • 50
  • 3 / 0
Нашел сам , кому понадобится пользуйтесь

http://forum.virtuemart.net/index.php?action=dlattach;topic=39569.0;attach=6843
просто заменить все файлы.
*

unchowam

  • Новичок
  • 7
  • 0 / 0
Нашел сам , кому понадобится пользуйтесь

http://forum.virtuemart.net/index.php?action=dlattach;topic=39569.0;attach=6843
просто заменить все файлы.

Не подскажешь где можно посмотреть как все это работает?
*

unchowam

  • Новичок
  • 7
  • 0 / 0
После просмотра сайта, и просмотра файлов темы так я и не понял в чем отличие  от темы default.Может я туплю?
Мне нужно вывести дополнительные изображения товара на одну страницу с основным  как описано в этой теме выше.
Может подскажешь как это сделать?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод товара из дочерних категорий в родительскую

Автор B0nG

Ответов: 0
Просмотров: 1033
Последний ответ 03.08.2014, 15:13:57
от B0nG
ID товара вместо cdata

Автор newsky

Ответов: 0
Просмотров: 927
Последний ответ 01.07.2014, 13:05:12
от newsky
Расширенный Ajax-поиск по характеристикам товара VirtueMart

Автор Arkadiy

Ответов: 990
Просмотров: 179006
Последний ответ 27.06.2014, 16:47:52
от DeLight
Не могу убрать форму "Задайте вопрос..." на странице товара

Автор abrodski

Ответов: 1
Просмотров: 968
Последний ответ 20.05.2014, 14:30:44
от abrodski
Свойства товара без подтягивания скидки

Автор One

Ответов: 0
Просмотров: 767
Последний ответ 13.05.2014, 16:53:53
от One