Модератор форума: JonMagon  
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Базовое API на uCoz
Базовое API на uCoz
Модератор форума
Сообщение # 1 | 15:36:48
В марте 2011 в системе uCoz появилась возможность использовать функционал API.

АPI - это бесплатная возможность, её нужно просто активировать в Основных настройках сайта.

Инструкция по включению и использованию данной возможности находится ЗДЕСЬ.


В этой теме разрешается обсуждать данную возможность, делиться опытом, вносить конструктивные предложения.

ОБНОВЛЕНИЯ

  • [13.05.2011] Добавлена возможность использовать ключ (API key) для базового API.

    Данная возможность позволяет разрешить использование API только для тех, кто знает ключ. Для всех остальных API не будет работать. Включить эту возможность можно в панели управления в разделе “Настройки” → “Общие настройки” → “Использовать API key”. Ключ генерируется автоматически.

    Если вы захотите изменить уже существующий ключ, то отключите и включите заново эту опцию, затем сохраните изменения.

    Использовать API при наличии ключа нужно посредством GET-запроса следующим образом:
    http://SITE_ADDRESS/api/MODULENAME/ANYRELPATH?apikey=APIKEY


fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 31 | 16:14:24
HakerGTR,
Quote (HakerGTR)
fflesh, информер будет нормально работать только, если на сайте пользователей меньше 999

- В смысле вообще, или выводить? ...
Кстати, откуда такая инфа??? Не думаю, что число пользователей сайта вообще чем либо ограничено.
И, кстати, сомнения у меня большие, что 999 пользователей он-лайн информер вообще выведет ... )))
Да и страничку представляю, с логинами ... ))) - как минимум - пара полных экранов )))
... Хотя, как альтернатива, вполне...)
Не проверял.
...
Смотрю API для форума заработало, поздравляю. )

Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Сообщение отредактировал fflesh - Понедельник, 18 Апр 2011, 16:21:56
HakerGTR
Сообщений: 1
Репутация: 15

Сообщение # 32 | 20:22:13
fflesh, просто при создании информера в поле "Количество материалов" можно ввести число не более 999, тогда если пользователей на сайте будет больше, то он выведет не всех.

Да, я такой
fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 33 | 08:56:08
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
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 34 | 11:12:47
Quote (fflesh)
просто при создании информера в поле "Количество материалов" можно ввести число не более 999

))) - А, ты про это... Обрадую - информер выводит лишь 300 материалов (пользователей, картинок, прочее) ...


Вообще-то информер для онлайн-пользователей специальный, он настраивается не через "информеры", а через Общие настройки. И ввести там можно не общее число материалов, а число пользователей, показываемых на одной странице. Так что ни 999, ни 300 в данном случае ни при чем.

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Slavito
Сообщений: 6
Репутация: 3

Сообщение # 35 | 18:18:36
Капец какой-то!!! Три раза точка НОРМАЛЬНО ПОПРОСИЛА посоветовать учебник или какой-то простенький пример по использованию API, нет чтобы также НОРМАЛЬНО ответить!!!! Вместо этого получаем "сверхумные ответы" из разряда "тебе и учебник не поможет, ничтожество" или "да там и читать нечего, легкотня. Как этого можно не знать?"!!!! Неужели так сложно просто написать три-четыре строчки кода и не показывать "Какой ты супер-пупер-мега-экстра знаток" и все остальные, кто не понимает всего того, с чем знаком ты, просто пыль на твоих сапогах. Человек обратился с просьбой помочь разобраться (и я к ней присоединяюсь!!!). Если же ВЫ не можете ей помочь, так как такие же начинающие, как и мы с ней, то отвечать великоумными фразами не стоит, потому что в этом случае её вопрос направлен не к вам и просто проигнорируйте её сообщение!

А теперь просьба к тем, кто "попроще" вышеупомянутых господ: скиньте, ПОЖАЛУЙСТА, желательно в эту ветку (чтобы могли пользоваться все), или в ПМ пример обрабатывания данных, которые получаем после запроса get. А лучше, если будет настроение и желаение, весь скрипт. Заранее Вам огромное спасибо от меня и таких же начинающих и ЖЕЛАЮЩИХ познавать новое простых смертных.

Сообщение отредактировал Slavito - Вторник, 03 Май 2011, 18:19:51
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 36 | 18:50:20
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
Slavito
Сообщений: 6
Репутация: 3

Сообщение # 37 | 13:29:59
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: происходит ровным счетом ничего, может кто-то подскажет как решить эту проблему?

YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 38 | 15:44:14
Quote (Slavito)
К сожалению указанные код не работает в IE: происходит ровным счетом ничего, может кто-то подскажет как решить эту проблему?

Попробуйте заменить .text() на .html() , у IE были какие-то проблемы с обработкой .text(), да и вообще с разбором XML - в отличие от других браузеров она в ИЕ "не родная".

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Slavito
Сообщений: 6
Репутация: 3

Сообщение # 39 | 16:10:20
Quote
Попробуйте заменить .text() на .html()

К сожалению тоже не сработало! ((
Уже обыскал весь интернет, что-то не нахожу решение этой проблемы, неужели ни у кого не возникало вопросов с работой xml в Explorere. ((
Может кто-то из модераторов или админов uCoz'а подскажут как работать правильно с API в системе uCoz?
Сообщение отредактировал Slavito - Воскресенье, 08 Май 2011, 16:14:50
sch779
Сообщений: 703
Репутация: 348

Сообщение # 40 | 00:39:18
В 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>
- после выдачи сообщения завершаем обход коллекции узлов
fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 41 | 02:11:13
sch779,
Quote (sch779)
Поэтому, увы, приходится применять медленный, НО гарантированно-работающий алгоритм обхода всех узлов (тегов) и поиск в них нужного ключа.

Это не только “медленный” (что, кстати, не факт) и “гарантированно-работающий”, но и наиболее правильный способ разбора xml данных.
Имеется в виду принцип - обход элеменов циклом.
...

Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Сообщение отредактировал fflesh - Понедельник, 09 Май 2011, 06:41:40
Slavito
Сообщений: 6
Репутация: 3

Сообщение # 42 | 02:32:49
ВСЁ РАБОТАЕТ!!!! Спасибо огромное пользователям YuriT и sch779 за помощь в освоении API. Прошу всех, кому интересна эта тема и кому полезен будет следующий скрипт, поблагодарить их своими плюсами.

Итак, задача, которая стояла: используя API, достать полное название компании, добавившей товар, и вставить его в страницу с товаром (не логин, а именно полное имя). В принципе, это только пример, можно доставать любые данные, которые Вам необходимы, с помощью нижеприведенного скрипта.
Немного пояснения: вместо string также можно подставлять i4, если данные не строчные, а числовые.

Просьба не разжигать холливар здесь по поводу того, насколько пример рационален с точки зрения "чего-то там", но скажу, что пример рабочий и меня вполне устраивает, если кто-то предложит более простой вариант, скажем ему огромное спасибо!

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
fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 43 | 03:45: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
Сообщений: 4
Репутация: 5

Сообщение # 44 | 14:08:25
понял для чего эта функция (вроде :DD)
но есть вопрос: куда все эти коды вставлять? в html код? или загружать xml файл?
fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 45 | 14:30:59
sims-fan,
Quote (sims-fan)
но есть вопрос: куда все эти коды вставлять? в html код? или загружать xml файл?

Xml загружать ни куда не надо - он уже у вас на сайте)))
По адресу http://ваш_сайт/api/index/8 например)

Сам скрипт - в шаблон, или в страницу, или просто подключать ... Смотря для чего и что)
...
Имеется в виду что поддержка API активирована - ПУ » Общие настройки ...


Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Сообщение отредактировал fflesh - Вторник, 10 Май 2011, 14:39:52
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Базовое API на uCoz
Поиск: