[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Wetter auf der Webseite - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
dj-giver
Beiträge: 79
Registriert: 8. Sep 2009, 13:30

Wetter auf der Webseite

31. Jul 2014, 12:38

Hallo Leute,

wir möchten gerne auf unserer Seite das aktuelle Wetter und die Uhrzeit anzeigen lassen.
Es sollte nicht ein fertiges Wetter-Widget sein, sonder sehr dezent in einem Bild stehen.

Hier ist das ganze realisiert worden:
http://www.rilano-hotel-hamburg.de/

leider bekommen wir nicht raus, wie das ganze läuft. Es wird sicher eine API sein, aber welche und wie???

Hat da jemand eine Tip für mich?

Vielen Dank für eure Hilfe.

LG Sven

Meusi
Beiträge: 158
Registriert: 18. Mär 2009, 16:18

Re: Wetter auf der Webseite

31. Jul 2014, 16:46

Wir benutzen für unsere Seite folgende API:

http://openweathermap.org/
http://openweathermap.org/current

Hier ein kleiner Beispielcode von ein anderen CMS:

Code: Alles auswählen

<?php

$filename = cache::getFileName(0, 'header');

if(!cache::exist($filename)) {
		
	$datei = 'http://api.openweathermap.org/data/2.5/weather?lat=50.239632&lon=11.33308&lang=de';
	
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $datei);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	$content = curl_exec($curl);
	curl_close($curl);
		
	$weather_json = json_decode($content, true);
	
	$icon = $weather_json['weather'][0]['icon'];
	$icon_title = $weather_json['weather'][0]['description'];
	
	$file_content = json_encode(array('icon'=>$icon, 'desc'=>$icon_title));
	
	cache::write($file_content, $filename);
	
} else {
	
	$file_content = json_decode(cache::read($filename), true);
	$icon = $file_content['icon'];
	$icon_title = $file_content['desc'];
	
}
?>
<img src="Bilder/header/<?php echo $icon; ?>.jpg" alt="" title="<?php echo $icon_title; ?>"  />
Vielleicht hilft dir das ein bisschen :)
Folgende Threads stehen offen:

Benutzeravatar
rkemmere
Beiträge: 486
Registriert: 6. Feb 2007, 17:47
Kontaktdaten: Website

Re: Wetter auf der Webseite

31. Jul 2014, 21:16

Ich habe hier sowas umgesetzt (Oben neben der Navigation)

http://www.kapitaenshaus-waren.de/

Arbeitet mit openweater API von wetter.com.

http://www.wetter.com/mein_wetter/register/
http://www.wetter.com/apps_und_mehr/website/api/


Eingabe:

Code: Alles auswählen

<h2 class="rex-hl2">Wetter mit Vorhersage</h2>
<table class="rex-table">
<tr>
    <td colspan=2><p>Das Wetter wird über die OpenWeather Schnittstelle von Wetter.com geholt. Eingabe der PLZ ist im Modul erforderlich.
        </p> </td></tr>
    
        <tr><td>PLZ</td>
    <td><input type="text" size="50" name="VALUE[1]" value="REX_VALUE[1]" /></td>
    </tr>
    
</table><br /> 
Ausgabe

Code: Alles auswählen

<?php

class Widget_WeatherCom
{
    
    private $_url = 'http://api.wetter.com';
    private $_projectName;
    private $_apiKey;
 
    public function __construct($projectName, $apiKey)
    {
        $this->_projectName = $projectName;
        $this->_apiKey = $apiKey;
    }
 
    // return first result if there are more than one
    public function search($search)
    {
        // if it's a number, it's a postcode
        if (is_numeric($search)) {
            $checksum = md5($this->_projectName.$this->_apiKey.$search);
            $url = $this->_url.'/location/plz/search/'.$search.'/project/'.$this->_projectName.'/cs/'.$checksum.'';
        } else {
            $checksum = md5($this->_projectName.$this->_apiKey.$search);
            $url = $this->_url.'/location/index/search/'.$search.'/project/'.$this->_projectName.'/cs/'.$checksum.'';
        }
        
        $ch = curl_init();
                $timeout = 5; // 0 wenn kein Timeout
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                $file_content = curl_exec($ch);
                curl_close($ch);

        $api = simplexml_load_string(utf8_encode($file_content));

        return $api->result->item->city_code[0];
    }
 
    public function getForecast($cityCode)
    {
        
        $checksum = md5($this->_projectName.$this->_apiKey.$cityCode);
        $url = $this->_url.'/forecast/weather/city/'.$cityCode.'/project/'.$this->_projectName.'/cs/'.$checksum.'';
               
        $ch = curl_init();
                $timeout = 5; // 0 wenn kein Timeout
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                $file_content = curl_exec($ch);
                curl_close($ch);
        
        
        $api = simplexml_load_string(utf8_encode($file_content));
        
        /*
        print '<pre>';
        print_r($api);
        print '</pre>';
        */

        return $api->forecast;
    }
}
 

$sProjectName   = 'projektname';
$sApiKey        = '12345678';
$sSearchString = "REX_VALUE[1]";


$myWeather = new Widget_WeatherCom($sProjectName, $sApiKey);
$searchResult = $myWeather->search($sSearchString);
$weatherInformation = $myWeather->getForecast($searchResult);

//var_dump($weatherInformation);

$wetter = array();

$i = 1;
foreach($weatherInformation->date as $weather) {  
   
    $wetter[$i]['wochentag'] = $weather->attributes()->value;
    // time[1] = Mittags
    $wetter[$i]['zustand'] = $weather->time[1]->w_txt;
    $wetter[$i]['tiefsttemperatur'] = $weather->time[1]->tn;
    $wetter[$i]['hoechsttemperatur'] = $weather->time[1]->tx;    
    $wetter[$i]['windrichtung'] = $weather->time[1]->wd_txt;    
    $wetter[$i]['windgeschwindigkeit'] = $weather->time[1]->wd_txt;    
    $wetter[$i]['icon'] = $weather->time[1]->w;

    $i++;
}



echo '<div class="row-fluid"><div class="span2"></div><div class="span8"><h2>Wetter</h2><div class="well">';


$j = 0;

$txt_date = array('Heute', 'Morgen', 'Übermorgen');

foreach($wetter as $entry)    {
         
        // Icons am Tag: d_<erste Ziffer des Wetterzustandcodes>_b.png bzw. Icons in der Nacht: n_<erste Ziffer des Wetterzustandcodes>_b.png
    // Ist der Wetterzustand für Mittags also zum Beispiel 43 würde sich daraus das Icon d_4_b.png ergeben. 

        $icon = 'd_'.substr($entry['icon'][0], 0, 1).'_L.png';
        $date = date('d-m-Y', strtotime(    $entry['wochentag'][0]));
        
        
        print '<div class="span4">';    
        print '<div class="date"><h3>'.$txt_date[$j].'</h3></div>';        
        print '<div class="date"><span>'.$date.'</span></div>';        
        print '<div class="icon"><span title="'.utf8_decode($entry['zustand'][0]).'"><img src="./assets/images/'.$icon.'" alt="'.utf8_decode($entry['zustand'][0]).'" title="'.utf8_decode($entry['zustand'][0]).'"/></span></div>';        
        print '<div class="icon_text">'.utf8_decode($entry['zustand'][0]).'</div>';
        print '<div class="temp"><span title="Tagesh&ouml;chstwerte: '.$entry['tiefsttemperatur'][0].' bis '.$entry['hoechsttemperatur'][0].' &deg;C">Temperatur von '.$entry['tiefsttemperatur'][0].' bis '.$entry['hoechsttemperatur'][0].' &deg;C</span></div>';
    print '</div>';
    
        $j++;
    }

echo '</div></div><div class="span2"></div></div>';

/*
//$sSearchUrl     = 'http://api.wetter.com/location/plz/search/'; // TO SHOW city_code
//$sSearchUrl     = 'http://api.wetter.com/forecast/weather/city/';

// http://api.wetter.com/forecast/weather/city/<CityCode>/project/<Projektname>/cs/<Checksumme>
// Generieren der Checksumme, muss für jeden neuen Suchstring berechnet werden
$sChecksum  = md5($sProjectName . $sApiKey . $sSearchString);

$sSearchUrl .= $sSearchString;
$sSearchUrl .= '/project/' . $sProjectName;
$sSearchUrl .= '/cs/' . $sChecksum;
 

print $sSearchUrl;
            
*/            
?>
Viele Grüße
Ronny

Zurück zu „Allgemeines [R4]“