Всем желающим прикрутить себе ItemStats с подсказками от WoWData посвящается.
Вложение:
itemstats.zip
Катастрофически не хватает времени, поэтому сейчас выкладываю, что есть. По ходу поправлю, вылезшие глюки, отписывайтесь.
Итак, прежде всего, что это такое? ItemStats – это система, позволяющая встроить подсказки из WoW на сайт. В ней предусмотрено довольно много, основное для меня – кэширование данных с сайтов, предоставляющих данных с целью ускорения загрузки страниц.
Для работы был взят ItemStats 1.5.5 (не забудьте справа выбрать English):
Информация,
Установка под различные системы,
Различные варианты для загрузкиДалее еще одна основа для работы –
Модификация ItemStats для Wowhead, она же используется в EQDKP Plus, но более ранней версии.
Ну и сама реализация ItemStats от
EQDKP Plus версий 0.6+
Приведённые выше ссылки для тех, кому по тем или иным причинам не понравится моя реализация и появится желание сделать все самим.
Дальше собственно выполнялась интеграция по информации топика:
Получение данных с сайта WoWData в XML.
Я прокомментировал все места в исходном коде, которые редактировал, так что при желании вы сможете сами подредактировать все, что нужно. Код более-менее причесан, так что не думаю, что возникнут какие-то проблемы с пониманиемПара нюансов:
Особенности работы с русскими кодировками при занесении данных в базу MySQL При занесении текстовых данных содержащих символы кирилицы в базу данных MySQL с помощью PHP-скрипта желательно указать в скрипте в какой кодировке данные должны сохраняться в базу данных. Такое указание осуществляется с помощью SQL-запроса:
Цитата:
SET NAMES кодировка
Кодировку необходимо указывать ту же, что используется в самой базе данных для хранения текста. Для того чтобы быть уверенным в том какая именно кодировка используется в БД для хранения текста, желательно явно указывать эту кодировку при создании таблиц, в противном случае будет использована кодировка по умолчанию установленная в настройках базы данных MySQL. Явное указание кодировки в которой хранятся данные в таблице осуществляется в момент создания таблицы с помощью SQL-запроса:
Цитата:
CREATE TABLE имяТаблицы (список полей) CHARACTER SET кодировка
Обычно для хранения символов кирилицы (символов русского языка) используют кодировку UTF-8 (обозначается в MySQL как utf8) или windows-1251 (обозначаемое как cp1251). Таким образом для создания таблицы хранящей текст в кодировке UTF-8 надо использовать SQL-запрос:
Цитата:
CREATE TABLE имяТаблицы (список полей) CHARACTER SET utf8
Для того чтобы при соединении с БД MySQL из PHP-скрипта использовалась необходимая кодировка сразу после установления соединения с базой необходимо отправить запрос с указанием какая именно кодировка будет использоваться при занесении/извлечении данных.
Пример подобных действий для соединения с БД в которой данные хранятся в кодировке UTF-8 приведен ниже:
Цитата:
mysql_connect('localhost', 'логин', 'пароль');
mysql_select_db('имяБД');
mysql_query('SET NAMES utf8');
Что нужно сделать перед интеграцией?Неплохо бы (на самом деле необходимо) просто установить себе обычный ItemStats 1.5.5 и заставить его работать. Я выкладываю лишь измененные файлы для поддержки WoWData
Полный дистрибутив ядра ItemStats можно скачать
тутУстановка по шагам
тутДля PHPBB3:
тутВообще информации по установке ItemStats под те или иные движки очень много (даже если по каким-то причинам не хотите смотреть на оригинальном сайте), так что просто поищите – это совершенно не проблема.
Если все и так работает, с английскими подсказками, то необходимо выполнить только шаги по переходу на WoWData.
Как настраивать поддержку WoWData?
1. Настройка config.php Установите ICON_STORE_LOCATION в значение, где у вас будут сохраняться (кэшироваться локально) иконки для предметов, загруженные в WoWData (нужен полный URL)
Настройте остальные параметры, чтобы можно было выполнить подключение к БД.
2. Настройка config_itemstats.phpПри необходимости поправьте настройки в config_itemstats.php. Они все задокументированы в исходнике.
3. Настройка config_wowdata.phpПараметры непосредственно связанные с получением данных от WoWData. Рекомендую не отключать получение данных на обоих языках и оставить включенным автоперевод названий, так как в противном случае можно просто не заморачиваться и использовать подсказки Wowhead. Двуязычные подсказки – это то, чем мне очень нравится WoWData.
Из особенностей настройки упомяну следующее: WoWData работает с Utf-8, чтобы реализовать совместимость с Win1251 я добавил в конфигурацию два параметра: один управляет исходной кодировкой БД, второй – языком на котором выводятся подсказки. К сожалению, полного тестирования провести так и не удалось, если возникнут проблемы с различными сочетаниями – пишите, разберусь.
4. Создание таблицы для хранения информации по предметамНазвание таблицы по умолчании
item_cache с
желаемой кодировкойЯ тестировал на Utf8, если возникнут проблемы с Win1251 дайте знать - разберусь
В принципе, скрипт сам пытается ее создать, если не находит, но от того, что вы ее создадите вручную хуже не будет.
Код такой:
Код:
CREATE TABLE IF NOT EXISTS `item_cache` (
`item_name` varchar(100) NOT NULL default '',
`item_id` varchar(100) default '0',
`item_lang` varchar(2) default '',
`item_link` varchar(100) default NULL,
`item_color` varchar(20) NOT NULL default '',
`item_icon` varchar(50) NOT NULL default '',
`item_html` text NOT NULL,
UNIQUE KEY `item_name` (`item_name`)) CHARACTER SET utf8;
Для win1251 замените utf8 на cp1251. (См. itemcache.php)
5. Настройка на сервереПосле всех подготовительных действий, выложите настроенные исходники к себе на сервер, заменяя уже существующие там (если есть).
Для корректной работы у вас должны быть две папки с разрешениями на чтение / создание / изменение / запись из скриптов:
xml_cache – хранит кэш предметов, для разгрузки сервера БД при повторных обращениях
wowdata_icons – хранит кэш иконок предметов, загруженных с сайта WoWData.
6. ИнтеграцияСуть подключения Itemstats на любой сайт / форум простая, необходимо выполнить две вещи:
- Пропустить сгенерированный движком сайта/форума контент через ItemStats, он выполнит замены в нужных местах
Код:
[item]предмет[/item]
- Дать пользователям возможность тем или иным способом вставлять такие теги в контент

Не забудьте, что помимо установки скриптов, надо будет подключить CSS (wowdata.css) и скрипт вывода подсказок (overlib.js). Для PHPBB, например, это делается в шаблонах.
Еще раз повторюсь: я выкладываю здесь файлы с изменениями ItemStats под WoWData, для корректной работы сначала необходимо установить ядро ItemStatsНу и чтобы не быть голословным, что все работает: [item]17182[/item] или лучше загляните, например,
сюдаP.S. Спелы, EQDKP и т.п. все в процессе, не хватает времени…
P.P.S. Большое спасибо разработчикам
WoWData и отдельное Святославу за поддержку в работе.