Форум → Программирование → PHP для идиотов → Динамическое содержание страницы.
Динамическое содержание страницы.
-
Уважаемые форумчане. Прошу компетентного совета по вот какому вопросу:
Есть сайт с блочной версткой (header, content, sidebar,footer), на сайте установлен модуль GeoIP для определения страны посетителя. Суть задачи состоит в том, что-бы подгружать блоки header и sidebar свой для каждой отдельно взятой страны, при этом не трогая модули content и footer т.к они одинаковы для всех пользователей. Каким способом это лучше всего реализовать? Заранее спасибо за советы. -
-
30 ноября 2009 г. 15:56, спустя 9 минут 3 секунды
перед присвоением переменных проверять принадлежание к стране/городу, и присваивать то что нужно для данной страны/города. )Спустя 131 сек.
if (geoip($IP)==ru) {
$header="content for russions men!";
}
….
else {
$header="dedfault content";
}
что то в этом роде )
илиswitch (geoip($IP)) {
case "ru":
echo "RUSSIONS content";
break;
case "eng":
echo "england sucks men";
break;
case "it":
echo "for real mafiozy content";
break;
}
меня больше интересует как быть если мы делим по городам, ведь городов большая куча… и через оператор ветления хуево будет… :( -
30 ноября 2009 г. 15:54, спустя 23 часа 57 минут 52 секунды
Ого, оперативность :)
MD5, я так понял собрать ветвление на CASE-ах? И еще вопрос тогда… перед каждым вызовом этих блоков ставить одну и ту же проверку или можно загнать результат в кукис и оперировать ими? -
30 ноября 2009 г. 15:57, спустя 2 минуты 16 секунд
$country = array(
'ru' => array('header' => '', 'footer' => ''),
'en' => array('header' => '', 'footer' => ''),
);
$header = isset($country[geoIP()]) ? $country[geoIP()]['header'];https://smappi.org/ - платформа по созданию API на все случаи жизни -
30 ноября 2009 г. 15:58, спустя 1 минуту 29 секунд
$country = array(
'ru' => array('header' => '', 'footer' => ''),
'en' => array('header' => '', 'footer' => ''),
);
$header = isset($country[geoIP()]) ? $country[geoIP()]['header'];
это уже намного лучше ) -
30 ноября 2009 г. 16:08, спустя 9 минут 46 секунд
Можно вообще в виде ф-ии:
function getHTML()
{
$country = array(
'ru' => array('header' => '', 'footer' => ''),
'en' => array('header' => '', 'footer' => ''),
'default' => array('header' => '', 'footer' => ''),
);
return isset($country[geoIP()]) ? $country[geoIP()] : $country['default'];
}
$header = getHTML()['header'];Спустя 53 сек.а, черт, это же php, тогда так:$html = getHTML();
$header = $html['header'];Спустя 65 сек.или так:
function getHTML($block)
{
$country = array(
'ru' => array('header' => '', 'footer' => ''),
'en' => array('header' => '', 'footer' => ''),
'default' => array('header' => '', 'footer' => ''),
);
return isset($country[geoIP()][$block]) ? $country[geoIP()][$block] : $country['default'][$block];
}
$header = getHTML('header');https://smappi.org/ - платформа по созданию API на все случаи жизни -
30 ноября 2009 г. 16:05, спустя 23 часа 57 минут 12 секунд
Т.е при каждом инклуде модуля вызывать эту функцию? -
30 ноября 2009 г. 16:09, спустя 4 минуты 16 секунд
PyMbIH, какого модуля? Вы о блоках?…при этом не трогая модули content и footer….
https://smappi.org/ - платформа по созданию API на все случаи жизни -
30 ноября 2009 г. 16:21, спустя 11 минут 39 секунд
PyMbIH, какого модуля? Вы о блоках?…при этом не трогая модули content и footer….
Совершенно верно. Прошу прощения за ошибку.
Я имел ввиду перед каждым вызовом блока header или sidebar ставить функцию проверки, или как-то подвязать все через куки? -
30 ноября 2009 г. 16:37, спустя 15 минут 53 секунды
PyMbIH, а как вам хотелось бы?https://smappi.org/ - платформа по созданию API на все случаи жизни -
30 ноября 2009 г. 16:51, спустя 13 минут 57 секунд
PyMbIH, а как вам хотелось бы?
Мне бы хотелось "как правильно" по мнению профессиональных программистов. :) -
30 ноября 2009 г. 16:59, спустя 7 минут 42 секунды
PyMbIH, я бы завел для этого дела различные шаблоны, типа:
/ru/header.html
/ru/footer.html
/en/header.html
/en/footer.html
…
и при выводе бы обращался к ф-ии, которая бы мне инклудила определенный шаблон
function getHTML($block) {
$path = '/'.geoIP().'/'.$block.'.html';
$html = @file_get_contents($path);
return $html ? $html : false;
}
echo getHTML();
Если юзаются какие либо шаблонизаторы, то можно им передавать не контент, а путь до файла, а потом выполнять инклуды самого шаблонизатора… вообще идей много можно нагенерировать.
Если бы у меня такая была задача, то я бы отнаследовался от шаблонизатора и добавил в него методы по автоматическому определению какие шаблоны ему жеватьhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
30 ноября 2009 г. 17:01, спустя 2 минуты 56 секунд
Спасибо большое за советы! Теперь хоть буду знать в какую сторону копать.
Пожалуйста, авторизуйтесь, чтобы написать комментарий!