![]() |
GeoIP condition
I have GeoIP installed on my website (not in vbulletin) and want to use a condition based on country
I have put this code in forums/index.php PHP Code:
PHP Code:
Any ideas how I can get this to work? |
Try adding this to your code in index.php:
Code:
vB_Template::preRegister('FORUMDISPLAY', array('mygig' => $mygig, 'mycountry' => $mycountry)); |
Still no go, when I try to add the condition in the template I get
Warning: Invalid argument supplied for foreach() in [path]/includes/functions.php on line 3416 |
Which version of vb are you running?
|
4.1.2 Patch Level 3
I also got a server error with your code |
Quote:
ETA: There is something else you could try instead of adding my code: Code:
<vb:if condition="!in_array($GLOBALS['mygig'],$GLOBALS['mycountry'], true)"> |
Moving your first code down the page removed the server error but still not liking my condition
With that removed and using your condition I get Could not find phrase ' The following template conditional expression contains function calls: GLOBALS('mygig') GLOBALS('mygig') |
Oops - that's because I was being stupid. It should be $GLOBALS[] - I fixed the above code.
|
That clears the function calls but gives my original error
Warning: Invalid argument supplied for foreach() in [path]/includes/functions.php on line 3416 |
Hmm...and that error goes away when you remove the condtion?
|
yes it does.
I've tried it without show guest but still the same. PHP Code:
|
OK, what happens if you try this:
Code:
<vb:if condition="!in_array('XX', array('AL', 'AZ'), true)"> or this: Code:
<vb:if condition="!in_array('AL', array('AL', 'AZ'), true)"> |
They both parse, the second one does it's job ok
|
OK - if you still have the preRegister() call in there, what does this do:
Code:
<vb:if condition="!in_array($mygig, array('AL', 'AZ'), true)"> (I guess it will depend on if your country is one of AL or AZ - if it isn't, you could hard-code it in index.php). |
parse OK but doesn't work, I changed AZ to GB so I can see if it works.
|
Well, OK, I don't know. Seems like maybe it's not seeing the variables for some reason.
If you only want to use that ip check in the forumdisplay template, maybe try moving your code to a plugin using hook forumdisplay_complete. |
You mean this code
PHP Code:
|
Maybe this (assuming you don't use the country code elsewhere in the template): In a plugin using hook forumdisplay_complete:
PHP Code:
then in the template: Code:
<vb:if condition="$show[in_country]"><div class="padtop"> |
No still nothing
|
Ah, OK...maybe I was wrong - maybe the code you're getting back from geoip_country_code_by_addr() isn't what you expect? What happens if you set $mygig to a country code? Also, you could put
Code:
{vb:raw GLOBALS.mygig} in the template somewhere (not inside the if). |
Sorry for the long delay, had a major brain mail function and wiped my forumhome template. Just got the thing back up and running.
I set $mygig to GBbut no change. with raw globals in the template it displays my country code GB --------------- Added [DATE]1328913211[/DATE] at [TIME]1328913211[/TIME] --------------- I think it's working but not sure why. hook PHP Code:
PHP Code:
Thank you |
All times are GMT. The time now is 06:06 PM. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
![]() |
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|