Skip to main content

Show multiple badges in top right corner – Determined

More
9 years 5 months ago - 9 years 5 months ago #267952 by neo191987
-- HikaShop version -- : 3.0.1

Hi I want to add several badges in the top right corner but only one is displayed. Can some badges appear in this area?

I found out how to make new positions. It will not be bad to make several positions in a corner.
Last edit: 9 years 5 months ago by neo191987.

Please Log in or Create an account to join the conversation.

More
9 years 5 months ago #267987 by Jerome
Hello,

If you place several badges in the same place, you could have some "overlap" issues, one badge can be hover another and you might not see it.
But there is nothing in the badge system which would block you to have several badges for the same position.

Regards,

Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278400 by n3t
Hi,

I found same issue, and it is not only visibiity issue.

I have two categories (New and Action for example) and two assigned badges. If I assign product to one of these categories,
one badge is displayed correctly, if to both again only one badge is displayed. If changed position of one badge, both are displayed.

Try this on demo, just assign any of products to New products and Discount 10%.

Is there solution for this?

thanks

Pavel

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278401 by n3t
Hi again,

seems the problem is in hikashopBadgeClass::placeBadges - for each position only one badge (with lowest ordering) is diaplyed.

Pavel

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago - 9 years 2 weeks ago #278402 by neo191987
Through modification can add many items. Let's ask developers to add more positions so they do not need to permanently modify this file after every update.

administrator/components/com_hikashop/classes/badge.php

replace line 217 - 232
Code:
if($position == 'topleft' && ($position1 == 0 || $badge->badge_ordering < $position1)) { $html .= '<div class="hikashop_badge_topleft_div" style="' . $styletopleft . '">' . $imageDisplayed . '</div>'; $position1 = $badge->badge_ordering; } elseif($position == 'topleft' && ($position2 == 0 || $badge->badge_ordering < $position2)) { $html .= '<div class="hikashop_badge_topleft_div" style="' . $styletopleft . '">' . $imageDisplayed . '</div>'; $position1 = $badge->badge_ordering; } elseif($position == 'topleft' && ($position3 == 0 || $badge->badge_ordering < $position3)) { $html .= '<div class="hikashop_badge_topleft_div" style="' . $styletopleft . '">' . $imageDisplayed . '</div>'; $position1 = $badge->badge_ordering; } elseif($position == 'topleft' && ($position4 == 0 || $badge->badge_ordering < $position4)) { $html .= '<div class="hikashop_badge_topleft_div" style="' . $styletopleft . '">' . $imageDisplayed . '</div>'; $position1 = $badge->badge_ordering; } elseif($position == 'topleft' && ($position5 == 0 || $badge->badge_ordering < $position5)) { $html .= '<div class="hikashop_badge_topleft_div" style="' . $styletopleft . '">' . $imageDisplayed . '</div>'; $position1 = $badge->badge_ordering; } elseif($position == 'topright' && ($position6 == 0 || $badge->badge_ordering < $position6)) { $html .= '<div class="hikashop_badge_topright_div" style="' . $styletopright . '">' . $imageDisplayed . '</div>'; $position2 = $badge->badge_ordering; } elseif($position == 'topright' && ($position7 == 0 || $badge->badge_ordering < $position7)) { $html .= '<div class="hikashop_badge_topright_div" style="' . $styletopright . '">' . $imageDisplayed . '</div>'; $position2 = $badge->badge_ordering; } elseif($position == 'topright' && ($position8 == 0 || $badge->badge_ordering < $position8)) { $html .= '<div class="hikashop_badge_topright_div" style="' . $styletopright . '">' . $imageDisplayed . '</div>'; $position2 = $badge->badge_ordering; } elseif($position == 'topright' && ($position9 == 0 || $badge->badge_ordering < $position9)) { $html .= '<div class="hikashop_badge_topright_div" style="' . $styletopright . '">' . $imageDisplayed . '</div>'; $position2 = $badge->badge_ordering; } elseif($position == 'topright' && ($position10 == 0 || $badge->badge_ordering < $position10)) { $html .= '<div class="hikashop_badge_topright_div" style="' . $styletopright . '">' . $imageDisplayed . '</div>'; $position2 = $badge->badge_ordering; } elseif($position == 'bottomright' && ($position11 == 0 || $badge->badge_ordering < $position11)) { $html .= '<div class="hikashop_badge_bottomright_div" style="' . $stylebottomright . '">' . $imageDisplayed . '</div>'; $position3 = $badge->badge_ordering; } elseif($position == 'bottomright' && ($position12 == 0 || $badge->badge_ordering < $position12)) { $html .= '<div class="hikashop_badge_bottomright_div" style="' . $stylebottomright . '">' . $imageDisplayed . '</div>'; $position3 = $badge->badge_ordering; } elseif($position == 'bottomright' && ($position13 == 0 || $badge->badge_ordering < $position13)) { $html .= '<div class="hikashop_badge_bottomright_div" style="' . $stylebottomright . '">' . $imageDisplayed . '</div>'; $position3 = $badge->badge_ordering; } elseif($position == 'bottomright' && ($position14 == 0 || $badge->badge_ordering < $position14)) { $html .= '<div class="hikashop_badge_bottomright_div" style="' . $stylebottomright . '">' . $imageDisplayed . '</div>'; $position3 = $badge->badge_ordering; } elseif($position == 'bottomright' && ($position15 == 0 || $badge->badge_ordering < $position15)) { $html .= '<div class="hikashop_badge_bottomright_div" style="' . $stylebottomright . '">' . $imageDisplayed . '</div>'; $position3 = $badge->badge_ordering; } elseif($position == 'bottomleft' && ($position16 == 0 || $badge->badge_ordering < $position16)) { $html .= '<div class="hikashop_badge_bottomleft_div" style="' . $stylebottomleft . '">' . $imageDisplayed . '</div>'; $position4 = $badge->badge_ordering; } elseif($position == 'bottomleft' && ($position17 == 0 || $badge->badge_ordering < $position17)) { $html .= '<div class="hikashop_badge_bottomleft_div" style="' . $stylebottomleft . '">' . $imageDisplayed . '</div>'; $position4 = $badge->badge_ordering; } elseif($position == 'bottomleft' && ($position18 == 0 || $badge->badge_ordering < $position18)) { $html .= '<div class="hikashop_badge_bottomleft_div" style="' . $stylebottomleft . '">' . $imageDisplayed . '</div>'; $position4 = $badge->badge_ordering; } elseif($position == 'bottomleft' && ($position19 == 0 || $badge->badge_ordering < $position19)) { $html .= '<div class="hikashop_badge_bottomleft_div" style="' . $stylebottomleft . '">' . $imageDisplayed . '</div>'; $position4 = $badge->badge_ordering; } elseif($position == 'bottomleft' && ($position20 == 0 || $badge->badge_ordering < $position20)) { $html .= '<div class="hikashop_badge_bottomleft_div" style="' . $stylebottomleft . '">' . $imageDisplayed . '</div>'; $position4 = $badge->badge_ordering; }
Last edit: 9 years 2 weeks ago by neo191987.

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278403 by neo191987
That must be the result

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278405 by n3t
imho multiple badges in position should be better, even with all the settings provided by Hikashop, very tricky.

Simpler solution is to override views (product/show_block_img.php and product/listing_img_title.php) and use own placeBadges.
As I do not need to care abut offset settings, I simplified the function a lot and used custom CSS.

Pavel
The following user(s) said Thank You: Jerome

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278440 by Jerome
Hello,

I agree with n3t ; and regarding your needs, it might want to use a product custom field to store the data of the "badges" instead of using the badge system.

Regards,

Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago - 9 years 2 weeks ago #278468 by neo191987

Jerome wrote: Hello,

I agree with n3t ; and regarding your needs, it might want to use a product custom field to store the data of the "badges" instead of using the badge system.

Regards,


Hi, can you explain in detail how it works. It's really annoying to change this file every time.
Last edit: 9 years 2 weeks ago by neo191987.

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278471 by n3t
There are few ways, how to achieve this, I solve it like this:

1/ in your template create folder helpers
2/ Put in this folder file named hikashop.php and enter this content
Code:
<?php defined('_JEXEC') or die; class myHikaShop { public static function placeBadges(&$image, &$badges, $vertical, $horizontal, $echo = true) { // your custom code } }
3/ Go to HikaShop administration, menu Display - Views and search for show_block_img
4/ Click on show_block_img in column fFile in row with your template.
5/ Search for this code
Code:
if(!empty($this->element->badges)) $html .= $this->classbadge->placeBadges($this->image, $this->element->badges, '0', '0',false);
and replace it with this code
Code:
if(!empty($this->element->badges)) { JHtml::addIncludePath( JPATH_BASE.'/templates/'.JFactory::getApplication()->getTemplate(false).'/helpers'); $html .= JHtml::_('my.hikashop.placebadges', $this->image, $this->element->badges, '0', '0',false); }
6/ save and close - you just made your template override, you can find your modified file in your template in html/com_hikashop/product folder.
7/ do the same for listing_img_title or any other file you need.

Pavel

Please Log in or Create an account to join the conversation.

More
9 years 2 weeks ago #278477 by neo191987
I prefer to use the above method I mentioned. After adding this code, there is no need to do anything else.

Please Log in or Create an account to join the conversation.

Time to create page: 0.260 seconds
Powered by Kunena Forum