LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
13.02.2012, 06:18:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: 1 2 [3]  Все   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Как на изображение товара поставить картинку 'Новинка', 'Хит' или 'Лидер продаж'  (Прочитано 11651 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Stim_ka
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Пол: Женский
Сообщений: 37



« : 03.08.2010, 12:50:19 »

Собирательный способ на основе тем http://joomlaforum.ru/index.php/topic,7210.0.html и http://joomlaforum.ru/index.php/topic,7210.0.html

Задача: автоматом ставить картинки "Новинка" на картинки товаров, которые были добавлены в течение последних 2 недель;
и поставить картинки "Лидер продаж" тем товарам, которые отмечены как "специальное предложение"

Решение:

1. Открываем administrator\components\com_virtuemart\html\shop.browse.php примерно после этого участка кода
Код:
$product_name = $db_browse->f("product_name");
if( $db_browse->f("product_publish") == "N" ) {
$product_name .= " (".vmHtmlEntityDecode(_CMN_UNPUBLISHED).")";
}
Вставляем этот код :
Код:
// Check for new product wher $db_product query is "SELECT * FROM #__{vm}_product WHERE
// product_id='$product_id' "
if ((time() - $db_browse->f("cdate")) < (14 * 86400)) { // 14 Days *  (number of seconds in  24 hours)
    //$new_img = "New Item"; // code required for new tag - text only version
    $new_img = '<div style="position: absolute; right: 0px; top: 0;"><img src="'. $mosConfig_live_site .'/images/stories/labels_product/new_img.png" border="0" alt="Новинка" title="Новинка" align="right"></div>'; // code required for new tag
} else {
    $new_img = "";
}

if( $db_browse->f("product_special") == "Y" ) {
    $leader_img = '<div style="position: absolute; right: 0px; bottom: 0;"><img src="'. $mosConfig_live_site .'/images/stories/labels_product/leader_img.png" border="0" alt="Лидер продаж" title="Лидер продаж" align="right"></div>'; // code required for new tag
} else {
    $leader_img = "";
}
Затем в этом же файле немного ниже, после секции
      
Код:
$products[$i]['cdate'] = $VM_LANG->convert( vmFormatDate($db_browse->f("cdate"), $VM_LANG->_('DATE_FORMAT_LC') ));
$products[$i]['mdate'] = $VM_LANG->convert( vmFormatDate($db_browse->f("mdate"), $VM_LANG->_('DATE_FORMAT_LC') ));
$products[$i]['product_url'] = $db_browse->f("product_url");    
         
Добавляем вот это
      
Код:
$products[$i]['new_img'] = $new_img ;
$products[$i]['leader_img'] = $leader_img;


2. В administrator\components\com_virtuemart\html\shop_browse_queries.php
вместо
Код:
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`#__{vm}_category`.`category_id`,
`#__{vm}_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`, `product_url`,
`product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`";
Вставить вот это:
Код:
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`#__{vm}_category`.`category_id`,
`#__{vm}_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_special`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`, `product_url`,
`product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`";


3. Идем дальше в /administrator/components/com_virtuemart/html/shop.product_details.php
Открываем ,строка примерно  253 где то  преред таким кодом;
Код:
/* MORE IMAGES ? */
    $more_images = "";
  if( !empty($images->images) ) {
Вставляем это:
Код:
// Check for new product wher $db_product query is "SELECT * FROM #__{vm}_product WHERE
// product_id='$product_id' "
if ((time() - $db_product->f("cdate")) < (14 * 86400)) { // 14 Days *  (number of seconds in  24 hours)
    //$new_img = "New Item"; // code required for new tag - text only version
    $new_img_fly = '<div style="position: absolute; right: 0px; top: 0;"><img src="'. $mosConfig_live_site .'/images/stories/labels_product/new_img_fly.png" border="0" alt="Новинка" title="Новинка" align="right"></div>'; // code required for new tag
} else {
    $new_img_fly = "";
}

if( $db_product->f("product_special") == "Y" ) {
    $leader_img_fly = '<div style="position: absolute; right: 0px; bottom: 0;"><img src="'. $mosConfig_live_site .'/images/stories/labels_product/leader_img_fly.png" border="0" alt="Лидер продаж" title="Лидер продаж" align="right"></div>'; // code required for new tag
} else {
    $leader_img_fly = "";
}

Затем ищем такой участок кода
Код:
$tpl->set( "related_products", $related_products );
$tpl->set( "vendor_link", $vendor_link );
$tpl->set( "product_type", $product_type ); // Changed Product Type
$tpl->set( "product_packaging", $product_packaging ); // Changed Packaging
$tpl->set( "ask_seller_href", $ask_seller_href ); // Product Enquiry!
$tpl->set( "ask_seller_text", $ask_seller_text ); // Product Enquiry!
$tpl->set( "ask_seller", $ask_seller ); // Product Enquiry!
$tpl->set( "recent_products", $recent_products); // Recent products
И добавляем после него
Код:
$tpl->set( "new_img_fly", $new_img_fly); // новинка!
$tpl->set( "leader_img_fly", $leader_img_fly); // Лидер продаж


4. Не забываем про сами картинки, они лежат в:
 images/stories/labels_product
new_img.png – картинка «новинка» для категории
leader_img.png – картинка «Лидер продаж» для категории
new_img_fly.png – картинка «новинка» для карточки товара
leader_img_fly.png - картинка «Лидер продаж» для карточки товара


5. для вывода в категории идем в components\com_virtuemart\themes\default_my\templates\browse\browse_1.php (или тот, который используется у вас)
и после
Код:
<a href="<?php echo $product_full_image ?>" target="_blank" title="<?php echo $product_name ?>">
           <?php echo ps_product::image_tag( $product_thumb_image, 'class="browseProductImage" border="0" title="'.$product_name.'" alt="'.$product_name .'"' )?>
           </a>
Добавляем
Код:
<?php echo $new_img ?>
<?php echo $leader_img ?>


6. для вывода в карточке товара идем в components\com_virtuemart\themes\default_my\templates\product_details\flypage.tpl.php (или тот, который используется у вас)
и после
Код:
<?php echo $product_image ?>
Добавляем
Код:
<?php echo $new_img_fly ?>
<?php echo $leader_img_fly ?>


Вроде все.
« Последнее редактирование: 04.08.2010, 11:12:55 от beagler » Записан
 
Abitatel
Осваиваюсь на форуме
***

Репутация: +9/-0
Offline Offline

Сообщений: 63


« Ответ #61 : 13.07.2011, 00:08:55 »

))) Спасибо! Начитался...)) Не понимаю откуда берется id именно блока с фоткой, ни id ни class

фото
Исходник

О каком id и class речь? В вашем скрине и исходнике не вижу ни id ни class на блоке с фото.
Записан
chakivetal
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 36


Самомученик


« Ответ #62 : 13.07.2011, 01:22:40 »

Цитировать
О каком id ..?
Как я понял в CSS надо прописать
зеленый блок -
#new_label,
#leader_label {
position: absolute;....

красный блок -
#? (Об этом id){
position: relative;....

И вопрос - что делать с position в синем? Убрать совсем, оставить relative или изменить на absolute?
Записан
Abitatel
Осваиваюсь на форуме
***

Репутация: +9/-0
Offline Offline

Сообщений: 63


« Ответ #63 : 13.07.2011, 01:40:38 »

Ну так прописывайте в нужные блоки в шаблонах нужные id или class, а потом прописывайте для них стили. В чем проблема? Position для синего блока неважен. Важно соблюсти "правило" - (у внешнего relative у внутреннего - absolute) - непосредственно для блока картинки (absolute) и того блока, внутри которого помещена картинка (relative).

ваш шаблон еще нужно править чтобы эти правила и этот хак применить
Записан
GTpro
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 101


« Ответ #64 : 08.09.2011, 15:10:12 »

Тоже через снэпшот настроил CSS но проблема, в модулях выставил отображение иконки ровно, а в рекомендуемых товарах иконка плывет. Не могу понять почему.
Записан
Sergey82
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #65 : 28.10.2011, 16:10:05 »

Все привет!
Такая вот ситуация блин. Что-то не могу найти этот файлик shop_browse_queries.php у себя. где его искать. Все просмотрел. VirtueMart 1.1.5
Может кто может выложить его.
Записан
beagler
Moderator
*****

Репутация: +281/-4
Offline Offline

Пол: Мужской
Сообщений: 2775


http://beagler.ru/


« Ответ #66 : 28.10.2011, 16:24:19 »

\administrator\components\com_virtuemart\html\shop_browse_queries.php
Записан
Sergey82
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #67 : 28.10.2011, 16:46:00 »

нет такого файла Sad
Записан
dark_star
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 70


« Ответ #68 : 28.10.2011, 18:03:28 »

Есть он. Находится между файлами (если по имени сортировать) shop.waiting_thanks.php и shopper.shopper_address_form.php
Записан
Sergey82
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #69 : 28.10.2011, 18:14:16 »

бли затасовали фиг знает куда. Спасибо))
Записан
SatMan
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #70 : 05.11.2011, 18:28:14 »

Все делаю по инструкции. Картинки появляются, но знак спецпредложения не накладывается на картинку товара, а располагается рядом. Sad
Записан
dark_star
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 70


« Ответ #71 : 05.11.2011, 19:53:16 »

кссом правьте, влево, вправо. Главное что он там есть, остальное доделываем кссом. Не знаете ксс, изучайте.
Записан
SatMan
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #72 : 05.11.2011, 20:05:51 »

кссом правьте, влево, вправо. Главное что он там есть, остальное доделываем кссом. Не знаете ксс, изучайте.

Вы знаете, ваш метод у меня вообще не пошел. Sad  VirtueMart 1.1.9 и тема s5_shopper_frenzy. А вот идея товарища alex-mlt ближе к идеалу оказалась....

Цитировать
Я все решил иначе. Способ предложенный Pashtetdiz приводил к тому, что на разных обозревателях и с разным разрешением все "скакало" в разные стороны.
Никакие стили в shop.product_details.php и shop.browse.php я не менял.
Во всех BROWSE и fly (ну или какой Вам нужен) я вывод картинки товара (у меня VM 1.1.6 и выводилась ссылка, а не $product_image) обрамил в <div style="position: relative;> </div>. В том числе и в таблицах.
В него же и вписал вывод <?php echo $new_img_fly ?> и <?php echo $leader_img_fly ?>.
И теперь все Ок.

Sad

Записан
dark_star
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 70


« Ответ #73 : 05.11.2011, 23:35:32 »

Каждый сам старается для себя.
Записан
SatMan
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #74 : 06.11.2011, 00:15:53 »

Каждый сам старается для себя.

Абсолютно верно. Azn Все получилось. Всем спасибо. Две особенности - не ошибайтесь в коде и второе - строго следуйте инструкциям.
Записан
malish84
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #75 : 29.11.2011, 16:49:35 »

Вот тут тоже расписано как реализовать данную вещь в Joomla в виртмарте.
Записан
ivanesx2008
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 74



« Ответ #76 : 11.12.2011, 18:21:31 »

В дополнение к хаку можно сделать вывод меток и в снэпшотах товара (в модулях, в сопутствующих).
Внимание! Делал вывод ТОЛЬКО метки "спецпредложение".
Вывод "новинки" делать там же по аналогии, ничего сложного.

Для этого в /administrator/components/com_virtuemart/classes/ps_product.php

ищем код
Код:
function product_snapshot( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {

чуть ниже ищем код
Код:
$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_special, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'";

далее ищем код
Код:
if ($db->next_record()) {

и сразу после него вписываем
Код:
if( $db->f("product_special") == "Y" ) {
     $leader_img = '<div style="position: absolute; right: 0px; bottom: 0;"><img src="'. $mosConfig_live_site .'/images/stories/labels_product/leader_img.png" border="0" alt="Лидер продаж" title="Лидер продаж" align="right"></div>'; // code required for new tag
} else {
     $leader_img = "";
}

дальше ищем код
Код:
$tpl->set( 'show_product_name', $show_product_name );

после него ставим
Код:
$tpl->set( "leader_img", $leader_img);

теперь в шаблоне снэпшота components\com_virtuemart\themes\default_my\templates\common\productsnapshot.tpl.php

остается только прописать в нужном месте
Код:
<?php echo $leader_img ?>

Итог - в сопутствующих товарах, и в модулях типа feathureprod, randomprod тоже выводятся метки "спецпредложение".


ps. Привел код меток как в оригинале хака для соблюдения "наследственности", но себе сделал "пустыми дивами с фонами".
Уже 100 раз перепробовал, но в модулях VirtueMart иконка не отображается!
Сам хак работает нормально, и в скиске товаров категории и в карточке товара.

В чем может быть трабл?
Virtuemart 1.9.9
Joomla 1.5.24
Записан
Страниц: 1 2 [3]  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet