ФОРУМ Игромания и киномания – сообщество пользователей игрового портала Igromen.Do.Am.
Форум - это место, где можно обсудить игровые новости и обновления, задать вопросы, разместить объявления и сообщения, дать объявления о предоставляемых вами услугах, поделиться полезной информацией и способами,
вступить в команду портала (на должности модератора, журналиста), а также найти себе друзей и товарищей для общения и совместного времяпровождения в играх.
Все действия (общение и размещение информации) регламентируются правилами форума.
Активация API. Включение возможности использования API проводится в панеле управления сайтом в разделе “Настройки” > “Общие настройки” > “Разрешить использование API”.
Для установки своего собственного ключа скопируйте этот букмарклет и вставьте его в адресную строку браузера, после чего Вы сможете редактировать API ключ.
Использовать API при наличии ключа нужно посредством GET-запроса следующим образом: http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172?apikey=APIKEY
То есть к запросу просто добавляем параметр apikey с нашим ключом. Ключ нужен в том случае, если вы не хотите, чтобы кто угодно имел доступ к API вашего сайта.
3. Описание API, как использовать. На данный момент API доступен в 11 модулях: blog, board, dir, gb, load, news, photo, publ, stuff, forum, index. Советуем внимательно ознакомиться с инструкцией по описанию использования базового API.
Зачем нужно API? Допустим, у нас есть свой сайт, по адресу blog.ucoz.ru. Берём какую-нибудь ссылку на сайте, например, ссылку на материал (модуль Блог): http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172 После доменного имени в ссылку добавляем слово "api", вот так: http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172 То есть фактически, для использования API (если он активирован для сайта) достаточно вписать префикс /api/ между адресом сайта и именем модуля.
Но для чего? Перейдём по полученной ссылке (то есть http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172). Вместо привычного шаблона система выдает страницу с XML-кодом. Всё то же самое, только используется не шаблон страницы, а формируется XML-код.
Зачем нам XML-код? Допустим, нам необходимо узнать название материала с помощью php-скрипта или с js-скрипта (для чего - узнаете позже). При обычных условиях (не имея API), нам бы пришлось парсить полученный текст страницы с помощью регулярных выражений. Составление регулярных выражений - очень сложное занятие. С XML-кодом же намного проще: его не надо парсить регулярными выражениями, он структурирован, стандартизирован, никакой зависимости от оформления исходного кода страницы. Т.к. XML стал де-факто стандартом в передаче данных, то работать с ним можно на любом языке программирования, как PHP, так и JS.
Далее в статье под парсингом данных мы будем подразумевать разбор XML-кода с данными.
4. Парсинг данных через PHP.
Подключить услугу можно из панели управления: Платные услуги » Купить отдельную услугу » PHP » Возможность использования PHP-скриптов:
Данные для входа на FTP-сервер для загрузки PHP-скриптов вы получите увидеть здесь:
1. Скрипт обязан содержать закрывающий тег PHP - ?> 2. Скрипт должен быть в кодировке UTF-8, иначе возникнут проблемы (т.к. uCoz полностью на UTF-8). 3. Скрипт выводит данные в формате JSON, примерно такого вида: ({"SCRIPTDATA":"текст","ERROR":""}) То есть всё, что выводит скрипт, будет автоматически преобразовано в JSON. Чтобы это отменить, необходимо первой строчкой в скрипте написать $___notjson = 1;
Попробуем получить название этого материала: http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172
Code
<?php
$___notjson = 1;
$context = stream_context_create( // создаём контекст array( 'http' => array( // в качестве транспортного протокола будет использоваться http:// 'method' => 'GET', // метод запроса - GET 'header' => 'Content-Type: text/xml', // xml 'timeout' => 8 // время на соединение с сервером - 8 сек ) ) );
// разбираем полученный XML в массив $xml $xml = xmlrpc_decode($page, 'utf8');
// отображаем какую-нибудь информацию из полученного
// например, заголовок материала echo $xml['TITLE'];
// или посмотрим всё содержимое массива print_r($xml);
?>
echo $xml['TITLE'] отобразит нам Итоги 2010 print_r($xml) отобразит нам весь массив с данными этого материала, т.е.:
Code
Array ( [MATERIAL_ID] => 172 [TITLE] => Итоги 2010 [MESSAGE] => <div style="text-align: justify;"> <img alt="" src="http://lu-work.ucoz.com/blogpics/ny_2011.jpg"><br><br>Вот и наступил 2011 год. В такие дни всегда хочется оглянуться и проанализировать что же было сделано за прошедший год. <div><br>Если ничего не падало, не обновлялось по несколько суток, не взрывалось и не искрило - это вовсе не значит что ничего сделано не было. На самом деле у нас этот год был годом вдумчивого развития, в определенной степени экстенсивного - нам уже как-никак 5 лет, почтенный для интернета возраст :)<br>Повысилась безопасность и стабильность работы системы, выросло комьюнити, расширилась функциональность, гораздо лучше стала работать техподдержка.<br><br>Итак, что же по пунктам можно отметить, и что вспоминается за прошедший 2010 год?<br><br><ul><li>Общий трафик системы достиг ста миллионов хитов в сутки.*</li></ul><img alt="" src="http://meddy.ucoz.kz/one.png"><br><div align="center"><font color="#696969"><i>Общий трафик системы</i></font></div><div style="text-align: left;" align="center"><font color="#696969"><i><br></i></font></div><div style="text-align: left;" align="center"><font color="#696969"><i> <span style="font-size: 7pt;">* без учета поисковых и прочих известных ботов</span></i></font></div><ul><li> Топ100 системы замыкают сайты с посещаемостью 10 000 человек в сутки (в первый год работы системы, замыкающие сайты имели посещаемость 100 человек в сутки). Также на первые позиции в топе стали попадать нерусскоязычные ресурсы.</li></ul><div align="center"><img alt="" src="http://meddy.ucoz.kz/ru-sitecount-in-top.png"><br><font color="#a9a9a9"><i>Рост числа русскоязычных сайтов за 2010<br><br><img alt="" src="http://meddy.ucoz.kz/de-sitecount-in-top.png"><br>Рост числа немецкоязычных сайтов за 2010<br></i></font></div><br> <br> <div style="border: 1px solid rgb(232, 155, 136); background-color: rgb(255, 239, 232); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Количество сайтов в системе превысило миллион. Причем это произошло дважды, так как традиционный летний спад в сети и придирчивое вычищение дорвеев и мертвых сайтов уменьшало эту цифру.</li><li>Мы стали более открыты и общительными с нашими пользователями. В том числе нерусскоязычными. У нас появились страницы в Facebook на русском, английском, венгерском, испанском и немецком языках. А так же англо-, и немецко- язычные твиттеры. </li><li> В системе прошло 3 конкурса - совместный с Microsoft <a target="_blank" href="http://konkursi.ucoz.ru/news/opredeleny_pobediteli_konkursa_ie_reload_v_nominacii_za_luchshij_obzor_posvjashhennyj_ie8_luchshij_webslice/2010-03-23-17">"IE Reload",</a><b> </b>эпистолярный <a target="_blank" href="http://win.ucoz.ru/news/objavlenie_rezultatov_konkursa_obzor/2010-10-25-7">"Обзор"</a> и <a href="http://win.ucoz.com/news/winners/2010-10-25-7#1" target="_blank">Best uCoz Website</a> на лучший нерусскоязычный сайт, да и сам <a target="_blank" href="http://win.ucoz.ru/">конкурсный сайт</a> у нас пережил второе рождение. <img src="http://s102.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile" /> <i>Кстати, скоро после Нового года стартует еще один конкурс, те, кто умеет или хочет научиться работать с видео - готовьтесь!</i></li><li>Вышел в свет <a target="_blank" href="http://book.ucoz.ru/">учебник по системе</a>. Очень быстро разошелся по книжным полкам страны (и не одной!) и вышел еще раз - уже вторым, дополненным изданием. Также появилась его электронная версия. (В начале 2011 года ожидается его англоязычная версия.)</li><li>Добавлены локализации на румынском языке и иврите (<i>последняя на текущий момент в бета версии</i>).</li><li>В альфа-версии появилась возможность использования PHP на uCoz. (Сейчас идет тестирование, открытый запуск ожидается в январе.)</li></ul></div><br> <div style="border: 1px solid rgb(255, 216, 0); background-color: rgb(255, 247, 205); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Модуль интернет-магазина очень сильно расширился внешним функционалом, встроенными платежными сервисами и внутренними опциями. С февраля он выходит из беты и будет стоить 2$ в месяц.</li><ul><li>Экспорт товаров различные форматы: XML, CSV</li><li>Встроенные способы автоматизированной оплаты: Webmoney, Робокасса, Paypal, SMS (Smscoin), Банковские карты (Liqpay)<br></li><li>Импорт товаров из Excel</li><li>Гибкая и настраиваемая система скидок для покупателей</li><li>Возможность автозаполнения описания из готового каталога товаров и автоматический поиск картинок для товара.</li><li>Выгружаемый прайс-лист формата MS Excel</li><li>Анимированная корзина<br></li><li>У товаров появились опции - цвет, размер, комплектация и т.д.</li><li><a target="_blank" href="http://forum.ucoz.ru/forum/43-32287-1">Подробный список всех изменений</a>.</li></ul></ul></div><br> <div style="border: 1px solid rgb(157, 189, 255); background-color: rgb(225, 235, 255); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Появилась возможность пополнения аккаунта на uCoz при помощи SMS из 62-х стран в том числе Казахстан, Грузия, Литва, Латвия, Эстония, Израиль, Германия и т.д.<br></li><li>Появился индивидуальный фильтр от спама: сообщения с указанными адресами добавляться не будут. </li><li>Возможность разрешить гостям оставлять комментарии.</li><li>В нашем <a href="https://domain.ucoz.com" target="_blank">сервисе по регистрации доменов</a> стали доступны новые доменные зоны и системы приема платежей.</li><li>В Webtop'е появилось новые собственные приложение "Менеджер задач" и "Учет рабочего времени". Добавились немецкий, болгарский и венгерский языки.</li><li>Появилась платная служба техподдержки. Значительно улучшилась работа всей службы технической поддержи - повысилось качество и скорость ответов.</li></ul></div><br> <div style="border: 1px solid rgb(0, 204, 0); background-color: rgb(225, 255, 215); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Появился интегрированный в систему сервис сокращения ссылок <a target="_blank" href="u.to">u.to</a> и вариант работы с проксированием внешних ссылок.</li><li>Появился проект <a href="http://partner.ucoz.ru" target="_blank">partner.ucoz.ru</a>.</li><li>Появились специальные <a target="_blank" href="http://browsers.ucoz.ru/">сборки браузеров </a>с <a target="_blank" href="http://utoolbar.ucoz.net/">тулбарами</a> для облегчения работы с сайтом.</li></ul></div><br><div style="border: 1px solid rgb(181, 181, 181); background-color: rgb(244, 244, 244); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Проапгрейдилась железная составляющая многих серверов и появились две новые площадки их размещения.</li></ul></div><br>
<div style="border: 1px solid rgb(218, 30, 226); background-color: rgb(254, 230, 255); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Редактор шаблонов стал более наглядным, появилась подсветка кода.<br></li><li>Добавилась настройка для картинок типа "Максимальные размеры картинки", (а старая осталась как "Размеры уменьшенной копии").</li><li>Добавлена форма для отправки сообщения на снятие таблички +18.</li><li>Добавлена форма для отправки сообщений для разблокировки сайта.</li><li>При добавлении/удалении в любом модуле сделано автоматическое обновление дискового пространства.</li><li>Добавлена опция для отрицания в настройках информеров при указании категорий.</li><li>Добавлена возможность вывода аватаров пользователей при выводе списка материалов в модулях (блог, новости).</li><li>В доске объявлений сделана возможность фильтрования неактивных и истекших материалов.</li></ul></div> <br> <div style="border: 1px solid rgb(30, 226, 124); background-color: rgb(226, 250, 238); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Настроена правильная реакция на несуществующие url в модулях.</li><li>Внедрен 301 редирект для склейки имени сайта с www и без него.<br></li><li>Внесены изменения, которые не дают "плодиться" дубликатам контента внутри сайта.</li></ul></div> <br> <div style="border: 1px solid rgb(255, 149, 83); background-color: rgb(255, 240, 254); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Произошли изменения в работе сессий, важные для аккаунта. С точки зрения и пользователя сайта, и владельца сайта сессии стали более безопасными. Число одновременно активных сессий одного пользователя гарантированно - одна. А долгое редактирование документа не приводит больше к "вылету по таймауту". (<i>Это большое и сложное системное изменение.</i>)</li><li>Внедрено кеширование, что очень снизило нагрузку на сервера.</li><li>Реализовывались анти-ддос методы. (Различные сервера и сайты на uCoz постоянно подвергаются ддос-атакам разной степени сложности и интенсивности, однако 99% из них никто из пользователей не замечает, сайты продолжают работать в штатном режиме.)</li><li>Изменения группы пользователя и поступление новых ЛС теперь видны сразу (при следующем обновлении страницы, без необходимости перелогиниваться).</li></ul></div> </div><div><br></div><div>Это то основное, что запомнилось нам за прошедший год. Безусловно, технически было сделано множество иных изменений, и огромное число мелких багфиксов.</div><div>Система обновлялась в так называемом теневом (фоновом) режиме, без остановки серверов и коллапсирования. Многие изменения, по-сути, и не заметны для наших пользователей, и потому иногда можно услышать вопрос - " а где же обновления"? Но тем не менее - система развивается и обновляется, но не скачкообразно, большими куммулятивными обновлениями, как это было в 2009-ом году, а плавно и в фоновом режиме.</div><div>Что весьма важно, повышается стабильность и надежность работы системы. К сожалению, на определенном этапе для многих программных продуктов и сервисов это становится настоящей проблемой, что часто ведет к умиранию или сильному затуханию. Мы же искренне рады, что нам удается успешно справляться со всеми проблемами роста, и улучшать свою работу и функциональность. </div><div>Нам тоже все время хочется развиваться быстрее, а работать еще лучше, мы осознаем свои упущения и недоработки, но при этом делаем все возможное, чтобы не допускать старых ошибок и становиться лучше, а сервис предоставлять качественней.</div><div><br><b>Новый, 2011 год обязательно порадует нас, и вас, наших пользователей, новыми свершениями и достижениями. Мы планируем полноценно запустить uNet, продолжать развивать uCoz, завоевывать новые рынки и сердца новых пользователей, мы знаем, большая часть из вас нас ценит и любит. И, что самое главное, не только мы сами рассчитываем на новые свершения, мы знаем, что наши усилия, наш сервис многим тысячам людей позволяют, и позволят в новом году осуществлять свои свершения: реализовывать деловые и творческие задумки, воплощать мечты и проекты.</b></div><div><b><br>С наступившим праздником, удачи и успехов!</b><br><br><i>
<span style="font-size: 8pt;"><div align="right">Спасибо Ирине aka <a href="http://blog.ucoz.ru/index/8-7264" target="_blank">Meddy</a> за помощь в подготовке большей части данного поста. </div></span> </i></div></div> [ENTRY_URL] => http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172 [CATEGORY_NAME] => uCoz [CATEGORY_URL] => http://blog.ucoz.ru/blog/1-0-6 [COMMENTS_NUM] => 157 [COMMENTS_URL] => http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172#comments [USER_NAME] => Kurt [USER_ID] => 6 [RATING] => 0.0 [RATED] => 0 [READS_NUM] => 23293 [DATE] => 01.01.2011 [TIME] => 17:08 [TIMESTAMP] => 1293890935 )
5. Парсинг данных через JavaScript. Работа с API через JavaScript аналогична PHP. Мы, для простоты разработки, будем использовать библиотеку jQuery, тем более, не использовать её не получится - она подключается автоматически на всех сайтах uCoz, вне зависимости от того, хотите ли вы этого или нет (без неё, кстати, некоторые функции на uCoz перестанут работать).
А теперь перейдём к нашему коду.
Code
<script type="text/javascript"> // Делаем GET-запрос на страницу http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172 $.get( 'http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172', // адрес API-страницы function(data){ // функция, которая сработает, при условии, что наш запрос на страницу успешен // тут 'data' - это переменная, которая будет содержать ответ от запрашиваемой страницы, т.е. XML-код
// а теперь делаем разбор данных var mydata = new Array(); $('name', data).each(function(){ mydata[$(this).text()] = $(this).next().text(); });
// теперь можем работать с разобранными данными // например, выведем в браузере название спарсенного материала и его автора alert(mydata['TITLE']); // отобразит название материала alert(mydata['USER_NAME']); // отобразит автора материала }, 'xml' // тут персонально для jQuery указываем тип данных, который она получит в проводимой нами процедуре запроса по адресу API-страницы ); </script>
Этот код, как видно, «даст» нам название материала и автора материала. Вставлять его можно в любое место шаблона вашего сайта. Для того, чтобы вставить эти данные в страницу, а не выводить их в окне, вместо alert() нужно использовать функцию jQuery $().html():
Code
<div id="otvet"></div> <script type="text/javascript"> $.get( 'http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172', function(data){ var mydata = new Array(); $('name', data).each(function(){ mydata[$(this).text()] = $(this).next().text(); }); $('#otvet').html('Пользователь '+mydata['USER_NAME']+' написал материал: «'+mydata['TITLE']+'»'); }, 'xml' ); </script>
Этот код вставит на страницу (в div c id="otvet") следующий текст: