Креатив
Верный ход
Качество
Надёжность

Существует много API веб-интерфейсов, которые можно использовать в сочетании с Joomla!. Это список из нескольких наиболее распространенных API веб-интерфейсов, что мы, вероятно, используем:

  • eBay
  • Google (Календарь, Checkout, Карты, Поиск)
  • Microsoft (Live, MSN, XBOX)
  • Yahoo! (Почта, Карты, Поиск)

API и сервисы, которые мы используем определяют, каким образом мы обращаемся с API. Мы взглянем на API поиска Yahoo!. Прежде, чем мы начнем, мы должны обсудить ID приложение Yahoo!.

Yahoo! использует уникальный идентификатор (ID) для определения приложений, которые используют его API. Если Вы намереваетесь использовать Yahoo! API, важно, чтобы Вы зарегистрировали свое приложение прежде, чем Вы начнете разработку. Это гарантирует, что вы сможете получить желаемый ID.

Большинство API Web-интерфейсов требует от нас использовать некоторое описание ID. Это позволяет владельцам API анализировать использование своих услуг.

В целях этого примера мы будем использовать идентификатор приложения YahooDemo — это ID по умолчанию, используемый при демонстрации использования API Поиска Yahoo.

Первое, что мы должны сделать, чтобы создать наш Поиск Yahoo! является создание запроса, который мы будем использовать для получения результатов. В этом примере предполагается, что мы использовали окно поиска с названием yahooSearch:

// get the search terms
$query = rawurlencode(JRequest::getString('yahooSearch', 'Joomla!', 'DEFAULT', JREQUEST_ALLOWRAW));

Мы используем метод PHP rawurlencode(), потому что $query будет использоваться в URI. Маску JREQUEST_ALLOWRAW используется, чтобы не потерять данные из запроса. Полное объяснение масок JRequest дано в Главе 11.

Мы делаем предположение, что, если никаким критериям поиска не обеспечивают, мы хотим искать Joomla!. В действительности мы, вероятно, переадресовали бы пользователя.

Далее нам нужно создать запрос URI, из которого мы получим результаты поиска:

// Prepare the request URI
$request = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query='.$query.'&results=4';

Теперь, когда у нас есть URI, мы можем продолжить взаимодействовать с API Yahoo!. Мы используем функцию PHP file_get_contents(), чтобы выполнить запрос и получить результаты:

// Perform search
if (!$xml = file_get_contents($request))
{
// handle failed search request
}

Результаты запроса, в случае успеха, возвращается в виде XML-документа. Как мы интерпретируем результаты зависит от нас. Мы объяснили, как пользоваться анализатором JSimpleXML ранее в этой главе. Мы можем использовать его для интерпретации результатов Yahoo!:

$parser =& JFactory::getXMLParser('Simple');
$parser->loadString($xml);
$results =& $parser->document->Result;

Теперь, когда у нас есть проанализированный XML-документ, мы можем обработать результаты поиска. Переменная $results становится массивом узлов результата; эти узлы используются Yahoo!, чтобы инкапсулировать каждый результат.
Мы будем продолжать простую обработку и вывод результатов непосредственно на экран, как упорядоченный список. Этот пример использует подузлы результата ClickUrl, Title, Summary, and DisplayUrl. В каждом случае мы всегда получаем доступ к нулевому элементу; мы можем сделать это, потому что мы знаем, что только один узел каждого из этих типов будет когда-либо присутствовать в узле результата:

echo '<ol>';
for ($i = 0, $c = count($results); $i < $c; $i ++)
{
$result =& $results[$i];
echo '<li>';
echo '<strong><a href="'.$result->ClickUrl[0]->data().'" target="_blank">'.$result->Title[0]->data().'</a></strong><br />';
echo $result->Summary[0]->data().'<br />';
echo $result->DisplayUrl[0]->data();
echo '</li>';
}
echo '</ol>';

Если мы добавляем некоторый CSS к нашему документу, мы можем создать очень настраиваемое средство для поиска, которое даже не должен знать пользователь, основанное на Yahoo! API:

Этот пример показал, как легко можно использовать веб-сервисы. Несмотря на то, что этот пример особенно не усовершенствован, он показывает, как быстро мы можем создать очень мощные инструменты для Joomla!.

Вернуться к оглавлению

Войти на сайт

Запомнить меня

Новости

  • Перевод Mastering Joomla! 1.5

    14.03.2013

    Продолжается перевод книги "Mastering Joomla! 1.5". На данный момент полностью переведено 2 главы. Полностью перевод книги...

    Подробнее...

  • Модернизация сайта

    28.05.2012

    Уважаемые посетители! Мы полностью модернизировали наш сайт и надеемся что сейчас им станет...

    Подробнее...