News:

You may pay someone to create your store, or you visit our seminar and become a professional yourself with the silver certification

Main Menu

How to link category images in Virtuemart component?

Started by rade039, December 15, 2014, 21:37:29 PM

Previous topic - Next topic

rade039

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

jenkinhill

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?
Kelvyn
Lowestoft, Suffolk, UK

Retired from forum life November 2023

Please mention your VirtueMart, Joomla and PHP versions when asking a question in this forum

rade039

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?


jenkinhill

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
Kelvyn
Lowestoft, Suffolk, UK

Retired from forum life November 2023

Please mention your VirtueMart, Joomla and PHP versions when asking a question in this forum

rade039

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 -->