ФорумПрограммированиеPHP для идиотов → Динамическое содержание страницы.

Динамическое содержание страницы.

  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 30 ноября 2009 г. 4:44

    Уважаемые форумчане. Прошу компетентного совета по вот какому вопросу:
    Есть сайт с блочной версткой (header, content, sidebar,footer), на сайте установлен модуль GeoIP для определения страны посетителя. Суть задачи состоит в том, что-бы подгружать блоки header и sidebar свой для каждой отдельно взятой страны, при этом не трогая модули content и footer т.к они одинаковы для всех пользователей. Каким способом это лучше всего реализовать? Заранее спасибо за советы.
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 30 ноября 2009 г. 4:47, спустя 3 минуты 37 секунд

    операторами ветвления
    все умрут, а я изумруд
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 30 ноября 2009 г. 4: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;
    }

    меня больше интересует как быть если мы делим по городам, ведь городов большая куча… и через оператор ветления хуево будет… :(
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 30 ноября 2009 г. 4:54, спустя 23 часа 57 минут 52 секунды

    Ого, оперативность :)

    MD5, я так понял собрать ветвление на CASE-ах? И еще вопрос тогда… перед каждым вызовом этих блоков ставить одну и ту же проверку или можно загнать результат в кукис и оперировать ими?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 30 ноября 2009 г. 4:57, спустя 2 минуты 16 секунд



    $country = array(
       'ru' => array('header' => '', 'footer' => ''),
       'en' => array('header' => '', 'footer' => ''),
    );

    $header = isset($country[geoIP()]) ? $country[geoIP()]['header'];

    adw/0
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 30 ноября 2009 г. 4:58, спустя 1 минуту 29 секунд




    $country = array(
       'ru' => array('header' => '', 'footer' => ''),
       'en' => array('header' => '', 'footer' => ''),
    );

    $header = isset($country[geoIP()]) ? $country[geoIP()]['header'];



    это уже намного лучше )
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 30 ноября 2009 г. 5: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');
    adw/0
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 30 ноября 2009 г. 5:05, спустя 23 часа 57 минут 12 секунд

    Т.е при каждом инклуде модуля вызывать эту функцию?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 30 ноября 2009 г. 5:09, спустя 4 минуты 16 секунд

    PyMbIH, какого модуля? Вы о блоках?
    …при этом не трогая модули content и footer….
    adw/0
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 30 ноября 2009 г. 5:21, спустя 11 минут 39 секунд


    PyMbIH, какого модуля? Вы о блоках?
    …при этом не трогая модули content  и footer….


    Совершенно верно. Прошу прощения за ошибку.
    Я имел ввиду перед каждым вызовом блока header или sidebar ставить функцию проверки, или как-то подвязать все через куки?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 30 ноября 2009 г. 5:37, спустя 15 минут 53 секунды

    PyMbIH, а как вам хотелось бы?
    adw/0
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 30 ноября 2009 г. 5:51, спустя 13 минут 57 секунд


    PyMbIH, а как вам хотелось бы?

    Мне бы хотелось "как правильно" по мнению профессиональных программистов. :)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 30 ноября 2009 г. 5: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();


    Если юзаются какие либо шаблонизаторы, то можно им передавать не контент, а путь до файла, а потом выполнять инклуды самого шаблонизатора… вообще идей много можно нагенерировать.

    Если бы у меня такая была задача, то я бы отнаследовался от шаблонизатора и добавил в него методы по автоматическому определению какие шаблоны ему жевать
    adw/0
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 30 ноября 2009 г. 6:01, спустя 2 минуты 56 секунд

    Спасибо большое за советы! Теперь хоть буду знать в какую сторону копать.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!