Делаем сайт GalleryUA/pogoda
[5.08.2015 2.59 – Что-то не спиться, после 2-часового полусна занялся этой работой]
- Добавляем необходимую запись в файл .htaccess:
- Переносим файлы index.php и index_cat.php, переименовываем их соответственно в index_pogoda.php и index_cat_pogoda.php. Так же переносим файл config_sec728312167.php.
- Можем открыть любую тестовую страницу, например, http://galleryua.com/pogoda-3/reshetilovskij-rajon/19175-yatsenky/ и вывести для отладки var_dump($srch);
- 5. Приведем в соответствие каждому населенному пункту ближайший населенный пункт отмеченный в rp5ru http://galleryua.com/photo-3/service/rp5/rp5-nearest.php?E=46.48694&N=33...
- С подтягивание погоды пришлось повозиться достаточно долго, здесь на омощь пришел фрилансер «weblancer Скрипты Павлов Сергей (fearless1445) InYourDarkness». Его рабочая папка /var/www/gallery/data/www/galleryua.com/pogoda-3/parser-pogody-rp5/mm
- Скрипт подтягивания погоды положил пямо в текст файла /var/www/gallery/data/www/galleryua.com/pogoda-3/citynear.php и /var/www/gallery/data/www/galleryua.com/pogoda-3/townnear.php
- Вот сам скрипт:
- Вот что получилось в итоге:
####pogoda-3 RewriteRule ^pogoda-3/([0-9]+)-(.*)/?$ /pogoda-3/index_pogoda.php?id=$1&url=$2 [L,QSA] RewriteRule ^pogoda-3/(.*)/([0-9]+)-(.*)/?$ /pogoda-3/index_pogoda.php?id=$2&url=$3 [L,QSA] #category RewriteRule ^pogoda-3/(.*)/$ /pogoda-3/index_cat_pogoda.php?url=$1 [L,QSA] RewriteRule ^pogoda-3/([a-zA-Z0-9_-]+)$ /pogoda-3/index_cat_pogoda.php?url=$1 [L,QSA] #/pogoda/ RewriteRule ^pogoda-3/$ /pogoda-3/index_cat.php?url= [L,QSA] RewriteRule ^pogoda-3$ /pogoda-3/index_cat.php?url= [L,QSA] ####////pogoda-3
Подправляем config_sec728312167.php таким образом:
<?php require_once "../photo/config_sec728312167.php"; $path = '/pogoda-3/' ?>
Т.е. берем все настройки из раздела /photo/, меняем только путь $path.
array(56) { [0]=> string(5) "19175" ["id"]=> string(3) "270" [1]=> string(16) "с. Яценки" ["title"]=> string(16) "с. Яценки" [2]=> string(8) "yatsenky" ["alias"]=> string(8) "yatsenky" [3]=> string(8) "49.41056" ["E"]=> string(8) "49.41056" [4]=> string(8) "34.04944" ["N"]=> string(8) "34.04944" [5]=> string(20) "49.41056E, 34.04944N" ["koord_txt"]=> string(20) "49.41056E, 34.04944N" [6]=> string(0) "" ["radius"]=> string(0) "" [7]=> string(0) "" ["photo"]=> string(0) "" [8]=> string(0) "" ["photos"]=> string(0) "" [9]=> string(1) "0" ["num_photos"]=> string(1) "0" [10]=> string(0) "" ["videos"]=> string(0) "" [11]=> string(1) "0" ["num_videos"]=> string(1) "0" [12]=> string(1) "1" ["published"]=> string(1) "1" [13]=> string(3) "270" ["catid"]=> string(3) "270" [14]=> string(76) "Полтавская область/Решетиловский район" ["cat_cache"]=> string(76) "Полтавская область/Решетиловский район" [15]=> string(119) "Почтовый индекс с. Яценки: 38451. Высота села: 129 м над уровнем моря." ["info"]=> string(119) "Почтовый индекс с. Яценки: 38451. Высота села: 129 м над уровнем моря." [16]=> string(0) "" ["raspolog"]=> string(0) "" [17]=> string(0) "" ["seo_title"]=> string(0) "" [18]=> string(0) "" ["seo_description"]=> string(0) "" [19]=> string(0) "" ["seo_keywords"]=> string(0) "" [20]=> string(3) "270" [21]=> string(37) "Решетиловский район" ["name"]=> string(37) "Решетиловский район" [22]=> string(20) "reshetilovskij-rajon" [23]=> string(0) "" ["description"]=> string(0) "" [24]=> string(2) "15" ["parent"]=> string(2) "15" [25]=> string(1) "1" [26]=> string(7) "270.jpg" ["image"]=> string(7) "270.jpg" [27]=> string(20) "reshetilovskij-rajon" ["path_old"]=> string(20) "reshetilovskij-rajon" [28]=> string(8) "yatsenky" [29]=> string(20) "reshetilovskij-rajon" ["cat_alias"]=> string(20) "reshetilovskij-rajon" }
Пример записей:
1;г. Винница;idrp5=187;rspolog5=Украина/Винницкая область;info=Погода в Виннице;d=209.15091878226215; 2;г. Жмеринка;idrp5=192;rspolog5=Украина/Винницкая область;info=Погода в Жмеринке;d=2419.7846256065804; 3;г. Могилев-Подольский;idrp5=199;rspolog5=Украина/Винницкая область;info=Погода в Могилеве-Подольском;d=2199.3059516248104; 4;г. Хмельник;idrp5=141869;rspolog5=Украина/Винницкая область/Хмельницкий район;info=Погода в Будкове;d=1590.8772771081663; 5;г. Александрия;idrp5=460;rspolog5=Украина/Кировоградская область;info=Погода в Александрии;d=698.9780031482637; 6;г. Знаменка;idrp5=468;rspolog5=Украина/Кировоградская область;info=Погода в Знаменке;d=492.35131303222005; 7;г. Кировоград;idrp5=470113;rspolog5=Украина/Кировоградская область/Кировоградский район;info=Погода в Солнечном;d=4310.619613779408; 8;г. Светловодск;idrp5=23970;rspolog5=Украина/Кировоградская область/Светловодский район;info=Погода в Свердловке;d=3935.1891042430693; 9;с. Авксенивка;idrp5=142580;rspolog5=Украина/Днепропетровская область/Верхнеднепровский район;info=Погода в Авксеновке;d=817.2108655285906;
Запишем эти значения в соответствующую таблицу, для этого вначале добавим еще один столбец:
Проверив результаты убеждаемся, что есть населенные пункты, для которых погода обозначена лишь в 50км, особенно много таких по Херсонской области, вот самые печальные ситуации:
3466;с. Ларино;idrp5=31024;rspolog5=Украина/Херсонская область/Генический район;info=Погода в Стрелковом;d=51240.71051301449; 16586;с. Левитановка;idrp5=141336;rspolog5=Украина/Херсонская область/Каланчакский район;info=Погода в Приморском;d=50808.61376872296; 16597;с. Правда;idrp5=151117;rspolog5=Украина/Херсонская область/Каланчакский район;info=Погода в Александровке;d=51134.44551250439;
Формируем записи в таком виде:
UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '187' WHERE `gorod3`.`id` = 1 UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '192' WHERE `gorod3`.`id` = 2 UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '199' WHERE `gorod3`.`id` = 3 UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '141869' WHERE `gorod3`.`id` = 4 … UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '28497' WHERE `gorod3`.`id` = 29353 UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '78382' WHERE `gorod3`.`id` = 29354 UPDATE `galleryua_gallerist`.`gorod3` SET `idrp5` = '78380' WHERE `gorod3`.`id` = 29355
После того как записи сформировались импортируем дамп /var/www/gallery/data/www/galleryua.com/photo-3/service/rp5/gorod_idrp5ru.sql в базу:
[root@176 ~]# mysql -uroot -p -f galleryua_gallerist < /var/www/gallery/data/www/galleryua.com/photo-3/service/rp5/gorod_idrp5ru.sql
Получаем дополнительный столбец с данными и теперь нам не нужно каждый раз проделывать эту процедуру при загрузке страницы:
Кроме того мы можем скриптом выгружать эти данные за один запрос на странице с Погодой и подтягивать погоду с сервера rp5.ru.
<script> function getRandomArbitary(min, max) { return Math.random() * (max - min) + min; } function JsonpCallbackToArray(data, id) { if (data.responseStatus == "200") { var title = data.responseData.feed.entries[0].title; var decRandom = getRandomArbitary(-0.2, 0.2).toFixed(1); var temp = title.substr(-10).match(/[\w-\.\+]+/)[0]; var finalyTemp = (temp - decRandom).toFixed(1); $(".spisokmtitle-" + id).html(''+ finalyTemp + '°'); }else { alert(data.responseDetails); } } function request(url, id){ $.ajax({ type: "GET", url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&output=jsonp&callback=?&q='+url, dataType: "jsonp", crossDomain: true, success : function(data) { JsonpCallbackToArray(data, id); } }); } var idArray = [<?php echo $str_array_idrp5; ?>];//Массив ID for (var idCount = 0; idCount < idArray.length; idCount++) { if (idCount in idArray) { var urlWithID = 'http://rp5.ru/rss/'+ idArray[idCount] +'/ru'; $(document).ready(request(urlWithID, idArray[idCount])); } } </script>
Кроме всего прочего он добавляет случайное число в диапазоне [-0.3, 0.3], чтобы данные о погоде соседних сел, получаемых информацию с одной и той же метеостанции не выглядели абсолютно одинаково. Еще нужно прописать дивы в тех местах, где нужно подгружать значения температуры: <div style="float:left;" class="spisokmtitle-'.$idrp5.'"></div></p>
На мой взгляд смотрится неплохо!
- Для комментирования войдите или зарегистрируйтесь