Могу ли я использовать код страны geoip по названию для предоставления определенного контента нескольким странам?
В настоящее время я использую функцию php geoip_country_code_by_name для предоставления различного контента для разных стран из массива, который выглядит следующим образом:
<?php
$content = array(
'GB' => array(
'meta_description' => "Description is here",
'social_title' => "Title here",
'country_content_js' => "js/index.js",
),
'BR' => array(
'meta_description' => "Different Description is here",
'social_title' => "Another Title here",
'country_content_js' => "js/index-2.js",
),
);
?>
Но у меня есть только конкретный контент для Бразилии и Великобритании. Я хочу, чтобы в любой другой стране, получающей доступ к странице, предоставлялся массив контента по умолчанию, который будет отличаться от BR и GB.
Есть ли способ создать правило, которое предоставляет набор контента по умолчанию для любой страны, которая не указана в моем массив?
1 answers
$content = array(
'GB' => array(
'meta_description' => "Description is here",
'social_title' => "Title here",
'country_content_js' => "js/index.js",
),
'BR' => array(
'meta_description' => "Different Description is here",
'social_title' => "Another Title here",
'country_content_js' => "js/index-2.js",
)
);
Вы можете ссылаться на ключ, используя другой ключ "По умолчанию", например;
$content['Default'] =& $content["GB"];
var_dump($content);
exit;
Альтернативно, если вы заказали возвращаемое значение из базы данных или где-либо еще, вы могли бы прочитать первую запись в массив следующим образом; $По умолчанию=&$содержимое[array_keys($содержимое)[0]];
Или вы можете определить язык по умолчанию и прочитать этот ключ массива, однако, в отличие от предыдущего метода, он должен быть в массиве.
// define default
define("DEFAULT_LANGUAGE", 'GB');
// would need to guarentee its there
$aDefault =& $content[DEFAULT_LANGUAGE];
Наконец, вы могли бы объединить вышесказанное, чтобы, если он не может найти этот язык вы могли бы просто использовать первый доступный;
// define, can be placed in an included config folder
define("DEFAULT_LANGUAGE", 'GB');
$content = array(
'GBs' => array(
'meta_description' => "Description is here",
'social_title' => "Title here",
'country_content_js' => "js/index.js",
),
'BR' => array(
'meta_description' => "Different Description is here",
'social_title' => "Another Title here",
'country_content_js' => "js/index-2.js",
)
);
// does the default language exist?
if( isset($content[DEFAULT_LANGUAGE]) ){
// yes, create a default array key and reference the required element in the array
$content['Default'] =& $content[DEFAULT_LANGUAGE];
}else{
// no, create a default array key and reference the first element
$content['Default'] =& $content[array_keys($content)[0]];
}
var_dump($content);
exit;