Как узнать браузер на php. Кроссбраузерная верстка в Drupal.

Опубликовано 2011.11.23

Верстая сайт очень часто, точнее почти всегда, встаёт вопрос о кроссбраузерности верстки. Каждый браузер отображает верстку как ему заблагорассудится. Если нормальные браузеры ещё туда-сюда, так интернет эксплорер-это тихий ужас...кошмар веб разработчиков... А теперь по теме. Кроссбраузерность достигается так: Определяем браузер. Под каждый браузер пишем свои хаки. Определить браузер поможет следующая функция:
  1. function cb_get_browser()
  2. {
  3. $ua = $_SERVER['HTTP_USER_AGENT'];
  4.  
  5. if (stristr($ua, 'Opera')) return 'Opera';
  6. if (stristr($ua, 'Firefox')) return 'Firefox';
  7. if (stristr($ua, 'Chrome')) return 'Google Chrome';
  8. if (stristr($ua, 'Safari')) return 'Safari';
  9. if (stristr($ua, 'MSIE')) return 'Internet Explorer';
  10. if (stristr($ua, 'Konqueror')) return 'Konqueror';
  11. if (stristr($ua, 'Iceweasel')) return 'Debian Iceweasel';
  12. if (stristr($ua, 'SeaMonkey')) return 'SeaMonkey';
  13.  
  14. // Браузеров очень много, все вписывать смысле нет, Gecko почти везде встречается
  15. if (stristr($ua, 'Gecko')) return 'Gecko';
  16.  
  17. // а может это вообще поисковый робот
  18. return 'Search Bot';
  19. }
Как ей пользоваться:
  1. <div>Ваша верстка.</div>
  2.  
  3. <?php
  4. //открываем php кавычки
  5. // функция cb_get_browser объявлена прямо тут,или подключена через include_once
  6.  
  7. $brow=cb_get_browser();
  8.  
  9. if($brow=='Opera'){
  10. ?>
  11. <link type="text/css" rel="stylesheet" media="all" href="style_for_opera.css" />
  12. <?
  13. }
  14.  
  15. if($brow=='Internet Explorer'){
  16. ?>
  17. <link type="text/css" rel="stylesheet" media="all" href="style_for_govnobrayzer.css" />
  18. <?
  19. }
  20. ?>
  21.  
  22. </?></?></?php>
Как всё это интегрировать в Drupal. Откройте папку темы.в ней файл template.php Прямо в него вставьте код функции cb_get_browser. Далее в функции themename_preprocess_html напишите следующее:
  1. function themename_preprocess_html(&$variables) {
  2.  
  3. //Тут уже может быть код темы
  4.  
  5. $brow=cb_get_browser();
  6.  
  7. if($brow=='Opera'){
  8. drupal_add_css(path_to_theme() . '/css/style_for_opera.css');
  9. }
  10.  
  11. if($brow=='Internet Explorer'){
  12. drupal_add_css(path_to_theme() . '/css/style_for_govnobrayzer.css');
  13. }
  14. }
Очищаем кэш. Если стили не подцепятся-попробуйте это.