VirtueMart Forum

VirtueMart 2 + 3 + 4 => General Questions => Topic started by: rade039 on December 15, 2014, 21:37:29 PM

Title: How to link category images in Virtuemart component?
Post by: rade039 on December 15, 2014, 21:37:29 PM
Hello everyone,

I am using Joomla 2.5.27 and Virtuemart 2.0.26 version.

As I said in title, I want to link category images (by default, just text is linked, not image). I don't want to link product image, just category image, so when someone open front shop, and categories are listed, and I want that someone who click on image, open subcategories or products in that category.

I hope that you understand me, and sorry because my bad English. I try to find solution on this forum and on Google, but without success.

Thank you in advance
Title: Re: How to link category images in Virtuemart component?
Post by: jenkinhill on December 15, 2014, 23:03:05 PM
Your VirtueMart version is old and should be updated. Current versions are 2.6.14 and 3.0.2   http://forum.virtuemart.net/index.php?topic=118683.0

But test the update on a backup of the site first.

If the update does not fix your problem then you have a template issue. Are you using a commercial template with overrides?  What is the URL?
Title: Re: How to link category images in Virtuemart component?
Post by: rade039 on December 16, 2014, 01:45:17 AM
Hi, I will update it ASAP.

This is a link of site: http://snupi.eu/modular/index.php?option=com_virtuemart&view=category&virtuemart_category_id=21&categorylayout=0&Itemid=563 It's a comercial template OT print.

This is not a problem, I think...because on default VM template is a same thing. So, when you open this link above, you will see 2 cat. Now, I want to link image, like the name of cat is linked. I hope that you understand what I need to do?

Title: Re: How to link category images in Virtuemart component?
Post by: jenkinhill on December 16, 2014, 11:28:08 AM
That page is using a template override for the file components/com_virtuemart/views/category/tmpl/default.php   yu will need to edit the override, or rename the directory at [yourjoomlatemplate]/html/com_virtuemart
Title: Re: How to link category images in Virtuemart component?
Post by: rade039 on December 16, 2014, 23:35:50 PM
Thank you very much. But I need that template, so could you please just tell me what I must change in this file (from template) to get image linked, like in default VM template? I hope that I don't ask too much. This is a file:
<?php

/**

 *

 * Show the products in a category

 *

 * @package    VirtueMart

 * @subpackage

 * @author RolandD

 * @author Max Milbers

 * @todo add pagination

 * @link http://www.virtuemart.net

 * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. 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.

 * @version $Id: default.php 6556 2012-10-17 18:15:30Z kkmediaproduction $

 */



 // Modified by Omegatheme.com to use with responsive template - VM Version 2.0.18a stable



//vmdebug('$this->category',$this->category);

vmdebug ('$this->category ' $this->category->category_name);

// Check to ensure this file is included in Joomla!

defined ('_JEXEC') or die('Restricted access');

JHTML::('behavior.modal');

/* javascript for list Slide

  Only here for the order list

  can be changed by the template maker

*/

$js "

jQuery(document).ready(function () {

jQuery('.orderlistcontainer').hover(

function() { jQuery(this).find('.orderlist').stop().show()},

function() { jQuery(this).find('.orderlist').stop().hide()}

)

});

"
;



$document JFactory::getDocument ();

$document->addScriptDeclaration ($js);



/*$edit_link = '';

if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');

if (Permissions::getInstance()->check("admin,storeadmin")) {

$edit_link = '<a href="'.JURI::root().'index.php?option=com_virtuemart&tmpl=component&view=category&task=edit&virtuemart_category_id='.$this->category->virtuemart_category_id.'">

'.JHTML::_('image', 'images/M_images/edit.png', JText::_('COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT'), array('width' => 16, 'height' => 16, 'border' => 0)).'</a>';

}



echo $edit_link; */

 
?>


<div class="browse-top">

<!-- <h1><?php echo $this->category->category_name?></h1> -->

<h3 class="category-title">

<?php if (empty($this->category->category_name)){

$title $document->getTitle();

echo $title;

} else {

echo $this->category->category_name;

?>


</h3>

<div class="clear"></div>

<?php if ( empty($this->keyword) && !empty($this->category->category_description) ) { ?>

<div class="category_description">

<?php echo $this->category->category_description ?>

</div>

<div class="clear"></div>

<?php }?>

</div>



<?php /* Show child categories */



if (VmConfig::get ('showCategory'1) and empty($this->keyword)) {

if ($this->category->haschildren) {



// Category and Columns Counter

$iCol 1;

$iCategory 1;



// Calculating Categories Per Row

$categories_per_row VmConfig::get ('categories_per_row'3);

//$category_cellwidth = ' width' . floor (100 / $categories_per_row);

$category_cellwidth ' span' floor(OGRID_SYS $categories_per_row);



// Separator

$verticalseparator " vertical-separator";

?>




<div class="category-view">



<?php // Start the Output

if (!empty($this->category->children)) {

foreach ($this->category->children as $category) {



// Show the horizontal seperator

if ($iCol == && $iCategory $categories_per_row) {

?>


<div class="horizontal-separator"></div>

<?php

}



// this is an indicator wether a row needs to be opened or not

if ($iCol == 1) {

?>


<div class="row-fluid">

<?php

}



// Show the vertical seperator

if ($iCategory == $categories_per_row or $iCategory $categories_per_row == 0) {

$show_vertical_separator ' ';

} else {

$show_vertical_separator $verticalseparator;

}



// Category Link

$caturl JRoute::('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' $category->virtuemart_category_id);



// Show Category

?>


<div class="category <?php echo $category_cellwidth $show_vertical_separator ?>">

<div class="spacer">

<?php

if (!empty($category->images)) {

echo '<span class="category-image">';

echo $category->images[0]->displayMediaThumb(""false);

echo '</span>';

}

?>


<div class="ot-cat-detail<?php echo (!empty($category->images[0]->file_url_thumb) ? ' ot-cat-over' ''); ?>">

<div class="ot-cat-detail-i">

<h5 class="category-name">

<a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">

<?php echo $category->category_name ?>

</a>

</h5>

</div>

</div>

</div>

</div>

<?php

$iCategory++;



// Do we need to close the current row now?

if ($iCol == $categories_per_row) {

?>


<div class="clear"></div>

</div>

<?php

$iCol 1;

} else {

$iCol++;

}

}

}

// Do we need a final closing row tag?

if ($iCol != 1) {

?>


<div class="clear"></div>

</div>

<?php ?>

</div>



<?php

}

}

?>


<div class="browse-view">

<?php

if (!empty($this->keyword)) {

?>


<h3><?php echo $this->keyword?></h3>

<?php

?>


<?php if ($this->search !== NULL) { ?>

<form action="<?php echo JRoute::('index.php?option=com_virtuemart&view=category&limitstart=0&virtuemart_category_id=' $this->category->virtuemart_category_id); ?>" method="get">



<!--BEGIN Search Box -->

<div class="virtuemart_search">

<?php echo $this->searchcustom ?>

<br/>

<?php echo $this->searchcustomvalues ?>

<input name="keyword" class="inputbox" type="text" size="20" value="<?php echo $this->keyword ?>"/>

<input type="submit" value="<?php echo JText::('COM_VIRTUEMART_SEARCH'?>" class="button" onclick="this.form.keyword.focus();"/>

</div>

<input type="hidden" name="search" value="true"/>

<input type="hidden" name="view" value="category"/>



</form>



<!-- End Search Box -->

<?php ?>



<?php // Show child categories

if (!empty($this->products)) {

?>


<div class="orderby-displaynumber">

<div class="span6">

<?php echo $this->orderByList['orderby']; ?>

<?php echo $this->orderByList['manufacturer']; ?>

</div>

<div class="span6">

<div class="display-number"><?php echo $this->vmPagination->getResultsCounter ();?><br/><?php echo $this->vmPagination->getLimitBox (); ?></div>

<!-- <div class="vm-pagination pagination">

<?php echo $this->vmPagination->getPagesLinks (); ?>

<span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span>

</div> -->

</div>

<div class="clear"></div>

</div> <!-- end of orderby-displaynumber -->

<div class="clear"></div>



<?php

// Category and Columns Counter

$iBrowseRow 1;

$iBrowseCol 1;

$iBrowseProduct 1;



// Calculating Products Per Row

$BrowseProducts_per_row $this->perRow;

//$Browsecellwidth = ' width' . floor (100 / $BrowseProducts_per_row);

$Browsecellwidth ' span' floor (OGRID_SYS $BrowseProducts_per_row);

// Separator

$verticalseparator " vertical-separator";



// Count products ?? why not just count ($this->products)  ?? note by Max Milbers

$BrowseTotalProducts 0;

foreach ($this->products as $product) {

$BrowseTotalProducts++;

?>




<?php // Start the Output

foreach ($this->products as $product) {



// Show the horizontal seperator

if ($iBrowseCol == && $iBrowseProduct $BrowseProducts_per_row) {

?>


<div class="horizontal-separator"></div>

<?php

}



// this is an indicator wether a row needs to be opened or not

if ($iBrowseCol == 1) {

?>


<div class="row-fluid">

<?php

}



// Show the vertical seperator

if ($iBrowseProduct == $BrowseProducts_per_row or $iBrowseProduct $BrowseProducts_per_row == 0) {

$show_vertical_separator ' ';

} else {

$show_vertical_separator $verticalseparator;

}



// Show Products

?>


<div class="product ot-product <?php echo $Browsecellwidth $show_vertical_separator ?>">

<div class="spacer">

<div class="product-image">

<!-- <a title="<?php echo $product->product_name ?>" rel="vm-additional-images" href="<?php echo $product->link?>"> -->

<a title="<?php echo $product->product_name ?>" href="<?php echo $product->link?>">

<?php echo $product->images[0]->displayMediaThumb('class="browseProductImage"'false); ?>

</a>



<!-- The "Average Customer Rating" Part -->

<?php /* if ($this->showRating) { ?>

<span class="contentpagetitle"><?php echo JText::('COM_VIRTUEMART_CUSTOMER_RATING'?>:</span>

<br/>

<?php

$img_url JURI::root().VmConfig::get('assets_general_path').'/reviews/'.$product->votes->rating.'.gif';

echo JHTML::image($img_url$product->votes->rating.' '.JText::_('COM_VIRTUEMART_REVIEW_STARS'));

echo JText::_('COM_VIRTUEMART_TOTAL_VOTES').": "$product->votes->allvotes;

?>


<?php } */ ?>

<?php

if ( VmConfig::get ('display_stock'1)) { ?>


<!-- if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none')){?> -->

<div class="paddingtop8">

<span class="vmicon vm2-<?php echo $product->stock->stock_level ?>" title="<?php echo $product->stock->stock_tip ?>"></span>

<span class="stock-level"><?php echo JText::('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP'?></span>

</div>

<?php ?>

</div>

<div class="clear"></div>

<?php if ($this->show_prices == '1') { ?>

<div class="product-price" id="productPrice<?php echo $product->virtuemart_product_id ?>">

<?php

if ($this->show_prices == '1') {

if ($product->prices['salesPrice']<=and VmConfig::get ('askprice'1) and  !$product->images[0]->file_is_downloadable) {

echo JText::('COM_VIRTUEMART_PRODUCT_ASKPRICE');

}

//todo add config settings

if ($this->showBasePrice) {

echo $this->currency->createPriceDiv ('basePrice''COM_VIRTUEMART_PRODUCT_BASEPRICE'$product->prices);

echo $this->currency->createPriceDiv ('basePriceVariant''COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT'$product->prices);

}

echo $this->currency->createPriceDiv ('variantModification''COM_VIRTUEMART_PRODUCT_VARIANT_MOD'$product->prices);

// echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);

echo '<span class="PricesalesPrice">' $this->currency->createPriceDiv ('salesPrice''COM_VIRTUEMART_PRODUCT_SALESPRICE'$product->pricesTRUE) . '</span>';

if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1]) != round($product->prices['salesPrice'],$this->currency->_priceConfig['salesPrice'][1])) {

// echo '<span class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices) . "</span>";

echo '<span class="price-crossed" ><span class="PricebasePriceWithTax">' $this->currency->createPriceDiv ('basePriceWithTax''COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX'$product->pricesTRUE) . "</span></span>";

}

if (round($product->prices['salesPriceWithDiscount'],$this->currency->_priceConfig['salesPrice'][1]) != round($product->prices['salesPrice'],$this->currency->_priceConfig['salesPrice'][1])) {

echo $this->currency->createPriceDiv ('salesPriceWithDiscount''COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT'$product->prices);

}

if (round($product->prices['discountedPriceWithoutTax'],$this->currency->_priceConfig['salesPrice'][1]) != round($product->prices['priceWithoutTax'],$this->currency->_priceConfig['salesPrice'][1])) {

echo $this->currency->createPriceDiv ('discountedPriceWithoutTax''COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX'$product->prices);

} else {

echo $this->currency->createPriceDiv ('priceWithoutTax''COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX'$product->prices);

}

echo $this->currency->createPriceDiv ('discountAmount''COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT'$product->prices);

echo $this->currency->createPriceDiv ('taxAmount''COM_VIRTUEMART_PRODUCT_TAX_AMOUNT'$product->prices);

$unitPriceDescription JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE'$product->product_unit);

echo $this->currency->createPriceDiv ('unitPrice'$unitPriceDescription$product->prices);

?>


</div>

<div class="clear"></div>

<?php ?>

<?php $maxrating VmConfig::get('vm_maximum_rating_scale',5);

$ratingModel VmModel::getModel('ratings');

$showRating $ratingModel->showRating();

if ($showRating) { ?>


<div class="vote">

<?php $rating $ratingModel->getRatingByProduct($product->virtuemart_product_id);

// $this->assignRef('rating', $rating);

if (empty($rating)) { ?>


<span class="vote"><?php echo JText::_('COM_VIRTUEMART_UNRATED'?></span>

<?php } else {

// $ratingwidth = ( $rating->rating * 100 ) / $maxrating;

$ratingwidth $rating->rating 24;//I don't use round as percetntage with works perfect, as for me

?>


<span class="vote">

<span title=" <?php echo (JText::_("COM_VIRTUEMART_RATING_TITLE") . $rating->rating '/' $maxrating?>" class="vmicon ratingbox" style="display:inline-block;">

<!-- <span class="stars-orange" style="width:<?php echo $ratingwidth;?>%"> -->

<span class="stars-orange" style="width:<?php echo $ratingwidth;?>px">

</span>

</span>

</span>

<?php

?>


</div>

<div class="clear"></div>

<?php ?>

<div class="product-detail">

<!-- <h4 class="product-name">

<?php echo JHTML::link($product->link$product->product_name); ?>

</h4> -->

<a class="product-name" href="<?php echo$product->link?>">

<?php echo $product->product_name?>

</a>

<div class="clear"></div>

<?php // Product Short Description

if(!empty($product->product_s_desc)) { ?>


<div class="product-s-desc">

<p class="product_s_desc">

<?php echo shopFunctionsF::limitStringByWord($product->product_s_desc0'...'?>

</p>

</div>

<div class="clear"></div>

<?php ?>

</div>

<div class="clear"></div>

<div class="product-addtocart">

<!--<p>-->

<?php // Product Details Button

echo JHTML::link($product->link'<span>'.JText::_('COM_VIRTUEMART_PRODUCT_DETAILS').'</span>', array('title' => $product->product_name,'class' => 'product-details'));

?>


<!--</p>-->

</div>

<div class="clear"></div>

</div>

<!-- end of spacer -->

</div> <!-- end of product -->

<?php



// Do we need to close the current row now?

if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts) {

?>


<div class="clear"></div>

   </div> <!-- end of row -->

<?php

$iBrowseCol 1;

$iBrowseRow++;

} else {

$iBrowseCol++;

}



$iBrowseProduct++;

// end of foreach ( $this->products as $product )

// Do we need a final closing row tag?

if ($iBrowseCol != 1) {

?>


<div class="clear"></div>



<?php

}

?>


<hr/>

<div class="vm-pagination pagination pagination-mini pagination-centered"><?php echo $this->vmPagination->getPagesLinks (); ?><span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span></div>



<?php

} elseif ($this->search !== NULL) {

echo JText::('COM_VIRTUEMART_NO_RESULT') . ($this->keyword ' : (' $this->keyword ')' '');

}

?>


</div><!-- end browse-view -->