Здравствуйте ,помогите разобраться.
Был на главной странице сайта слева в инфоблоке информер погоды, не знаю какой, откуда, кто и как его ставил, но факт в том, что он не работал, тупо прочерки во всех графах о температуре, влажности, ветре и т.д. Как всегда, мне поставили задачу с ним разобраться.
Методом тыка я нашел файл /bitrix/gadgets/bitrix/weather/lang/ru/exec/index.php , который вроде бы соответствует нужному мне инфоблоку, вот его старый код, если что:
[CODE]<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/classes/general/xml.php');
$APPLICATION->SetAdditionalCSS('/bitrix/gadgets/bitrix/weather/styles.css');
if($arGadgetParams["CITY"]!='')
$url = 'region='.substr($arGadgetParams["CITY"], 1).'&ts='.mktime();
else
$url = 'ts='.mktime();
$cache = new CPageCache();
if($arGadgetParams["CACHE_TIME"]>0 && !$cache->StartDataCache($arGadgetParams["CACHE_TIME"], 'c'.$arGadgetParams["CITY"], "gdweather"))
return;
$ob = new CHTTP();
$ob->http_timeout = 10;
$ob->Query(
"GET",
"export.yandex.ru",
80,
"/bar/reginfo.xml?".$url,
false,
"",
"N"
);
$errno = $ob->errno;
$errstr = $ob->errstr;
$res = $ob->result;
$res = str_replace("\xE2\x88\x92", "-", $res);
$xml = new CDataXML();
$xml->LoadString($APPLICATION->ConvertCharset($res, 'UTF-8', SITE_CHARSET));
$node = $xml->SelectNodes('/info/region/title');
?>
<h3><?=$node->content?></h3>
<?
$node = $xml->SelectNodes('/info/weather/day/day_part/temperature');
$t = Intval($node->content);
?>
<table width="90%">
<tr>
<td nowrap="yes" width="20%"><span class="t<?=intval($t/10)?>"><?=$node->content?></span></td>
<td width="20%"><?$node = $xml->SelectNodes('/info/weather/day/day_part/image');?><img src="<?=$node->content?>" class="gdwico"></td>
<td width="60%" nowrap>
<?$node = $xml->SelectNodes('/info/weather/day/day_part/weather_type');?>
<span class="gdweather"><?=$node->content?></span><br>
<span class="gdwinfo">
<?$node = $xml->SelectNodes('/info/weather/day/day_part/wind_direction');?>
Ветер: <?=$node->content?>, <?$node = $xml->SelectNodes('/info/weather/day/day_part/wind_speed');?><?=$node->content?> м/сек. <br>
<?$node = $xml->SelectNodes('/info/weather/day/day_part/pressure');?>
Давление: <?=$node->content?> мм.рт.ст.<br>
<?$node = $xml->SelectNodes('/info/weather/day/day_part/dampness');?>
Влажность: <?=$node->content?>%<br>
<?$node = $xml->SelectNodes('/info/weather/day/sun_rise');?>
Восход: <?=$node->content?><br>
<?$node = $xml->SelectNodes('/info/weather/day/sunset');?>
Заход: <?=$node->content?>
</span>
</td>
</tr>
<?$node = $xml->SelectNodes('/info/weather/tonight/temperature');?>
<?if($node):?>
<tr>
<td>Ночью:</td>
<td colspan="2"><?=$node->content?>°C</td>
</tr>
<?endif?>
<?$node = $xml->SelectNodes('/info/weather/tomorrow/temperature');?>
<?if($node):?>
<tr>
<td>Завтра:</td>
<td colspan="2"><?=$node->content?>°C</td>
</tr>
<?endif?>
</table>
<?if($arGadgetParams["SHOW_URL"]=="Y"):?>
<br />
<?$node = $xml->SelectNodes('/info/weather/url');?>
<a href="<?=htmlspecialchars($node->content)?>">Подробнее</a> <a href="<?=htmlspecialchars($node->content)?>"><img width="7" height="7" border="0" src="/bitrix/components/bitrix/desktop/images/arrows.gif" /></a>
<br />
<?endif?>
<?$cache->EndDataCache();?>
[/CODE]
В общем я не придумал ничего лучше, чем пойти на сайт gismeteo, взять у них код информера и вставить вместо всего, что у нас в index.php, вот этот код:
[CODE]<!-- Gismeteo informer START -->
<li nk rel="stylesheet" type="text/css" href="https://nst1.gismeteo.ru/assets/flat-ui/legacy/css/informer.min.css">
<div id="gsInformerID-Ghv74hlbk3krPJ" class="gsInformer" style="width:240px;height:206px">
<div class="gsIContent">
<div id="cityLink">
<a href="https://www.gismeteo.ru/weather-samara-4618/" target="_blank">Погода в Самаре</a>
</div>
<div class="gsLinks">
<table>
<tr>
<td>
<div class="leftCol">
<a href="https://www.gismeteo.ru/" target="_blank">
<img alt="Gismeteo" title="Gismeteo" src="https://nst1.gismeteo.ru/assets/flat-ui/img/logo-mini2.png" align="middle" border="0" />
<span>Gismeteo</span>
</a>
</div>
<div class="rightCol">
<a href="https://www.gismeteo.ru/weather-samara-4618/2-weeks/" target="_blank">Прогноз на 2 недели</a>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<sc ript async src="https://www.gismeteo.ru/api/informer/getinformer/?hash=Ghv74hlbk3krPJ" type="text/javascript"></sc ript>
<!-- Gismeteo informer END -->
[/CODE]В принципе он работает. Но теперь нужно ссылку внизу информера "проноз на 2 недели" заменить на "прогноз на 3 дня". И я никак не пойму, вроде ничего сложного, взял да поменял строчку[CODE] <a href="https://www.gismeteo.ru/weather-samara-4618/2-weeks/" target="_blank">Прогноз на 2 недели</a>[/CODE]на [CODE] <a href="https://www.gismeteo.ru/weather-samara-4618/3-days/" target="_blank">Прогноз на 3 дня</a>[/CODE]Но фиг там был. После такой модификации информер начинает вести себя неадекватно. Один раз обновишь страницу - всё нормально, другой раз обновишь - опять 2 недели, и так раз через 10, то одно вылезает, то другое. Я уж и кеш чистил, и историю чистил и всё равно не понимаю, откуда он код на 2 недели берет. Информер нельзя модифицировать что ли или я что-то не учёл по незнанию?