NOTE: This article is for NATS 3. NATS 4 does not require any template changes for Geo-Targeting; it is done using show/hide rules
You can localize your pre-join form to a surfer's country. One form can
offer different join options to surfers from different countries.
Multiple Currency Setup
NATS records all transactions in its base currency. The base currency,
which is usually U.S. Dollars (USD), is set at installation and cannot
be changed. Although NATS records transactions in its base currency,
you can create join options, at your billers, in other currencies -- but first you must
tell NATS what exchange rate to use.
Go to the Configuration Admin, find the Currency Rates section
and enter the current exchange rate between your base currency and all
currencies you plan to use. You need to update this currency table
whenever currency rates change.
Join Options
Go to the Sites Admin and edit the site to localize. Create the join
options you want to offer. After saving each join option, record its
ID number.
Join Template
Still in the Sites Admin, still editing the site to localize, click the
Templates tab near the top of the screen. Edit the "join" template and
find the following line of Smarty code:
{html_options options=$join_options selected=$vars.optionid}
This code displays all of the site's join options on the site's join
form. To localize the join form, we must change the code to deal with
each option individually. Replace the line above with the lines below.
{foreach from=$join_options item=join_item key=join_option_number}
<option value="{$join_option_number}" {if $vars.optionid == $join_option_number}selected=selected{/if}>{$join_item}</option>
{/foreach}
The new code produces the same form as the old code, but it lets
us work with each $join_option individually. For each join option, we
put the join option's description in the Smarty variable, $join_item,
and the join option's ID number in the Smarty variable, $join_option_number.
We'll use both variables in just a moment.
NATS, configured with geo-targeting, stores the surfer's origin country
abbreviation in the Smarty variable, $geoip_country. Country abbreviation are
two-letters; for example: US for United States, DE for
Germany, and NL for Netherlands. (See the Notes section below for
the complete list of country abbreviations.)
The following code checks $geoip_country for a particular country
abbreviation, "DE"; if it matches, the code checks for a particular join
option number, "91"; if that matches too, join option 91 is shown. If
either the DE or 91 don't match, the code checks for DE and 91 again; if
either match, join option 91 isn't shown, but all other join options
are shown.
{if ($geoip_country == 'DE') && ($join_option_number == '91')}
<option value="{$join_option_number}" {if $vars.optionid == $join_option_number}selected=selected{/if}>{$join_item}</option>
{elseif ($geoip_country != 'DE') && ($join_option_number != '91')}
<option value="{$join_option_number}" {if $vars.optionid == $join_option_number}selected=selected{/if}>{$join_item}</option>
{/if}
For example: if you have three join options -- join option numbers 90,
91, and 92 -- the code above shows join options 90 and 92 to surfers
non-German surfers and join option 91 to German surfers.
In the above code, replace "DE" and "91" with the country abbreviation
and join option number, go to the code you replaced earlier,
and replace the line starting with "<option" with your customized code.
Checking for Two or More Countries or Join Options
To check for more than two country abbreviations or join option numbers,
add checks to your if statements.
{if (($geoip_country == 'DE') || ($geoip_country == 'NL')) && (($join_option_number == '91') || ($join_option_number == '92'))}
<option value="{$join_option_number}" {if $vars.optionid == $join_option_number}selected=selected{/if}>{$join_item}</option>
{elseif (($geoip_country != 'DE') && ($geoip_country != 'NL')) && (($join_option_number != '91') && ($join_option_number != '92'))}
<option value="{$join_option_number}" {if $vars.optionid == $join_option_number}selected=selected{/if}>{$join_item}</option>
{/if}
For the same three join options used in the previous example -- join
option numbers 90, 91, and 92 -- the code above shows join option 90 to
surfers outside Germany or the Netherlands and join options 91 and 92 to
surfers inside Germany or the Netherlands.
You can check for as many additional country abbreviations or join
option numbers by adding a logical-or statement and a conditional
to both {if} statements. (A logical-or is the "||" and a conditional is
the statement between parenthesis.)
Cascades
On the surfer pre-join form, the Payment Type box lists this site's
cascades. Our Geo-Targeting Cascades article explains how to
localize cascades.
Notes
- ISO 3166 Alpha 2 -- The International Standards Organization's list of country abbreviations