VirtueMart Forum

VirtueMart 2 + 3 + 4 => Virtuemart Development and bug reports => Topic started by: JeeT.Birdi on February 24, 2015, 01:36:55 AM

Title: Need to output the parent product
Post by: JeeT.Birdi on February 24, 2015, 01:36:55 AM
Hi,

Im using a component to display several different colors for a product. I want to link the color button to those child product.

I named my child product like : 'parent product name + label of color button'  .
I write this to make my link.

My question is: is there any function to call the parent product?  Does anyone know?

1 <a href="http://www.mydomain.com/index.php/component/virtuemart/
2             <?php
3                    $(document).ready(function() {                           //so it execute when html is ready
4                              echo "
5                              <script type=\"text/javascript\">
6                                    var  parentproductname.= $parentproductname;
7                                    var  colorlabel = $colorlabel;
8                                    document.write(parentproductname.'-'.colorlabel);
9                              </script>
10                   });
11             ?>
12  ";
13 </a>

My result should look like this:
http://www.mydomain.com/index.php/component/virtuemart/parentproductname-colorlabel

PS: i'm on my child product page using Joomla 3.3.6 and VM 3.0.2
Title: Re: Need to output the parent product
Post by: JeeT.Birdi on February 24, 2015, 06:41:02 AM
This should be better but still not working:

<a href="/index.php/component/virtuemart/
   <?php
      $(document).ready(function() {                           //so it execute when html is ready
         function lienjeet() {
            $partie1 = parent::$this->product->product_name;
            $partie2 = $color_label;
            echo '$partie1 . '-' . $partie2';
               }
      });
   ?>";
Title: Re: Need to output the parent product
Post by: GJC Web Design on February 24, 2015, 10:12:03 AM
this is a bizarre mix of javascript, jquery and php

check some basic 101 js and php tutorials
Title: Re: Need to output the parent product
Post by: JeeT.Birdi on February 24, 2015, 21:16:38 PM
Can I write something like this to output the parent product name?

<a href="http://www.mydomain.com/<?php echo (parent::$this->product->product_name . '-' . $color_label)?>">
Title: Re: Need to output the parent product
Post by: Milbo on February 25, 2015, 10:11:51 AM
No, you mix inheriting of classes with objects.
The normal way is

$model = VmModel::getModel('product');
$parent = $model->getProduct($product->product_parent_id );
vmdebug('my parent',$parent); //just an output

Btw, it is very, very likely that the parent is already loaded (actually it is already loaded to 100%).
Title: Re: Need to output the parent product
Post by: GJC Web Design on February 25, 2015, 10:37:59 AM
or if you just want the id of the parent it is available in the children's object as   $this->product->product_parent_id
inside the ajax refresh block
Title: Re: Need to output the parent product
Post by: JeeT.Birdi on February 26, 2015, 07:24:05 AM
Can I use $this->product->product_parent_name instead?
Milbo can you tell me how to write a query with a WHERE AND??
Find this documentation (https://docs.joomla.org/Selecting_data_using_JDatabase), but cannot get rid of it...
Like this:

         $monparent= $this->product->product_parent_name;
         $monlabel= $colorbuttonlabel;

         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select($db->quoteName('virtuemart_product_id'));
         $query->from($db->quoteName('#__virtuemart_products_fr_fr'));
         $query->where($db->quoteName('product_name') . ' LIKE '. $db->quote('\'%$monparent%\'') . ' AND '. quoteName('product_name') . ' LIKE '. $db->quote('\'%$monlabel%\''));
         $db->setQuery($query);
         $results = $db->loadObjectList();

         $label_html.='<a href="http://www.mydomain.com/index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$results.'"><div class="color_button_inner_value" style="'.$label_style.'"></div></a>';
      }


Example:

Product:                 Ferrari
Color Button label: Red
Child:                     Ferrari Red

So when I click on the color button red on the child product 'ferrari green', i should go on the id of product ('parent product' +  'label').
This way all the products will automatically be linked to child from the color button.

I know that I have very few knowledge...but I keep learning.
Title: Re: Need to output the parent product
Post by: Milbo on February 26, 2015, 14:53:23 PM
you should not write your own queries, only if you cannot access it by vm api.
Title: Re: Need to output the parent product
Post by: JeeT.Birdi on February 26, 2015, 15:47:00 PM
How can I do it then?? How to link dynamically the buttons and the child product??
Can you give me a direction?
Title: Re: Need to output the parent product
Post by: GJC Web Design on February 26, 2015, 20:46:51 PM
there is afaik no such node as $this->product->product_parent_name

you can't just make up your own objects and wish they were there --

why are you trying to write a query to find the prod id by its name when you already know it by $this->product->product_parent_id ?????

I told u this 3 posts back
Title: Re: Need to output the parent product
Post by: JeeT.Birdi on February 27, 2015, 21:50:47 PM
Maybe i was not clear enough.

I'm not trying to get the parent products but the parent product NAME.
Because the child product's name are formatted manually like this 'Parent Product Name AND label'

This query is for retrieving ANY others products with the Same Parent Name AND the Label.
So if the label of the button i'm clicking is GREEN, then it should get the product with : parent's name + GREEN
Example:
Parent Name: Ferrari
Child Name: Ferrari Red
Child Name: Ferrari Green
Child Name: Ferrari Yellow

On each product page I have those button and the label of those button is respectively (red, yellow, green).

So if I click on the yellow button, it will query the one product which match the parent product'name  PLUS match also the label.
If you check all my replies code, you will understand that it's the only thing i'm trying to do...

But Milbo advice me to not write my own query. So how can I do it??
Title: Re: Need to output the parent product
Post by: Milbo on March 01, 2015, 10:54:47 AM
Quote from: Milbo on February 25, 2015, 10:11:51 AM
No, you mix inheriting of classes with objects.
The normal way is

$model = VmModel::getModel('product');
$parent = $model->getProduct($product->product_parent_id );
vmdebug('my parent',$parent); //just an output

Btw, it is very, very likely that the parent is already loaded (actually it is already loaded to 100%).

DO THAT! and in special the part vmdebug('my parent',$parent); //just an output  and of course enable the vmdebug, then your questions are obsolete.