Why this plugin doesn't store anything in database?
I created a customfield plugin specification. when i assign to a product, two input boxes appear but data isn't store after saving.
How must we use it?
Thanks
hi emedina,
The specification plugin is so to say a test plugin, of course this have to be fixed.
Why you need it?
If you don't have to search by specification then use 2 "string" (or more) custom fields.
You can use a parent custom field to group it and add all in one time in product.
If you need search, you can find search filter (paid) plugins for virtuemart using "standard" customfields .
Greets,
Patrick
Hi,
In vm 2.0.26 works fine, but in 3.0.9 doesn´t work.
I need to specificate several properties of a product under the same group. Customfields groups should be nice but, i think that have a very big mistake. In the database customfields groups look like this:
virtuemart_product_id customfield_id customfield_value ordering
5 3 '' 0 //this is the group
5 4 'value' 1
5 5 'other value' 2
5 3 '' 3 //other group
5 4 'value b' 4
5 5 'value c' 5
5 3 '' 3 //other group
5 4 'value d' 4
5 5 'value e' 5
With this esquema, we can't make 'self joins' in a sql select, cause the unique primary key is 'vituemart_product_id', so this sql statement: (trying to select 'value b')
'SELECT table2.customfield_value from #__vituemart_product_customfield as table1 LEFT JOIN #__virtuemart_product_customfields as table2 on (table1.virtuemart_product_id = table2.virtuemart_product_id) where table1.customfield_id=4 and table1.customfield_value='value' and table2.customfield_id=4
This will return two results 'value b' and 'value d'.
Virtuemart customfields group should have a parent_id to make them unique.
P.S. Sorry my poor english
Hi,
I don't know your project, but this is not a big issue, you can group by virtuemart_product_id in a query to remove duplicates.
Greets,
Patrick
i speak french and german if you prefer
Quote from: Studio 42 on August 06, 2015, 12:41:04 PM
Hi,
I don't know your project, but this is not a big issue, you can group by virtuemart_product_id in a query to remove duplicates.
Greets,
Patrick
i speak french and german if you prefer
The problem is not the duplicates. The problem is diferent values on the same product and same virtuemart_custom_id.
I think this plugin's problem is the even plgOnProductStore isn't triggering.
I speak spanish, sorry.
I don't get you?
If you have duplicate value, then you have added this or not ?
If you need product search result, then on using group by product id give only product with same id one time :
'SELECT table2.customfield_value from #__vituemart_product_customfield as table1 LEFT JOIN #__virtuemart_product_customfields as table2 on (table1.virtuemart_product_id = table2.virtuemart_product_id) where table1.customfield_id=4 and table1.customfield_value='value' and table2.customfield_id=4'
Why you need to do this ?
Quote from: Studio 42 on August 06, 2015, 14:37:21 PM
I don't get you?
If you have duplicate value, then you have added this or not ?
If you need product search result, then on using group by product id give only product with same id one time :
'SELECT table2.customfield_value from #__vituemart_product_customfield as table1 LEFT JOIN #__virtuemart_product_customfields as table2 on (table1.virtuemart_product_id = table2.virtuemart_product_id) where table1.customfield_id=4 and table1.customfield_value='value' and table2.customfield_id=4'
Why you need to do this ?
ok, i'll try to be more specific.
Imagine you have a batery for this mobile phones:
brand model
samsung galaxy s2
samsung galaxy s3
samsung galaxy s4
iphone s4
iphone s5
lg l9
you create a group called 'phone' whith id=1, a string (brand) with id=2 and a string (model) with id= 3, for a product with id 25. You table looks like
virtuemart_product_id virtuemart_custom_id customfield_value ordering
25 1 '' 0
25 2 'samsung' 1
25 3 'galaxy s2' 2
25 1 '' 3
25 2 'samsung' 4
25 3 'galaxy s3' 5
25 1 '' 6
25 2 'samsung' 7
25 3 'galaxy s3' 8
25 1 '' 9
25 2 'samsung' 10
25 3 'galaxy s4' 11
25 1 '' 12
25 2 'iphone' 13
25 3 's4' 14
25 1 '' 15
25 2 'iphone' 16
25 3 's5' 17
25 1 '' 18
25 2 'lg' 19
25 3 'l9' 20
Now, you need to know for what samsung's model is compatible your battery. With this sql:
'SELECT table2.customfield_value from #__vituemart_product_customfield as table1 LEFT JOIN #__virtuemart_product_customfields as table2 on (table1.virtuemart_product_id = table2.virtuemart_product_id) where table1.customfield_id=2 and table1.customfield_value='samsung' and table2.customfield_id=3
Whith this joining you receive these values because all have the same primary key-> galaxy s2, galaxy s3, galaxy s4, s4,s5, l9.
if you groups by virtuemart_product_id only receive 'l9', the last result.
Please try this query:
SELECT pc1.`virtuemart_product_id`, pc1.`customfield_value` as value FROM `#_virtuemart_product_customfields` pc1
LEFT JOIN `#_virtuemart_product_customfields` pc2 on pc1.`virtuemart_product_id` = pc2.`virtuemart_product_id`
WHERE pc1.`customfield_value`='myvalue' AND pc1.virtuemart_custom_id=12
GROUP BY pc1.`virtuemart_product_id`
I don't know if this is what you mean, in other case you can use mysql group concat, to chekc only if you have results on left join.
I think your query is not right.
Quote from: Studio 42 on August 06, 2015, 21:55:41 PM
Please try this query:
SELECT pc1.`virtuemart_product_id`, pc1.`customfield_value` as value FROM `#_virtuemart_product_customfields` pc1
LEFT JOIN `#_virtuemart_product_customfields` pc2 on pc1.`virtuemart_product_id` = pc2.`virtuemart_product_id`
WHERE pc1.`customfield_value`='myvalue' AND pc1.virtuemart_custom_id=12
GROUP BY pc1.`virtuemart_product_id`
I don't know if this is what you mean, in other case you can use mysql group concat, to chekc only if you have results on left join.
I think your query is not right.
omg, it works like a charm!!! Only a little fix on your query: "SELECT pc1.`virtuemart_product_id`, pc2.`customfield_value` as value FROM `#_virtuemart_product_customfields`"
In other way, i spend a lot of time in plg_product_specification and i've found a fix:
In vm2, not vm3, plugin stores data but don't get data. In administrator/components/com_virtuemart/plugins/vmcustompluging.php find the function getPluginCustomData(). This functions have to if statements to check data, but the second if always returns false because at this point object key is defined but IT'S NULL:
if (isset($this->params->$k) && $datas->$k == 0) { line 199 aprox
continue;
}
just remove it, coment it or replace like this-> if (!isset($this->params->$k) && $datas->$k == 0))
still ivestigating in vm3.
Studio 42, thank you very much!!!