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

[[ PROBLEME ]] add to cart button + product details in category list...

Started by iMacvador, May 09, 2012, 02:42:40 AM

Previous topic - Next topic

iMacvador

Hi everybody,

i have a " simple " question (maybe just the question is simple) what could come after wouldn't be that simple i'm afraid...

i'm preparing an online " store " (food delivery) and i need to have the add to cart button directly on the product on the category list... have seen some post about it and nothing worked for me.. the button isn't the only thing i want to change.

i have that :


and it would be really great if i could make it look like that :


i already changed things (color button. color text and other things  in : " ../components/com_virtuemart/assets/css/vmsite-ltr.css "

i tried : http://forum.virtuemart.net/index.php?topic=101451.0  but it made something a bit strange, I got the add to cart button but only 1 time at the end of the list and i couldn't choose the product i would order, it was only for the las. te one of the list.

So my 1st question:

   -  can i have the add to cart button instead of " product detail " on ell products


and my 2nd question :

   -  can i have the description of each products in the list page (like i modified in photoshop image 2)

any help would be really appreciated, don't ask for something all ready to use but some help....

i'm using Joomla 2.5.4  -  VM 2.0.6  -  Yootheme template (hope it doesn't bullshit with VM 2)

thanx to you all.


iMacvador

ok so no one can answer.... will try again and again things after things.... 'till i find something

selina1122

hi imacvador,

Copy following code and past it in "/www/components/com_virtuemart/views/category/tmpl/default.php".

This make up will give following style
left 15% picture
center 55% description
right 30% price and add to cart button.

<?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 5810 2012-04-05 23:10:14Z Milbo $
*/

//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="category_description">
<?php echo $this->category->category_description ?>
</div>
<?php
/* Show child categories */

if ( VmConfig::get('showCategory',1) ) {
if ($this->category->haschildren) {

// Category and Columns Counter
$iCol 1;
$iCategory 1;

// Calculating Categories Per Row
$categories_per_row VmConfig::get 'categories_per_row');
$category_cellwidth ' width'.floor 100 $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">
<?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 floatleft<?php echo $category_cellwidth $show_vertical_separator ?>">
<div class="spacer">
<h2>
<a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">
<?php echo $category->category_name ?>
<br />
<?php // if ($category->ids) {
echo $category->images[0]->displayMediaThumb("",false);
//} ?>

</a>
</h2>
</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="width70 floatleft">
<?php echo $this->orderByList['orderby']; ?>
<?php echo $this->orderByList['manufacturer']; ?>
</div>
<div class="width30 floatright display-number"><?php echo $this->vmPagination->getResultsCounter();?><br/><?php echo $this->vmPagination->getLimitBox(); ?></div>
<div class="vm-pagination">
<?php echo $this->vmPagination->getPagesLinks(); ?>
<span style="float:right"><?php echo $this->vmPagination->getPagesCounter(); ?></span>
</div>

<div class="clear"></div>
</div>--> <!-- end of orderby-displaynumber -->

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

<?php
// Category and Columns Counter
$iBrowseCol 1;
$iBrowseProduct 1;

// Calculating Products Per Row
$BrowseProducts_per_row $this->perRow;
$Browsecellwidth ' width'.floor 100 $BrowseProducts_per_row );

// Separator
$verticalseparator " vertical-separator";

// Count products
$BrowseTotalProducts 0;
foreach ( 
$this->products as $product ) {
   
$BrowseTotalProducts ++;
}

// 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">
<?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 floatleft<?php echo $Browsecellwidth $show_vertical_separator ?>">
      <div class="spacer">
        <div class="width15 floatleft center">
          <?php /** @todo make image popup */
echo $product->images[0]->displayMediaThumb('class="browseProductImage" border="0" title="'.$product->product_name.'" ',true,'class="modal"');
?>



          <!-- 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('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none') && (VmConfig::get 'display_stock')) ){?>

          <!-- 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="width55 floatcenter">
          <h2>
            <!-- <?php echo JHTML::link($product->link$product->product_name); ?>-->
            <?php echo $product->product_name?>
          </h2>

          <?php // Product Short Description
if(!empty($product->product_s_desc)) { ?>

          <p class="product_s_desc">
            <?php echo shopFunctionsF::limitStringByWord($product->product_s_desc40'...'?>
          </p>
          <?php ?>
        </div>

<div class="width30 floatright">

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

<?php // Product Short Description
if(!empty($product->product_s_desc)) { ?>

<p class="product_s_desc">
<?php echo shopFunctionsF::limitStringByWord($product->product_s_desc40'...'?>
</p>
<?php ?>-->

<div class="product-price marginbottom12" id="productPrice<?php echo $product->virtuemart_product_id ?>">
<?php
if ($this->show_prices == '1') {
if( $product->product_unit && VmConfig::get('vm_price_show_packaging_pricelabel')) {
echo "<strong>"JText::_('COM_VIRTUEMART_CART_PRICE_PER_UNIT').' ('.$product->product_unit."):</strong>";
}
if(empty($product->prices) and VmConfig::get('askprice',1) and empty($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('basePriceWithTax','COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX',$product->prices);
echo $this->currency->createPriceDiv('discountedPriceWithoutTax','COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE',$product->prices);
echo $this->currency->createPriceDiv('salesPriceWithDiscount','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT',$product->prices);
echo $this->currency->createPriceDiv('salesPrice','COM_VIRTUEMART_PRODUCT_SALESPRICE',$product->prices);
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);
?>

</div>

<p>
<?php // Product Details Button
//echo JHTML::link($product->link, JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name,'class' => 'product-details'));
          
?>

</p>


          <form method="post" class="product" action="index.php" id="addtocartproduct"
            <?php echo $product->virtuemart_product_id ?>">
            <div class="addtocart-bar">

              <?php // Display the quantity box ?>
              <!-- <label for="quantity<?php echo $product->virtuemart_product_id;?>" class="quantity_box"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY'); ?>: </label> -->
              <span class="quantity-box">
                <input  type="text" class="quantity-input" name="quantity[]" value="1" />
              </span>
              <span class="quantity-controls">
                <input type="button" class="quantity-controls quantity-plus" />
                <input type="button" class="quantity-controls quantity-minus" />
              </span>
              <?php // Display the quantity box END ?>

              <?php // Add the button
$button_lbl JText::_('COM_VIRTUEMART_CART_ADD_TO');
$button_cls ''//$button_cls = 'addtocart_button';
if (VmConfig::get('check_stock') == '1' && !$product->product_in_stock) {
$button_lbl JText::_('COM_VIRTUEMART_CART_NOTIFY');
$button_cls 'notify-button';
?>


              <?php // Display the add to cart button ?>
              <span class="addtocart-button">
                <input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
              </span>

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

            <?php // Display the add to cart button END ?>
            <input type="hidden" class="pname" value="<?php echo $product->product_name ?>">
            <input type="hidden" name="option" value="com_virtuemart" />
            <input type="hidden" name="view" value="cart" />
            <noscript>
              <input type="hidden" name="task" value="add" />
            </noscript>
            <input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
            <?php /** @todo Handle the manufacturer view */ ?>
            <input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
            <input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
          </form>
         

</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;
   } 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
}
?>

<!-- /div removed valerie -->
<div class="vm-pagination"><?php echo $this->vmPagination->getPagesLinks(); ?><span style="float:right"><?php echo $this->vmPagination->getPagesCounter(); ?></span></div>
<!-- /div removed valerie -->
<?php } elseif ($this->search !==null ) echo JText::_('COM_VIRTUEMART_NO_RESULT').($this->keyword' : ('$this->keyword')' '')
?>

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


Add also following line in:
/www/components/com_virtuemart/assets/css/vmsite-ltr.css

.floatcenter,span.floatleft{float:left;}

and last but not least, change the code in:
/www/components/com_virtuemart/assets/js/vmprices.js

plus   = cart.find('.quantity-plus'),
minus  = cart.find('.quantity-minus'),


to:
plus   = cart.find('.quantity-plus').unbind("click"),
minus  = cart.find('.quantity-minus').unbind("click"),


this has to work out.

iMacvador

first of all thanx for your help.... and WOW alots more than what i was thinking  :-\

but doesn't work....  that's the message i get the page when i'm opening a category...

Parse error: syntax error, unexpected T_STRING in /00/Tests25/3/components/com_virtuemart/views/category/tmpl/default.php on line 24


that's what on line 24 :     defined('_JEXEC') or die('Restricted access');

selina1122

first of all, my knowledge is not big with php and js. but what i know is im using J2.5.4 and VM2.0.6 too.

If you read the 3 lines above line 24.

//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');


they are looking for a file, pehaps it should do something with your map "/00/Tests25/3/" this makes no sence to me.

Im in developing mode to, so i have only Joomla and VM installed and using the standard joomla template.
i think that your installed map is giving some problems.

for your information,

it will show the short-description, not the long. and i killed the redirect to product details. this all is replaceable.

EDIT:
Something u should do is.
copy all NOT named files from
/www/components/com_virtuemart/views/productdetails/tmpl
to
/www/components/com_virtuemart/views/category/tmpl

i did this before i was changing the template. maybe was this nessecerry.

iMacvador

YESSSS YESSSSS YESSSSS !!!!!!!!   wouhouhouhou !!  thaaaaaaaaaaaannnnnnnnnnxxxx soooo muuuuuuuuch !! you saved me.

moved all files : " default_xxxyyyzzz.php maybe we don't need to move all.. but didn't want to search for too long.

Infule

I'm not sure if this will help anybody or not, but I'm using a template through http://www.developing-and-design.com/ for my virtuemart 2 theme and it took me forever to find out where the product details button was since everything from above didn't work for me. This is what I did:

/templates/template_design/html/com_virtuemart/templates/default/products/grid/centered.php

line : 60  - commented out the php line there.

I hope this helps! :)

_kuro

Ihave modified the PRODUCT DETAIL BUTTON for ADD TO CART.
Now I got a problem buying in the catalogue:
When I´m shopping for example, in page 4 , i select an item, buy it, and after confirmation , I am re directed to the first page always. That happens in all of my categories.
I would like to know how to buy, confirm and stay in the same page.
It is annoying for shoppers to search for something through 11 pages and when they want to buy in the same page they cant because they were sent back to page number 1.
THANK YOU FOR YOUR HELP !!!!

PS. I saved this file under the template file  . .


kaseynova

I was able to add this add to cart button and it worked for all products EXCEPT the downloadable product that I have. This is using the Virtual Product Shipping Module and the customer will get an email with a download link in it for the file they purchased. BUT when I use this add to cart code, the download link doesn't get put in the email.

I have VM 2.0.10 and Joomla 2.5.7 and Custom iStraxx product download - 2.0.6

iMacvador

Hi everybody,

I just come to dig up an old topic which was made for VM 2.0.6 but does not work with VM 2.0.14... is there someone with a solution to that...

thanx for your help