PDA

View Full Version : Using a variable in a plug in


Goatpod
02-21-2012, 07:29 PM
Hello, hope someone can help with this problem.

I've created a plug in that calls on an ebay api script (phpBay Pro) to add Ebay listings underneath a product review. The review mod. is TedS' wonderful Product Review Forums ? Research, Reviews & Comparisons (https://vborg.vbsupport.ru/showthread.php?t=269808) and I'm trying to reuse one of its variables: vb:raw product.mfrg.

Everything works fine if a keyword is substituted for the vb:raw product.mfrg variable in the plugin; but I'm lost when it comes to what should be the right syntax to enter so that the correct keyword appears (which is the title as defined by the review mod.).

The plugin code is:
ob_start();
require_once("./phpbay/ebay.php");
phpBayAPI("{(vb:raw product.mfrg)}", "5", "", "", "", false);
$php_include = ob_get_contents();
ob_end_clean();
vB_Template::preRegister('prodforums_product_detai ls',array('php_include' => $php_include));

Thanks for any help that can be offered.

Dave

kh99
02-21-2012, 08:58 PM
You would want to use $product[mfrg] in plugin code, but you might find that it's not set, depending on what hook location you use and where the mod actually sets the value.

Goatpod
02-21-2012, 09:48 PM
Thanks KH99. I'm currently using the global_start hook, but open to suggestions as to what may be a better hook to use. Have you any pointers as to where I should be looking for where the mod sets the value?

kh99
02-21-2012, 10:38 PM
I see the template is prodforums_product_details, so you'd have to find where render() is called for that template. It will be a section of code something like:

$templater = vB_Template::create('prodforums_product_details');
$templater->register('my_var', $my_var);
/// etc, etc
$templater->render();



So probably $product is set to something somwhere around there, and your code would have to be after that. If it's completely custom code it's possible there is no hook, in which case you might have to edit the code.

Goatpod
03-10-2012, 12:15 AM
Hi kh99, thanks again for repsonding.

I'm still nocking my head against the wall with this one. I've found:

// show product display
$templater = vB_Template::create('prodforums_product_details');
$templater->register('product', $product);
$templater->register('prodforums_stars', $prodforums_stars);
$template_hook['showthread_above_posts'] .= $templater->render();

The code is in the product's .xml file.

I've been trying many different ways to get it to work in the plug in without success, could you let me know the correct syntax that should appear in the plugin in order to get this variable to appear?

Here's my last attempt:

ob_start();
require_once("./phpbay/ebay.php");
$keyword = $product['product'];
phpBayAPI($keyword, "5", "", "", "", false);
echo "The value of the vb variable = " . $keyword . "<br />\r\n";
$php_include = ob_get_contents();
ob_end_clean();
vB_Template::preRegister('prodforums_product_detai ls',array('php_include' => $php_include));

There's an $keyword/echo included just to check to see if the variable is appearing.
When the $product['product'] variable is replaced with a sample keyword the whole thing works perfectly.

Hope this makes some sense!

Many thanks, Dave