|
beliyadm
|
 |
« : 02.11.2007, 11:31:40 » |
|
Несколько раз поднимался вопрос - как сделать несколько изображений в описании товара, причем не убогим способом, как реализовано стандартно, но иначе. Возникла необходимость, потому выложу свою модификацию. Основная часть хака взята с форума 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;\">Дополнительные изображения </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 - непосредственно изображение товара
|
|
|
|
|
Записан
|
|
|
|
| |
|
bulya123
Гость
|
 |
« Ответ #1 : 14.11.2007, 16:34:12 » |
|
 А Вы не в курсе я вывести только 3 дополнительное изображение или только второе, т.е. конкретная задача в том чтобы в {$gavMore_Images2} вывести дополнительные изображения с первого по второе, а {$gavMore_Images3} вывести только 3. Заранее спасибо. 
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #2 : 14.11.2007, 20:11:04 » |
|
сразу не скажу, но если поковыряться то можно и так вывести
|
|
|
|
|
Записан
|
|
|
|
|
bulya123
Гость
|
 |
« Ответ #3 : 15.11.2007, 10:48:55 » |
|
Дайте плз хотябы идею, а то ничего не получается.
|
|
|
|
|
Записан
|
|
|
|
|
Skeeter
Гость
|
 |
« Ответ #4 : 10.04.2008, 19:56:06 » |
|
Подскажите, а как данную вещь изменить для Joomla 13 и ВМРЕ 13? Очень нужно... не работает
|
|
|
|
|
Записан
|
|
|
|
ninJo
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 7
|
 |
« Ответ #5 : 14.04.2008, 19:40:33 » |
|
СУПЕР, то что надо
a это для какой джумлы?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #6 : 14.04.2008, 19:45:33 » |
|
a это для какой джумлы?
к движку хак отношения не имеет, версию компонента не помню, BMPE последняя на тот момент
|
|
|
|
|
Записан
|
|
|
|
-L-
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Пол: 
Сообщений: 38
|
 |
« Ответ #7 : 02.06.2008, 21:53:09 » |
|
а можешь выложить только ту часть кода которая отвечает за вывод маленькой картинки без ссылки на большую, а то я в php не силен
|
|
|
|
|
Записан
|
|
|
|
SolopoV
Давно я тут
  
Репутация: +7/-0
Offline
Пол: 
Сообщений: 319
зеленею...
|
 |
« Ответ #8 : 07.08.2008, 20:41:55 » |
|
Несколько раз поднимался вопрос - как сделать несколько изображений в описании товара, причем не убогим способом, как реализовано стандартно, но иначе. Возникла необходимость, потому выложу свою модификацию. Основная часть хака взята с форума 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;\">Дополнительные изображения </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
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 5
|
 |
« Ответ #9 : 15.08.2008, 19:23:26 » |
|
Спасибо огромное за мудрый скрипт, но у меня версия магазина : ВМРЕ 1.0.15b Стабильный [Голодный воробей] (если это имеет вообще значение) и благодаря твоему скрипту получается следующее, всё работает, но при нажатии на дополнительное изображение, оно открывается в большом формате, тупо растянув маленькое изображение, и всё дико пикселит. Подскажи плиз в чем заминка, почему не подгружается большая картинка, а растягивается маленькая?
|
|
|
|
|
Записан
|
|
|
|
laked
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 5
|
 |
« Ответ #10 : 15.08.2008, 20:09:39 » |
|
разобралась сама поставила вместо $src_full, $src.. Только вот ещё одна заминка: когда листаешь привьюшки, пропадает gavMore_Imagess, и уже вернуть её нельзя, т.к. в привьюшках она отсутствует. Как её внести в списочек привьюшек, что бы как все просматривать и перелистывать?
|
|
|
|
|
Записан
|
|
|
|
Ole888
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 46
|
 |
« Ответ #11 : 22.10.2008, 01:25:59 » |
|
а не подскажете, как сделать, что если доп. изображений нету, то чтобы выводилось, скажем, что картинок нет..
|
|
|
|
|
Записан
|
|
|
|
oleizey
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 22
|
 |
« Ответ #12 : 13.11.2008, 17:20:49 » |
|
Мучала долго, но все решила. Спасибо большое. Но текст теперь сдвинулся вниз под все фотографии, а нужно чтобы он был справа. Баловалась долго с colspan rowspan ничего не меняется. Может подскажете в чем дело?
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #13 : 19.11.2008, 14:35:14 » |
|
В Опере переключение картинок не работает, только если убрать проверку браузера: if (ns3up || ie4up) { }
|
|
|
|
« Последнее редактирование: 19.11.2008, 14:42:30 от Alex Revo »
|
Записан
|
|
|
|
Yyqq
Захожу иногда

Репутация: +2/-0
Offline
Сообщений: 8
|
 |
« Ответ #14 : 24.01.2009, 16:05:27 » |
|
Те кто долго мучились, но все решили, подскажите пожалуйста... Может можно выложить уже исправленный код? В последней версии VirtueMart не нашел в данном файле именно таких комментариев, пытался вставлял всё это куда то, но ничего так и не вышло хорошего 
|
|
|
|
|
Записан
|
|
|
|
oleizey
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 22
|
 |
« Ответ #15 : 08.02.2009, 23:05:48 » |
|
У меня Вирт 1.0.15. для новых видимо совсем иные изменения
|
|
|
|
|
Записан
|
|
|
|
Denis E
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 9
|
 |
« Ответ #16 : 12.02.2009, 00:52:25 » |
|
В Опере переключение картинок не работает, только если убрать проверку браузера: if (ns3up || ie4up) { }
Убираю проверку, перестает работать везде) кто знает как сделать чтоб в опере работало подскажите плииииз!
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #17 : 12.02.2009, 09:31:26 » |
|
Вот мой файл.
|
|
|
|
|
Записан
|
|
|
|
Denis E
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 9
|
 |
« Ответ #18 : 12.02.2009, 13:18:16 » |
|
ну с вашим файлом они у меня открываются в новом окне(картинки)... вариант переключения конечно намного интереснее, вот бы только в опере работал 
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #19 : 12.02.2009, 13:24:40 » |
|
Да, я забыл просто что там с просмотром. Я делал так чтобы они менялись в ожном окне, но там возникла сложность с возвратом основной картинки, поэтому решил оставить так.
|
|
|
|
|
Записан
|
|
|
|
Denis E
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 9
|
 |
« Ответ #20 : 12.02.2009, 13:31:08 » |
|
а я основную картинку тоже в файлы прикрепил и отлично!
Не в тему: может вы случайно знаете ещё ответ на этот вопрос http://joomlaforum.ru/index.php/topic,40768.new.html ))))
|
|
|
|
|
Записан
|
|
|
|
Denis E
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 9
|
 |
« Ответ #21 : 12.02.2009, 23:51:19 » |
|
Alex Revo а может вы знаете как хотябы сделать проверку браузера, и в случае если опера чтоб открывались в окошках а не переключались?
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #22 : 13.02.2009, 09:52:44 » |
|
Покажите свой текущий код
|
|
|
|
|
Записан
|
|
|
|
Denis E
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 9
|
 |
« Ответ #23 : 14.02.2009, 23:44:14 » |
|
НУ собстно вот он <?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&manufacturer_id=$manufacturer_id&output=lite&option=com_virtuemart&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;\" /> <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&vendor_id=$vend_id&output=lite&option=com_virtuemart&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
|
 |
« Ответ #24 : 16.02.2009, 11:21:21 » |
|
Попробуй вставить скрипт в таком варианте: <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>
|
|
|
|
|
Записан
|
|
|
|
|
bankir
Гость
|
 |
« Ответ #25 : 18.02.2009, 18:14:14 » |
|
Всем привет! Все сделал так как описано в этом топике. Немного переделал под свои нужды. Все классно. Но!!! Но качество большого изображения стало хуже. Это хорошо видно на картинках с изгибами, особенно в ИЕ (они как будто надорваны). Помогите решить эту проблему.
|
|
|
|
|
Записан
|
|
|
|
unchowam
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 8
|
 |
« Ответ #26 : 23.02.2009, 15:25:50 » |
|
Если я правильно понимаю то для joomla 1.5.9 и VM 1.13 ваш код нужно вставить в файл theme.php. Не подскажите как правильно это реализовать?Я не силен в РНР ,но мне кажется что в theme.php описывается class, и там есть уже две крутых функции: function vmlistAdditionalImages и function vmMoreImagesLink , ваш код нужно добавить как новую функцию?Или функцию vmlistAdditionalImages преоброзовать как нибудь?Или я не прав? Помогите разобраться разобраться с этим очень прошу?
|
|
|
|
|
Записан
|
|
|
|
kewlman
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 68
|
 |
« Ответ #27 : 23.02.2009, 15:31:39 » |
|
Нашел сам , кому понадобится пользуйтесь
http://forum.virtuemart.net/index.php?action=dlattach;topic=39569.0;attach=6843 просто заменить все файлы.
|
|
|
|
|
Записан
|
|
|
|
unchowam
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 8
|
 |
« Ответ #28 : 23.02.2009, 15:43:15 » |
|
Нашел сам , кому понадобится пользуйтесь
http://forum.virtuemart.net/index.php?action=dlattach;topic=39569.0;attach=6843 просто заменить все файлы.
Не подскажешь где можно посмотреть как все это работает?
|
|
|
|
|
Записан
|
|
|
|
unchowam
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 8
|
 |
« Ответ #29 : 23.02.2009, 16:24:58 » |
|
После просмотра сайта, и просмотра файлов темы так я и не понял в чем отличие от темы default.Может я туплю? Мне нужно вывести дополнительные изображения товара на одну страницу с основным как описано в этой теме выше. Может подскажешь как это сделать?
|
|
|
|
|
Записан
|
|
|
|
|