Webmaster Notes

Информер курса валют своими руками

18 марта 2016, 07:59

Информер курса валют своими руками

Сделать информер курса валют для своего сайта - очень элементарная задача. Между тем, некоторым вебмастерам она кажется слишком трудоемкой и они ограничиваются поиском готовых информеров на финансовых порталах. Такие информеры валют, естественно, красочные и информативные, но в 99.9% случаев они содержат ссылку на сайт-источник. Как быть, если вы не хотите на своем сайте вместе с информером курса валют размещать посторонних ссылок, логотипов или торговых марок? Правильно: сделать свой информер! Этим и займемся!

Парсим данные для информера курса валют

Как всегда, ограничиваемся самым простым кодом и ищем самый простой путь. Пример самого элементарного парсера информации с других сайтов я приводил в статье "Парсим контент к себе на сайт". Этот код и будем использовать для своих целей (в данной статье он будет немного модифицирован для большей функциональности). Для начала нам нужно найти сайт-донор. Такой сайт должен удовлетворять некоторым требованиям, в частности:

  • Сайт ежедневно должен обновлять информацию о курсах валют;
  • Такая информация должна размещаться на постоянном адресе сайта (статичный урл);
  • Такую информацию можно видеть в исходном коде страницы (режим html).

Таких сайтов в интернете не так и мало, Гугль в помощь. В нашем примере (мы будем делать информер курса валют от Национального Банка Украины - НБУ), мы ограничимся облегченной wap версией сайта одного из мобильных операторов Украины, а именно - http://xwap.com.ua/srv/curr/index.php?mu=xhtml&s=djuice&l=ua&a=1. Открыв ссылку в браузере, мы увидим, что курс валют от НБУ на текущее число отображается в самом верху странички. Итак, принимаемся парсить эти строчки:

 '); /*Отрезаем все, что идет до нужной нам позиции (функция substr в данном случае принимает два параметра: строка для обработки и //номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции) */ $content = substr($content, $pos); // Точно таким же образом находим позицию второй строки $pos = strpos($content, '

ГОТІВКОВИЙ:

'); // Отрезаем нужное количество символов от нулевого $content = substr($content, 0, $pos); // Чистим мусор $content = str_replace('< ','', $content); $content = str_replace('
',' | ', $content); $content = str_replace('

',' ', $content); $content = str_replace('

',' ', $content); echo $cache_content; //выводим результат ?>

Если этот код поместить в файл, скажем под именем nbu.php и запустить его на своем сайте http://ваш сайт.ру/nbu.php то в окне браузера мы получим строчку, вида (что является курсом валют от НБУ на указанную дату):

01.08.2014 НБУ: USD: 12.0972 | EUR: 16.2115 | RUR: 0.3386 | GBP: 20.4768 | JPY: 0.0118

Собственно, основная задача сделана, данные получены, осталось корректно и правильно их использовать.

Кэшируем и подключаем информер курса валют на сайте WordPress

Поскольку увлекаюсь WordPress, в своем примере приведу порядок вывода информера на этой платформе. В принципе, в коде ничего сложного нет, его можете аналогичным способом подключить где угодно, где работает php. Но прежде всего, мы должны кэшировать спарсенные данные. И это очень существенный момент!

Каждый раз обращаясь к странице http://ваш сайт.ру/nbu.php скрипт обращается к удаленному сайту. Таким образом, если 1000 людей откроют Ваш сайт (на котором будет выводится информер с курсом валют), это создаст 1000 запросов к сайту донору. Донору это не понравится и ваш ip сайта могут заблокировать и скрипт с вашего сайта не сможет больше получать данные. Поэтому и придумали такую вещь как "кэширование".

Кэширование - это сохранение некоторой переменной PHP в кэше с последующим её извлечение оттуда. Это простой и эффективный способ повысить производительность веб-приложения.

Как это будет работать в нашем случае? Скрипт получит данные с удаленного сайта и сохранит их в файл на нашем сайте. Данные в этом файле будут хранится некоторое время и через определенный период обновляться. Таким образом, данные о курсе валют пользователь сайта будет получать из этого временного файла на нашем сайте, а не напрямую от сайта-донора. То есть, наш скрипт будет обращаться за информацией к удаленному сайту, скажем, 1-2 раза в сутки, что исключает блокировку или подозрения в каких-либо махинациях с нашей стороны.

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

 '); /*Отрезаем все, что идет до нужной нам позиции (функция substr в данном случае принимает два параметра: строка для обработки и //номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции) */ $content = substr($content, $pos); // Точно таким же образом находим позицию второй строки $pos = strpos($content, '

ГОТІВКОВИЙ:

'); // Отрезаем нужное количество символов от нулевого $content = substr($content, 0, $pos); // Чистим мусор $content = str_replace('< ','', $content); $content = str_replace('
',' | ', $content); $content = str_replace('

',' ', $content); $content = str_replace('

',' ', $content); if ( $cache_content === false ) { ob_start(); $cache_content = $content; ob_end_clean(); $fp = @fopen($cache_file, "w"); if ( $fp ) { @fwrite($fp, $cache_content); @fclose($fp); } } echo $cache_content; ?>

Обратите внимание на первые строчки: это параметры времени кэширования и путь к временному файлу. Собственно и все настройки работы скрипта кэширования. Не забываем сохранить код в файле под именем nbu.php.

Выводим информер курса валют в шаблоне WordPress Скрипт полностью готов! Подключить его на сайте очень просто.

  1. Создаем в корне сайта папку cache (права доступа - 755);
  2. Открываем папку с названием используемого на сайте шаблона WordPress и копируем туда файл nbu.php
  3. В той же папке прописываем строчку кода в той части шаблона, в которой хотим выводить данные. Зачастую это будет шапка (верхняя часть сайта), поэтому открываем header.php и в нужном месте вставляем:

Информер курса валют своими руками

Открываем сайт в браузере, проверяем работу нашего информера курса валют:

Информер курса валют своими руками

Если у Вас не получилось или что-то не получается, описывайте свою проблему в комментариях

!
Источник:seo-zona.ru
Комментарии к этой заметке больше не принимаются.
Все заметки категории «web-мастерская»