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
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?
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?
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
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 == 1 && $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 == 1 && $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']<=0 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->prices, TRUE) . '</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->prices, TRUE) . "</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_desc, 0, '...') ?>
</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 -->