Joomla 3.x Ошибка в парсере погоды

Тема в разделе "Ошибки при работе с Joomla", создана пользователем pro100drug, 17.05.2016.

  1. pro100drug
    Offline

    pro100drug Недавно здесь

    Регистрация:
    08.08.2015
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Добра Вам, одноклубники ;)
    Помогите пожалуйста решить проблему ошибки в погоде:
    Warning: simplexml_load_file(): ./cache/weather23471.xml:1: parser error : AttValue: " or ' expected in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): tp-equiv="X-UA-Compatible" content="IE=edge"><title>404</title><meta http-equiv= in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): ^ in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): ./cache/weather23471.xml:1: parser error : attributes construct error in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): tp-equiv="X-UA-Compatible" content="IE=edge"><title>404</title><meta http-equiv= in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): ^ in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): ./cache/weather23471.xml:1: parser error : Couldn't find end of Start Tag meta line 1 in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): tp-equiv="X-UA-Compatible" content="IE=edge"><title>404</title><meta http-equiv= in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): ^ in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): ./cache/weather23471.xml:1: parser error : xmlParseEntityRef: no name in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Warning: simplexml_load_file(): port:function(e){var t=new Image;t.onload=t.onerror=function(){e(1===this.width& in /httpdocs/modules/mod_weather/mod_weather.php on line 47

    Код модуля:
    Код (CODE):
    1. <?php
    2.     defined('_JEXEC') or die;
    3.      $jMenu = JFactory::getApplication()->getMenu("site");
    4.      $lang = $jMenu->getActive()->language;
    5.  
    6.  
    7. // id = 28437
    8. function get_weather($id){
    9.     $content_file = './cache/weather'.$id.'.xml';
    10.     $url='http://export.yandex.ru/weather-ng/forecasts/'.$id.'.xml';
    11.     $time_file = './cache/time'.$id;
    12.     $time_cache = 7200;
    13.     $wa =array();
    14.     if (file_exists($time_file)){
    15.         $time= file($time_file);
    16.     }
    17.     else{
    18.         $time[0]=0;
    19.     }
    20.  
    21.     if($time[0]<time()){
    22.         $xml_content = file_get_contents($url);
    23.         if($xml_content!=''){
    24.             if($fp=fopen($content_file, "w+")){
    25.                  fwrite($fp,$xml_content);
    26.                  fclose($fp);
    27.             }
    28.             $new_time = time()+$time_cache;
    29.             if($fp=fopen($time_file,"w+")){
    30.                  fwrite($fp,$new_time);
    31.                  fclose($fp);
    32.             }
    33.             $xml = simplexml_load_string($xml_content);
    34.             $wa[] = $xml->fact[0]->temperature;
    35.             $wa[] = $xml->informer[0]->temperature[0];
    36.             $wa[] = $xml->informer[0]->temperature[1];
    37.             return $wa;
    38.         }
    39.     }
    40.     else{
    41.         $xml= simplexml_load_file($content_file);
    42.         $wa[] = $xml->fact[0]->temperature;
    43.         $wa[] = $xml->informer[0]->temperature[0];
    44.         $wa[] = $xml->informer[0]->temperature[1];
    45.         return $wa;
    46.     }
    47. }
    48. $out = get_weather('23471');
    49. if ($lang == 'ru-RU'){
    50.         echo '<div class="weather">
    51.             <span class="weather_word">Погода</span><br /> <span class="fact-weather">Город '.$out[0].' °С</span>
    52.         </div>';
    53. }  elseif ($lang == 'en-GB'){
    54.         echo '<div class="weather">
    55.             <span class="weather_word">The Weather</span><br /> <span class="fact-weather">City '.$out[0].' °С</span>
    56.         </div>';
    57. }
    58. ?>
    line 47 это "$xml= simplexml_load_file($content_file);"

    Спрашивал по ключевым словам Google, но ничего к сожалению не помогло. Добавлял в .htaccess "php_value allow_url_fopen On" и "php_flag allow_url_fopen On", но тщетно :(
     
  2.  
  3. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Яндекс, как я понял, больше не даёт выгрузки в XML. Точнее даже, как я понял, Яндекс никогда официально и открыто такие выгрузки не предоставлял.
    Ты посмотри что он тебе в weather.xml помещает. Там код страницы с ошибкой 404, естественно он не может её спарсить.

    Можно делать, например, из выгрузок meteoservice.ru

    mod_weather
    Код (PHP):
    1. <?php
    2.  
    3. defined('_JEXEC') or die('Прямой доступ закрыт');
    4.  
    5. $cityId   = $params->get('cityId', '37'); // Можешь через поле в админке код забивать. А можно вообще в админку подключить КЛАДР...
    6. $source = 'http://xml.meteoservice.ru/export/gismeteo/point/'.$cityId.'.xml';
    7.  
    8. $weather = simplexml_load_file($source);
    9.  
    10. $cityName   = urldecode($weather->REPORT->TOWN['sname']);
    11. $tempMin   = $weather->REPORT->TOWN->FORECAST->TEMPERATURE['min'];
    12. $tempMax   = $weather->REPORT->TOWN->FORECAST->TEMPERATURE['max'];
    13.  
    14. require JModuleHelper::getLayoutPath('mod_weather', $params->get('layout', 'default'));
    15.  
    16. ?>


    tmpl/default.php
    Код (PHP):
    1. <?php defined('_JEXEC') or die('Прямой доступ закрыт'); ?>
    2.  
    3. <div class="weather-block">
    4.    <div class="spacer">
    5.      Сегодня в городе <?php echo $cityName; ?>: от <?php echo $tempMin; ?> до <?php echo $tempMax; ?>
    6.    </div>
    7. </div>


    На, почитай что можно достать из ихнего XML:
    http://www.meteoservice.ru/content/export.html

    "Вот так. В таком духе, в таком разрезе..." (с)
    :)
     
  4. pro100drug
    Offline

    pro100drug Недавно здесь

    Регистрация:
    08.08.2015
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Некоторых нужных городов нет в списке, и не у всех есть "Погода на сегодня" ‒ не подходит :(
    Может кто сможет сделать из этих советов? Мне бы под формат модуля, который указал выше :oops:
     
  5. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Покумекай сам то!
    Я только завтра смогу ответить.
     
  6. pro100drug
    Offline

    pro100drug Недавно здесь

    Регистрация:
    08.08.2015
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Не хватает кумекалки :(
     
  7. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской

Поделиться этой страницей

Загрузка...