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
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';
}
});
?>";
this is a bizarre mix of javascript, jquery and php
check some basic 101 js and php tutorials
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)?>">
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%).
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
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.
you should not write your own queries, only if you cannot access it by vm api.
How can I do it then?? How to link dynamically the buttons and the child product??
Can you give me a direction?
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
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??
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.