Boost Posted August 15, 2022 Posted August 15, 2022 Hi, Is there a plugin or a tutorial for creating geo-targeted content? Can PW handle that? Thanks
Jan Romero Posted August 15, 2022 Posted August 15, 2022 Sure, just copy and paste this to your site $http = new WireHttp(); $region = $http->getJson("http://ip-api.com/json/{$session->getIP()}?fields=city,countryCode"); user()->setLanguage($region['countryCode']); //well… it’s not *this* easy. you’ll have to connect your languages to ISO 3166-1 alpha-2 country codes somehow echo '<marquee><blink>' . sprintf(__('Hot milfs looking to hook up in %s!'), $region['city']) . '</blink></marquee>'; 4
Boost Posted August 16, 2022 Author Posted August 16, 2022 Thanks, but I'm not sure if that covers the case. I believe that showing, say, a different homepage for US users should be simple, right? But what about displaying different content? I mean, the “page” remains the same; what changes, for example, is a paragraph or text on that page. Is that a possibility?
Jan Romero Posted August 16, 2022 Posted August 16, 2022 Well, it’s kind of a broad question. If you’re talking about having different language versions of your pages, ProcessWire comes with built-in support for managing that content. You’ll have to figure out whom to show which language content yourself, though, for example by using the Accept-Language header. If you only need region-specific content and no multi-language, you could abuse ProcessWire’s language system for that, too. If you need both dimensions, you’ll have to figure out how to manage all that content. Do you need everything for every region and language, or maybe just a sprinkle here and there such as “this site is not available in your country thanks to the S. Fischer Verlag GmbH”? I guess the answer is, it’s up to you? ProcessWire doesn’t have a built-in feature that lets you connect content to predefined regions or detects users’ regions for you, but you’ll want to decide these things for yourself anyway. My example used an external service that looks up IP adresses. There are drawbacks to that technique that you may not want. Other options include just asking the user or using the browser’s geolocation API (AFAIK this will only give you coordinates, so again you’ll need to use a service to get the “region”, or calculate it yourself if you’re into geomatics). 2
Boost Posted August 16, 2022 Author Posted August 16, 2022 Thanks. It all makes sense. Because I'm evaluating PW for my company, I'd like to know what is "ready" and what we'll have to "figure out" ourselves since it involves costs.
Pixrael Posted August 16, 2022 Posted August 16, 2022 I think in pages that need this paragraph changes you can use different fields for each region, and render the field according to the current region. Ex. body_america, body_europe, etc. You can create a function that determines to which region it belongs according to the country. If you have a license for ProFields you can use Textareas field type to handle that more easily. Pseudo code: $http = new WireHttp(); $country = $http->getJson("http://ip-api.com/json/{$session->getIP()}?fields=countryCode"); $region = getRegion($country); echo $page->body_$region; function getRegion($country) { // Set a default $output (europe) // Using an in_array, switch, etc. find the current related region to override it (america, asia, africa, etc.) return $output; } 2
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now