Определение ОС и браузера пользователя

 
Посетитель
small user social cms
Сообщений: 47
Ребят, кто может помочь разобраться с реализацией сего решения?
Запись юзерагента в БД реализовал уже давно, в шаблоне даже сделал вывод {$comment.useragent} строкой, но нужно вывести картинками браузеров и ОС. Был у меня такой плагин под Wordpress, не могу разобраться как его адаптировать под Инстант. Кто поможет?
Нужно примерно следующее:
Определение ОС и браузера пользователя
Редактировалось: 1 раз (Последний: 5 октября 2011 в 12:02)
Посетитель
small user social cms
Кубок зрительских симпатий
Сообщений: 81
del:
нужно вывести картинками браузеров и ОС
Наверное примерно так:
Код PHP:
  1. {if $comment.useragent == 'ЗНАЧЕНИЕ'}<img src="ССЫЛКА_НА_КАРТИНКУ">{/if}
Редактировалось: 1 раз (Последний: 5 октября 2011 в 15:32)
Реклама
cms
Посетитель
small user social cms
Сообщений: 47
DagStudent:
Наверное примерно так:
Код PHP:
1 {if $comment.useragent == 'ЗНАЧЕНИЕ'}<img src="ССЫЛКА_НА_КАРТИНКУ">{/if}
Шутку оценил. Если что, useragent - это строка, имеющая примерно следующее значение:
Код PHP:
  1. Mozilla/5.0 (X11; Arch Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0
или еще пример:
Код PHP:
  1. Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.187 Safari/535.1
Как я понял, Вы предлагаете задать условия для каждого сочетания "браузер + его версия + ОС + ее версия" отдельную картинку? Определение каждого браузера и ОС в отдельности занимает более 1500 строк кода. Теперь в голове себе представьте множество сочетаний той или иной ОС с тем или иным браузером, да еще и с различными версиями. Сколько их получится? А сколько тогда нужно приведенных Вами условий написать? Вот Вам примеры строк юзерагентов, на всякий случай: http://user-agents.org
Прошу отписаться в теме тех, кто смыслит в программировании, в частности PHP, а также разбирается во внутренней структуре Инстанта.
Посетитель
small user social cms
Медаль
Сообщений: 226
del, Раньше была такая функция - get_browser(), но ИМХО сегодня она бесполезна.

Вы наверное и сами видели сколько там вариантов строк юзерагентов.
Плюс сегодня многие браузеры имеют плагины позволяющие менять эту строку на что угодно.

Собирать условия для цельной строки не имеет смысла. Единых правил у этой строки тоже нет.

- Что можно предложить?
- Если версии агентов не важны, перед записью в базу парсить строку на предмет знакомых слов (предварительно составив их список)
Посетитель
small user social cms
Сообщений: 47
Max, у меня у самого стоит подмена юзерагента в Firefox. Но это не мешает абсолютно. Про условия целой строки никто и не говорит, это DagStudent просто пошутил.
Браузеры, ОС и их версии - все это определяется без проблем (я в первом посте привел скриншот страницы с плагином для Wordpress, там определяется абсолютно все: браузер и версия, тип ОС и ее версия).

Вот архив скрипта для определения ОС и браузера: http://instantcms.ru/users/files/download1434.html
Вопрос в том, как это адаптировать под Инстант.
P.S. Скрипт изменен, не пытайтесь его на WP поставить, работать не будет, я оттуда уже половину функционала убрал за ненадобностью. Оттуда можно взять только само определение браузеров и осей, т.к. ни в одном скрипте я более полного списка еще не встречал.
Редактировалось: 1 раз (Последний: 5 октября 2011 в 16:47)
Посетитель
small user social cms
Медаль
Сообщений: 226
del:
...Оттуда можно взять только само определение браузеров и осей, т.к. ни в одном скрипте я более полного списка еще не встречал.
Кроме полного описания оказывается и сам код полностью рабочий и его можно легко использовать.

Нужная строка для вывода формируется в переменной $ua
Редактировалось: 1 раз (Последний: 5 октября 2011 в 19:38)
Посетитель
small user social cms
Сообщений: 47
Max, ну, код то рабочий, я просто сказал, что не стоит его пытаться подключить как плагин к WP, т.к. я его там покрамсал прилично уже.
Я не смог разобраться, как организовать получение из БД строки с юзерагентом, и разобрав ее по кусочкам вывести в шаблоне комментариев. Плохо понимаю структуру Инстанта, да и со Смарти не работал. Я пока только в коде компонента комментариев дописал в запрос sql получение строки, а в шаблоне комментариев вывел ${comment.useragent} всплывающей подсказкой к аватару комментатора. Хотелось бы разобраться, как сделать то, что я описал выше, т.е. вывод под аватаром картинок с всплывающими подсказками с версиями ОС и браузеров.
Посетитель
small user social cms
Медаль
Сообщений: 226
Я так понял у тебя уже все сделано.
Все что тебе осталось:
Перед тем как передать переменную $useragent смарти, прогнать ее через цепочку функций с твоего файла.
На выходе - в переменной $ua и будет нужная тебе строка (уже картинки с подписями os и браузера) которую и отдай смарти вместо прежнего значения $useragent.
Посетитель
small user social cms
Сообщений: 47
Max, да, именно в этом у меня и загвоздка. Я не могу сообразить как подключить скрипт к компоненту комментариев и передать ему переменную $useragent.
Посетитель
small user social cms
Медаль
Сообщений: 226
del:
Я не могу сообразить как подключить скрипт к компоненту комментариев и передать ему переменную $useragent.
Подключить - include, передать переменную - либо как аргумент функции либо объяви ее глобальной, что бы функция вернула значение - return
Редактировалось: 1 раз (Последний: 6 октября 2011 в 17:11)
Посетитель
small user social cms
Сообщений: 47
Max:
Подключить - include, передать переменную - либо как аргумент функции либо объяви ее глобальной, получить - return
По поводу include и require я в курсе, про возвращаемое значение функции тоже. Просто не могу сообразить, в каком месте там это вызывать, и какой аргумент передавать в сам скрипт (насколько я понял, это $con['useragent']).
Посетитель
small user social cms
Сообщений: 47
Так... Есть компонент comments, есть модуль mod_comments. И с чем работать?
Строку я получаю сейчас через модуль, вывожу в шаблон.
Редактировалось: 1 раз (Последний: 6 октября 2011 в 17:19)
Посетитель
small user social cms
Медаль
Сообщений: 226
Там же где переменная отправляется в БД. Точнее прямо перед теми строками.

т.е. в БД уже надо записать готовую строку для вывода картинок.
Посетитель
small user social cms
Сообщений: 47
Эм... не понял. В БД то зачем записывать строку для вывода картинок? В БД как раз хранится строка юзерагента. А уже разбирая ее нужно вывести картинки.
Вот модуль комментариев: http://pastebin.com/5m3Xqi8C
Там я пытаюсь заинклудить скрипт и вызвать функцию. Но таким способом не получается. Даже если я задам так:

$useragent_title=$con['useragent'];
$con['useragent']="123";

то будет выведена все равно строка с юзерагентом, а не "123". ЧЯДНТ?
Пробовал и global $useragent_title=$con['useragent'];
Редактировалось: 1 раз (Последний: 6 октября 2011 в 17:35)
Посетитель
small user social cms
Медаль
Сообщений: 226
del:
В БД то зачем записывать строку для вывода картинок? В БД как раз хранится строка юзерагента. А уже разбирая ее нужно вывести картинки.
Представь страницу с сотней комментов.
Для каждого коммента, при каждом просмотре придется вычислять то что можно получить 1 раз и потом просто брать с базы. Зачем же делать 100 разборов строки если можно сделать 1 ?

зы. Код сейчас гляну
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.