Vote and Comment: Display votes as compact on listing, vote avarage, vote total.

  • Posts: 136
  • Thank you received: 7
2 years 3 months ago #290944

-- HikaShop version -- : 3.4.0
-- Joomla version -- : 3.8.6
-- PHP version -- : 7.0.10

Hi Hikashop

I would like to suggest the option to make a compact view of vote stars in listings. Like Fiverr.com does it:



And the option to show/hide vote avarage and vote total after the stars.



And I think 1 decimal in aggregateRating would be enough.

I can do this in view-override and I will do, but I hope some day this will be a feature in Hikashop. Then I can have as few overridden files as possible :-)

Best regards,
Henrik


.ninja { color: black; visibility: hidden; }
In case of fire:
1. git commit
2. git push
3. exit building
Attachments:
Last edit: 2 years 3 months ago by flexsus.

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

  • Posts: 136
  • Thank you received: 7
2 years 3 months ago #290963

Hi

Here is what my view override looks like now:



I did not find a way to call if I'm in a listing view or product/vendor view so that I could achieve only showing 1 star in listing view and all stars (5) in vendor/product detail page.

Modified code below.

Best regards,
Henrik

<?php
/**
 * @package	HikaShop for Joomla!
 * @version	3.4.0
 * @author	hikashop.com
 * @copyright	(C) 2010-2018 HIKARI SOFTWARE. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
$row =& $this->rows;
$config = hikashop_config();
if($row->vote_enabled != 1)
	return;

$voteAccess = $config->get('access_vote','public');
$user = hikashop_loadUser();
$hasBought = false;
if($voteAccess == 'buyed' && !empty($user)){
	$voteClass = hikashop_get('class.vote');
	$hasBought = $voteClass->hasBought($row->vote_ref_id, $user);
}
$canVote = $voteAccess == 'public' || ($voteAccess == 'registered' && !empty($user)) || ($voteAccess == 'buyed' && $hasBought);

if(!$canVote && $row->hikashop_vote_total_vote == '0'){
	echo '<div class="hikashop_vote_stars"><span class="hk-rate-star state-full"></span><span class="hikashop_no_vote">'.JText::_('HIKA_NO_VOTE').'</span></div>';
	return;
}

$row->hikashop_vote_average_score = round((float)hikashop_toFloat($row->hikashop_vote_average_score),1);
hikaInput::get()->set("rate_rounded",$row->hikashop_vote_average_score_rounded);
hikaInput::get()->set("nb_max_star",$row->hikashop_vote_nb_star);
$select_id = "select_id_".$row->vote_ref_id;
if(!empty($row->main_div_name)){
	$select_id .= "_".$row->main_div_name;
}else{
	$select_id .= "_hikashop_main_div_name";
}
if($row->hikashop_vote_total_vote == '0'){
	$tooltip = JText::_('HIKA_NO_VOTE');
}else{
	$user_rating = JText::_('HIKA_NO_VOTE');
	if(isset($this->user_vote->vote_rating))
		$user_rating = $this->user_vote->vote_rating;
	$tooltip = "<span class='hikashop_vote_tooltip hikashop_vote_tooltip_average'><span class='hikashop_vote_tooltip_label'>".JText::_('VOTE_AVERAGE').": </span><span class='hikashop_vote_tooltip_value'>".$row->hikashop_vote_average_score."</span></span>";
	$tooltip .= "<br><span class='hikashop_vote_tooltip hikashop_vote_tooltip_total'><span class='hikashop_vote_tooltip_label'>".JText::_('HIKA_VOTE_TOTAL').": </span><span class='hikashop_vote_tooltip_value'>".$row->hikashop_vote_total_vote."</span></span>";
	$tooltip .= "<br><span class='hikashop_vote_tooltip hikashop_vote_tooltip_customer_vote'><span class='hikashop_vote_tooltip_label'>".JText::_('HIKA_VOTE_CUSTOMER_VOTE').": </span><span class='hikashop_vote_tooltip_value'>".$user_rating."</span></span>";
}
?>
<div class="hikashop_vote_stars">
<?php
if($config->get('enable_status_vote', 'vote') != 'both' && $canVote) {
?>
	<input type="hidden" name="hikashop_vote_rating" data-votetype="<?php echo $row->type_item; ?>" data-max="<?php echo $row->hikashop_vote_nb_star; ?>" data-ref="<?php echo $row->vote_ref_id;?>" data-rate="<?php echo $row->hikashop_vote_average_score_rounded; ?>" data-original-title="<?php echo $tooltip; ?>" id="<?php echo $select_id;?>" />
<?php
	if ($row->hikashop_vote_total_vote > 0) {
?>
	<div class="hikashop_vote_aggregate">
		<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
			<span itemprop="ratingValue"><strong><?php echo $row->hikashop_vote_average_score; ?></strong></span>
			<span itemprop="ratingCount">(<?php echo $row->hikashop_vote_total_vote; ?>)</span>
		</div>
	</div>
<?php
	}
?>	
	<span id="hikashop_vote_status_<?php echo $row->vote_ref_id;?>" class="hikashop_vote_notification_mini"></span>
<?php
} else {
?>
	<div class="hk-rating" data-original-title="<?php if ($canVote) { echo $tooltip; } ?>" data-toggle="hk-tooltip">
<?php
	for($i = 1; $i <= $row->hikashop_vote_average_score_rounded; $i++) {
		echo '<span class="hk-rate-star state-full"></span>';
	}
	for($i = $row->hikashop_vote_average_score_rounded; $i < $row->hikashop_vote_nb_star; $i++) {
		echo '<span class="hk-rate-star state-empty"></span>';
	}
?>
	</div>	
<?php
	if ($row->hikashop_vote_total_vote > 0) {
?>
	<div class="hikashop_vote_aggregate">
		<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
			<span itemprop="ratingValue"><strong><?php echo $row->hikashop_vote_average_score; ?></strong></span>
			<span itemprop="ratingCount">(<?php echo $row->hikashop_vote_total_vote; ?>)</span>
		</div>
	</div>
<?php }
}
?>
	<input type="hidden" class="hikashop_vote_rating" data-rate="<?php echo $row->hikashop_vote_average_score_rounded; ?>" />
</div>


.ninja { color: black; visibility: hidden; }
In case of fire:
1. git commit
2. git push
3. exit building
Attachments:
Last edit: 2 years 3 months ago by flexsus.
The following user(s) said Thank You: Mohamed Thelji

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

  • Posts: 12469
  • Thank you received: 1716
  • MODERATOR
2 years 3 months ago #290979

Hello Henrik,

I can do this in view-override and I will do, but I hope some day this will be a feature in Hikashop. Then I can have as few overridden files as possible :-)


We'll take that into account, thank you for your feedback !

Best regards,
Mohamed Thelji.

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

Time to create page: 0.067 seconds
Powered by Kunena Forum