Модератор форума: JonMagon |
Сообщество uCoz Мастерская uCoz Использование PHP и API на uCoz Базовое API на uCoz |
Базовое API на uCoz |
В марте 2011 в системе uCoz появилась возможность использовать функционал API. АPI - это бесплатная возможность, её нужно просто активировать в Основных настройках сайта. Инструкция по включению и использованию данной возможности находится ЗДЕСЬ. В этой теме разрешается обсуждать данную возможность, делиться опытом, вносить конструктивные предложения. ОБНОВЛЕНИЯ
|
HakerGTR,
Quote (HakerGTR) fflesh, информер будет нормально работать только, если на сайте пользователей меньше 999 - В смысле вообще, или выводить? ... Кстати, откуда такая инфа??? Не думаю, что число пользователей сайта вообще чем либо ограничено. И, кстати, сомнения у меня большие, что 999 пользователей он-лайн информер вообще выведет ... ))) Да и страничку представляю, с логинами ... ))) - как минимум - пара полных экранов ))) ... Хотя, как альтернатива, вполне...) Не проверял. ... Смотрю API для форума заработало, поздравляю. ) Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Понедельник, 18 Апр 2011, 16:21:56
|
HakerGTR,
Quote (HakerGTR) просто при создании информера в поле "Количество материалов" можно ввести число не более 999 ))) - А, ты про это... Обрадую - информер выводит лишь 300 материалов (пользователей, картинок, прочее) ... Quote (HakerGTR) тогда если пользователей на сайте будет больше, то он выведет не всех. Quote (HakerGTR) очень удобно выводить список пользователей онлайн. Он-лайн больше тысячи? ... Да, неплохие запросы ... Были бы ещё реальными ) ... Вон, за восемь часов, на этом форуме - всего лишь общее количество хостов (уников) только 1000, а ты говоришь - больше 999 единовременно на сайте. Эх, о таком мечтать только можно ... ヅ ... ...
Quote (YuriT) Вообще-то информер для онлайн-пользователей специальный, он настраивается не через "информеры", а через Общие настройки. - Во-во, точно, а там вообще двузначное число )))) Прикрепления:
7020186.png
(1.9 Kb)
Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Вторник, 19 Апр 2011, 21:39:26
|
Quote (fflesh) просто при создании информера в поле "Количество материалов" можно ввести число не более 999 ))) - А, ты про это... Обрадую - информер выводит лишь 300 материалов (пользователей, картинок, прочее) ... Вообще-то информер для онлайн-пользователей специальный, он настраивается не через "информеры", а через Общие настройки. И ввести там можно не общее число материалов, а число пользователей, показываемых на одной странице. Так что ни 999, ни 300 в данном случае ни при чем. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
|
Капец какой-то!!! Три раза точка НОРМАЛЬНО ПОПРОСИЛА посоветовать учебник или какой-то простенький пример по использованию API, нет чтобы также НОРМАЛЬНО ответить!!!! Вместо этого получаем "сверхумные ответы" из разряда "тебе и учебник не поможет, ничтожество" или "да там и читать нечего, легкотня. Как этого можно не знать?"!!!! Неужели так сложно просто написать три-четыре строчки кода и не показывать "Какой ты супер-пупер-мега-экстра знаток" и все остальные, кто не понимает всего того, с чем знаком ты, просто пыль на твоих сапогах. Человек обратился с просьбой помочь разобраться (и я к ней присоединяюсь!!!). Если же ВЫ не можете ей помочь, так как такие же начинающие, как и мы с ней, то отвечать великоумными фразами не стоит, потому что в этом случае её вопрос направлен не к вам и просто проигнорируйте её сообщение!
А теперь просьба к тем, кто "попроще" вышеупомянутых господ: скиньте, ПОЖАЛУЙСТА, желательно в эту ветку (чтобы могли пользоваться все), или в ПМ пример обрабатывания данных, которые получаем после запроса get. А лучше, если будет настроение и желаение, весь скрипт. Заранее Вам огромное спасибо от меня и таких же начинающих и ЖЕЛАЮЩИХ познавать новое простых смертных. Сообщение отредактировал Slavito - Вторник, 03 Май 2011, 18:19:51
|
Slavito, так ведь и непонятно, для чего именно Вы хотите использовать АПИ (для джаваскрипта - это одно, для PHP - совсем другое), и какого типа примеры Вас интересуют.
Ну, вот для примера джаваскриптовая функция, которая при помощи АПИ проверяет, подтвержден ли у пользователя е-мейл, и если не подтвержден - то выдает предупреждение. Вызов этой функции можно прикрутить, скажем, к событию простановки галочки в поле "Получать извещения о комментариях".
Code $.get('/api/index/8',function(data){ if($('member:contains("USER_ISVERIFIEDEMAIL") i4',data).text()!='1') alert('У Вас не подтвержден е-мейл, поэтому получать извещения о комментариях Вы не сможете.') },'xml') Только для осмысленного использования АПИ в любом случае необходимо прежде всего хорошо разобраться с тем, как работать в скрипте (джава- или PHP) с XML-данными. А после этого все остальное уже действительно является абсолютно тривиальным: просто смотрим, как называются нужные поля, и берем из них данные. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Вторник, 03 Май 2011, 18:56:01
|
YuriT, огромное Вам спасибо за такой лаконичный и в тоже время развернутый для меня ответ. Будем учиться. Спасибо еще раз, то, что нужно!
Добавлено (07-Май-2011, 13:29:59) Code $.get('/api/index/8',function(data){ if($('member:contains("USER_ISVERIFIEDEMAIL") i4',data).text()!='1') alert('У Вас не подтвержден е-мейл, поэтому получать извещения о комментариях Вы не сможете.') },'xml') К сожалению указанные код не работает в IE: происходит ровным счетом ничего, может кто-то подскажет как решить эту проблему? |
Quote (Slavito) К сожалению указанные код не работает в IE: происходит ровным счетом ничего, может кто-то подскажет как решить эту проблему? Попробуйте заменить .text() на .html() , у IE были какие-то проблемы с обработкой .text(), да и вообще с разбором XML - в отличие от других браузеров она в ИЕ "не родная". Потеряшка - поиск потерянных и помощь бездомным животным в Питере
|
Quote Попробуйте заменить .text() на .html() К сожалению тоже не сработало! (( Уже обыскал весь интернет, что-то не нахожу решение этой проблемы, неужели ни у кого не возникало вопросов с работой xml в Explorere. (( Может кто-то из модераторов или админов uCoz'а подскажут как работать правильно с API в системе uCoz? Сообщение отредактировал Slavito - Воскресенье, 08 Май 2011, 16:14:50
|
В IE, к сожалению, не всегда корректно работает поиск тегов по их содержимому!
Поэтому, увы, приходится применять медленный, НО гарантированно-работающий алгоритм обхода всех узлов (тегов) и поиск в них нужного ключа. Учитывая это, можно переделать приведенный выше код примерно так: Code $.get('/api/index/8',function(data){ $('member',data).each(function(){ if(($('name',this).text() == "USER_ISVERIFIEDEMAIL") && ($('i4',this).text() != '1')){ alert('У Вас не подтвержден е-мейл, поэтому получать извещения о комментариях Вы не сможете.'); return(false); } }) },'xml') Т.е.: - создаем коллекцию всех узлов <member> - обходим каждый узел из вышесозданной коллекции в поисках вложенного узла <name> с заданным содержимым - если искомый узел найден, то читаем содержимое из вложенного узла <i4>, которое и будет значением ключа из субузла <name> - после выдачи сообщения завершаем обход коллекции узлов |
sch779,
Quote (sch779) Поэтому, увы, приходится применять медленный, НО гарантированно-работающий алгоритм обхода всех узлов (тегов) и поиск в них нужного ключа. Это не только “медленный” (что, кстати, не факт) и “гарантированно-работающий”, но и наиболее правильный способ разбора xml данных. Имеется в виду принцип - обход элеменов циклом. ... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Понедельник, 09 Май 2011, 06:41:40
|
ВСЁ РАБОТАЕТ!!!! Спасибо огромное пользователям YuriT и sch779 за помощь в освоении API. Прошу всех, кому интересна эта тема и кому полезен будет следующий скрипт, поблагодарить их своими плюсами.
Итак, задача, которая стояла: используя API, достать полное название компании, добавившей товар, и вставить его в страницу с товаром (не логин, а именно полное имя). В принципе, это только пример, можно доставать любые данные, которые Вам необходимы, с помощью нижеприведенного скрипта. Просьба не разжигать холливар здесь по поводу того, насколько пример рационален с точки зрения "чего-то там", но скажу, что пример рабочий и меня вполне устраивает, если кто-то предложит более простой вариант, скажем ему огромное спасибо!
Code ProfilePage='http://igromanik.com/api/index/8-' + $UID$; $.get(ProfilePage,function(data){ if(navigator.appName == 'Microsoft Internet Explorer'){ $('member',data).each(function(){ if(($('name',this).text() == "USER_NAME")){ $('<a href="$PROFILE_URL$" title="Смотреть профиль компании">' +$('string',this).text()+ '</a>').insertAfter('#PersonCardName'); return(false); } }) } else { $('<a href="$PROFILE_URL$" title="Смотреть профиль компании">' + $('member:contains("USER_NAME") string',data).text() + '</a>').insertAfter('#PersonCardName'); } },'xml') Сообщение отредактировал Slavito - Понедельник, 09 Май 2011, 02:37:18
|
Slavito,
Quote (Slavito) если кто-то предложит более простой вариант, скажем ему огромное спасибо! Да без проблем) Держи) Code <div id="PersonCardName"></div> <script type="text/javascript"> var url='/api/index/8-$UID$'; $.get(гкд,function(data){ $('member',data).each(function(){ if(/USER_NAME/i.test($(this).text())){ $('<a href="$PROFILE_URL$" title="Смотреть профиль компании">'+$(this).text().split('USER_NAME')[1]+'</a>').insertAfter('#PersonCardName'); };})},'xml'); </script> или вот так: Code <div id="PersonCardName"></div> <script type="text/javascript"> var url='/api/index/8-$UID$'; $.get(url,function(data){ $('member',data).each(function(){var obj=$(this).text().split('USER_NAME'); if(obj[0]==''){$('<a href="$PROFILE_URL$" title="Смотреть профиль компании">'+obj[1]+'</a>').insertAfter('#PersonCardName');}; })},'xml'); </script> - На 6ms быстрее ... ... А в твоём случае, когда делаешь запрос в профиль конкретного пользователе ($UID$) и данные заведомо уникальные, можно просто разбить строку ... Code var url='/api/index/8-$UID$'; $.get(url,function(data){ $('<a href="$PROFILE_URL$" title="Смотреть профиль компании">'+$('member',data).text().split('USER_NAME')[1].split('USER_')[0]+'</a>').insertAfter('#PersonCardName'); },'xml'); ... Все варианты проверены: Mozzilla, Хром, ИЕ7, ИЕ8, Opera, Safari, Flock; Если кому нужно.... Code <script type="text/javascript"> var url='/api/index/8-$UID$'; $.get(url,function(data){ var user_avatar=$('member',data).text().split('USER_AVATAR')[1].split('USER_')[0]; var user_email=$('member',data).text().split('USER_EMAIL')[1].split('USER_')[0]; var user_birthday=$('member',data).text().split('USER_BIRTHDAY')[1].split('USER_')[0]; alert(user_avatar+'\n'+user_email+'\n'+user_birthday); },'xml'); </script> Динамика, я думаю, понятна ) Прикрепления:
2154694.png
(2.6 Kb)
Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Вторник, 10 Май 2011, 14:36:06
|
sims-fan,
Quote (sims-fan) но есть вопрос: куда все эти коды вставлять? в html код? или загружать xml файл? Xml загружать ни куда не надо - он уже у вас на сайте))) По адресу http://ваш_сайт/api/index/8 например) Сам скрипт - в шаблон, или в страницу, или просто подключать ... Смотря для чего и что) Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Вторник, 10 Май 2011, 14:39:52
|
| |||