VirtueMart Forum

VirtueMart 2 + 3 + 4 => Templating & Layouts => Topic started by: Leviathan on December 30, 2014, 16:38:40 PM

Title: mod_virtuemart_product - Layout (Product Name / Image / Price)
Post by: Leviathan on December 30, 2014, 16:38:40 PM
Hi Guys,

J3.3.6 with VM 3.0.2

I need some help with the PHP for mod_virtuemart_product, im using it as a single column with 5 products, currently the layout is "Image / Product Name / Price". I need to change this to "Product Name / Image / Price"

I think the file to edit is "/modules/mod_virtuemart_product/tmpl/default.php"

The current unedited code in the default.php file:
<?php // no direct access
defined ('_JEXEC') or die('Restricted access');
// add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere
vmJsApi::jPrice();


$col 1;
$pwidth ' width' floor (100 $products_per_row);
if (
$products_per_row 1) {
$float "floatleft";
} else {
$float "center";
}
?>

<div class="vmgroup<?php echo $params->get ('moduleclass_sfx'?>">

<?php if ($headerText) { ?>
<div class="vmheader"><?php echo $headerText ?></div>
<?php
}
if ($display_style == "div") {
?>

<div class="vmproduct<?php echo $params->get ('moduleclass_sfx'); ?> productdetails">
<?php foreach ($products as $product) { ?>
<div class="<?php echo $pwidth ?> <?php echo $float ?>">
<div class="spacer">
<?php
if (!empty($product->images[0])) {
$image $product->images[0]->displayMediaThumb ('class="featuredProductImage" border="0"'FALSE);
} else {
$image '';
}
echo JHTML::('link'JRoute::('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' $product->virtuemart_product_id '&virtuemart_category_id=' $product->virtuemart_category_id), $image, array('title' => $product->product_name));
echo '<div class="clear"></div>';
$url JRoute::('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' $product->virtuemart_product_id '&virtuemart_category_id=' .
$product->virtuemart_category_id); ?>

<a href="<?php echo $url ?>"><?php echo $product->product_name ?></a>        <?php    echo '<div class="clear"></div>';

if ($show_price) {
//  echo $currency->priceDisplay($product->prices['salesPrice']);
if (!empty($product->prices['salesPrice'])) {
echo $currency->createPriceDiv ('salesPrice'''$product->pricesFALSEFALSE1.0TRUE);
}
//  if ($product->prices['salesPriceWithDiscount']>0) echo $currency->priceDisplay($product->prices['salesPriceWithDiscount']);
if (!empty($product->prices['salesPriceWithDiscount'])) {
echo $currency->createPriceDiv ('salesPriceWithDiscount'''$product->pricesFALSEFALSE1.0TRUE);
}
}
if ($show_addtocart) {
echo mod_virtuemart_product::addtocart ($product);
}
?>

</div>
</div>
<?php
if ($col == $products_per_row && $products_per_row && $col $totalProd) {
echo " </div><div style='clear:both;'>";
$col 1;
} else {
$col++;
}
?>

</div>
<br style='clear:both;'/>

<?php
} else {
$last count ($products) - 1;
?>


<ul class="vmproduct<?php echo $params->get ('moduleclass_sfx'); ?> productdetails">
<?php foreach ($products as $product) : ?>
<li class="<?php echo $pwidth ?> <?php echo $float ?>">
<?php
if (!empty($product->images[0])) {
$image $product->images[0]->displayMediaThumb ('class="featuredProductImage" border="0"'FALSE);
} else {
$image '';
}
echo JHTML::('link'JRoute::('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' $product->virtuemart_product_id '&virtuemart_category_id=' $product->virtuemart_category_id), $image, array('title' => $product->product_name));
echo '<div class="clear"></div>';
$url JRoute::('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' $product->virtuemart_product_id '&virtuemart_category_id=' .
$product->virtuemart_category_id); ?>

<a href="<?php echo $url ?>"><?php echo $product->product_name ?></a>        <?php    echo '<div class="clear"></div>';
// $product->prices is not set when show_prices in config is unchecked
if ($show_price and  isset($product->prices)) {
echo '<div class="product-price">'.$currency->createPriceDiv ('salesPrice'''$product->pricesFALSEFALSE1.0TRUE);
if ($product->prices['salesPriceWithDiscount'] > 0) {
echo $currency->createPriceDiv ('salesPriceWithDiscount'''$product->pricesFALSEFALSE1.0TRUE);
}
echo '</div>';
}
if ($show_addtocart) {
echo mod_virtuemart_product::addtocart ($product);
}
?>

</li>
<?php
if ($col == $products_per_row && $products_per_row && $last) {
echo '
</ul><div class="clear"></div>
<ul  class="vmproduct' 
$params->get ('moduleclass_sfx') . ' productdetails">';
$col 1;
} else {
$col++;
}
$last--;
endforeach; ?>

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

<?php
}
if ($footerText) : ?>

<div class="vmfooter<?php echo $params->get ('moduleclass_sfx'?>">
<?php echo $footerText ?>
</div>
<?php endif; ?>
</div>


Would any PHP wizard be able to assist with modifying the code to get the required layout?
Title: Re: mod_virtuemart_product - Layout (Product Name / Image / Price)
Post by: liquid.ideas on January 05, 2015, 16:05:57 PM
Hey Leviathan,

Try moving
<a href="<?php echo $url ?>"><?php echo $product->product_name ?></a>   

to be the first thing in the li element
Title: Re: mod_virtuemart_product - Layout (Product Name / Image / Price)
Post by: Leviathan on January 09, 2015, 11:37:12 AM
Thank you liquid.ideas worked perfectly. I'm using Div as the display style, but same code moved to the begning of the Div sorted out the layout.