Menu Content

Support

> Forums, FAQs & Paid Support
Welcome, Guest
Username Password: Remember me

Profile for kingramon0

  • OFFLINE
  • Time Zone: GMT +0:00
  • Local Time: 01:23
  • Posts: 3
  • Profile Views: 2363
  • Location: Unknown
  • Gender: Unknown
  • Birthdate: Unknown

Signature

Posts

Posts

emo
By saying "does not work in my config" do you mean that you tried it but it didn't fix the problem, or that you don't see where to make the change in the config?

What language are you using?
JoomSEF not creating ...
Category: JoomSEF 4
emo
I'm having the same problem but don't have an earlier version to fall back to. However, you posting which files you changed helped me find the problem.

Looking through the code in com_virtuemart.php, there is a section where it looks up the product info from the database. The logic always assumes that the table '#__virtuemart_products_en_gb' exists. In my case, I'm using the language en_US, and the table I mentioned does NOT exist in the database.

 
if ($table == '#__virtuemart_products_en_gb') {
// This is EN
$query = "SELECT `p`.`product_sku`, `l`.`product_name`, `l`.`slug`, `l`.`{$descrow}`";
$query .= " FROM `#__virtuemart_products` AS `p`";
$query .= " INNER JOIN `{$table}` AS `l` ON `p`.`virtuemart_product_id` = `l`.`virtuemart_product_id`";
$query .= " WHERE `p`.`virtuemart_product_id` = '{$productId}'";
}
else {
// Join also EN table for fallback
$query = "SELECT `p`.`product_sku`, COALESCE(`l`.`product_name`, `le`.`product_name`) AS `product_name`,";
$query .= " COALESCE(`l`.`slug`, `le`.`slug`) AS `slug`, COALESCE(`l`.`{$descrow}`, `le`.`{$descrow}`) AS `{$descrow}`";
$query .= " FROM `#__virtuemart_products` AS `p`";
$query .= " LEFT JOIN `#__virtuemart_products_en_gb` AS `le` ON `p`.`virtuemart_product_id` = `le`.`virtuemart_product_id`";
$query .= " LEFT JOIN `{$table}` AS `l` ON `p`.`virtuemart_product_id` = `l`.`virtuemart_product_id`";
$query .= " WHERE `p`.`virtuemart_product_id` = '{$productId}'";
}
 


This is the logic in the code. My language is not en_US, so it's going to skip the first block and fall to the 'else' block which tries to run a query that joins with the non-existent '#__virtuemart_products_en_gb' table. The query fails and so never returns any information and therefore the error log message that it cannot find the Product ID.

I changed the first line above to read:
if ($table == '#__virtuemart_products_en_gb' || $table == '#__virtuemart_products_en_us') {

This makes it work for me, but it is not the proper solution.

I'm posting my finding here to help others with the same problem, and so ArtIO can put a fix in the next release.
JoomSEF not creating ...
Category: JoomSEF 4
emo
I have the same problem, but I'm already on the latest Joomla and VirtueMart.
Virtuemart extension ...
Category: JoomSEF 4
More
User Login Empty