Могу ли я использовать geoip_country_code_by_name для показа определенного контента более чем в одну страну?
В настоящее время я использую функцию 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 ответ
$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;
В качестве альтернативы, если вы заказали значение, которое вы возвращаете из БД или где-либо еще, вы можете прочитать первую запись в массиве так: $aDefault =& $content[array_keys($content)[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;