В виду того что в моей стране сейчас бардак и курс доллара скачет как некоторые на майдане... (но не будем о политике и грустном).
Короче, магазин работает в основном через Приватбанк Украины. Цены меняются в зависимости от курса доллара, потому как товар закупается за валюту и в основном из-за рубежа.
Но курс Приватбанка не обычный, В отделениях, а так называемый коммерческий, Курсы карт и пополнения вкладов по которому меняют при покупке товара онлайн гривны на доллары.
Так вот, иногда просто забываю посмотреть на сайте Приватбанка этот коммерческий курс доллара.
https://privatbank.ua/ - внизу страницы справа висит вот такой виджет:
IMG_19.01.2015-11.57.23.jpg 56.5К 1 Количество загрузок:
В этой связи родилась идея, отображать этот коммерческий курс прямо в админке магазина (так как там бываю намного чаще).
Решил сделать небольшой парсинг этого коммерческого курса. Погуглив так как с парсингом сталкиваюсь впервые, на свет родился вот такой вот код.
Прошу сильно не пинать, и подозреваю что можно сделать еще проще. Но во всяком случае этот код работает тоже:
И так...
1. Создаем файл core/includes/admin/privat_curs.php
<? $file = fopen('Полный\\путь\\к\\файлу\\core\\temp\\curs.txt','w'); // полный путь файлу $cont = file_get_contents("https://privatbank.ua/"); // адрес откуда будем парсить fputs($file,$cont,strlen($cont)); fclose($file); if (file_exists("Полный\\путь\\к\\файлу\\core\\temp\\curs.txt")) { $f = file("Полный\\путь\\к\\файлу\\core\\temp\\curs.txt"); $search = "id='selectByCard'"; // ищем строку индификатор $i = 0; while ($i < sizeof($f)&& strpos($f[$i], $search) == false) { $i++; } $stroka = $i+14; // находим строку с коммерческим курсом Приватбанка $parse = "$f[$stroka]"; // присваиваем переменной нужную строку $remov = array("<td width=\"25%\" style=\"text-align:right;\">", "", "</td>"); // указываем что лишнее нужно будет удалить $thatleave = array("", $f[$stroka], ""); // оставляем только цифры коммерческого курса $curs = str_replace($remov, $thatleave, $parse); // меняем/собираем все вместе } else { // если нет файла (не загрузился по каким то причинам) $curs .= "UPS"; // будем выводить эту фразу или какую сами пропишите } // создаем пару-ключ smarty для вывода информации $smarty->assign("curs_ptivat", $curs); // в нужном нам месте шаблона админки выводим курс тегом {$curs_ptivat} ?>
2. Меняем в коде полный путь к файлу core\temp\curs.txt на свой (сам файл потом создается автоматически).
3. В шаблоне админки в нужном вам месте прописываем следующий код:
{$curs_ptivat}
Прописывается вывод курса в core\tpl\admin\index.tpl.html шаблона админки там, где вам будет удобно.
У меня это прописано вверху слева, в шапке, вместе с выводом статусов заказов (смотрите соответствующий мод для этого тут на форуме).
Кажись всё. Удачи в бизнесе!
p.s. Кто оптимизирует работу парсинга или предложит что либо лучшее - буду только рад.
Мои мысли и действия см. в комментариях кода.
p.p.s. Кстати, сначала делал вот так:
<? $file = fopen('Полный\\путь\\к\\файлу\\core\\temp\\curs\\curs.txt','w'); $cont = file_get_contents("https://privatbank.ua/"); fputs($file,$cont,strlen($cont)); fclose($file); if (file_exists("Полный\\путь\\к\\файлу\\core\\temp\\curs\\curs.txt")) { $f = file("Полный\\путь\\к\\файлу\\core\\temp\\curs\\curs.txt"); $search = "id='selectByCard'"; $i = 0; while ($i < sizeof($f)&& strpos($f[$i], $search) == false) { $i++; } $stroka = $i+14; $curs = "USD/UAH: ".str_replace("cursid=", "", $f[$stroka]).""; } else { $curs .= "UPS"; } echo $curs; ?>
Но в этом случае мы вытягиваем полностью строку типа:
<td style="text-align:right;" width="25%">21.0084</td>Которая в конечном счете ломала шаблон админки из-за лишних тегов.
По этому сделал именно так как расписано в шапке темы.