Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 08. Mai 2014 12:21
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Feed mit XMLMadeSimple - Google Data Elemente einbinden
Moderator Edit: Fortsetzung von http://www.cmsmadesimple.de/forum/viewtopic.php?id=2357
Ich gehe hier nochmal ran, weil ich eine Idee habe, wie man zwei Probleme gleichzeitig lösen könnte, nämlich
das hier beschriebene, die Werte des Tags <content> aufspalten zu müssen
und weitere Weichen einbauen zu müssen, wenn man unterschiedliche Eintragstypen hat, als da wären single Events (1), wiederkehrende Events mit (2a) und ohne Einzeländerung (2b)
Generell besteht bei wiederkehrenden Terminen das Problem, dass keine Angaben zum Veranstaltungsdatum der einzelnen Einträge verfügbar sind, sondern nur, wann der erste Termin mal war.
Allerdings: Innerhalb von <entry> stehen in der full-Ausgabe des Feeds wohlgeordnet weitere Tags des Musters <gd:diesunddas>, siehe folgenden Ausschnitt:
[== XML (Kalenderfeed full, Ausschnitt) ==]
<entry>
<id>http://www.google.com/calendar/feeds/palimpalimgroup.calendar.google.com/public/full/palimpalim</id>
<published>2014-02-26T16:10:52.000Z</published>
<updated>2014-04-02T12:57:22.000Z</updated>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'/>
<title type='text'>Posaunenchor</title>
<content type='text'>Posaunenbeschreibung</content>
<link rel='alternate' type='text/html' href='https://www.google.com/calendar/event?eid=palimpalim' title='alternate'/>
<link rel='self' type='application/atom+xml' href='https://www.google.com/calendar/feeds/palimpalim40group.calendar.google.com/public/full/palimpalim'/>
<author>
<name>palimpalim@gmail.com</name>
<email>palimpalim@gmail.com</email>
</author>
<gd:comments>
<gd:feedLink href='https://www.google.com/calendar/feeds/palimpalim40group.calendar.google.com/public/full/palimpalim/comments'/>
</gd:comments>
<gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'/>
<gd:where valueString='Pfarrhaus'/>
<gd:who email='palimpalim@group.calendar.google.com' rel='http://schemas.google.com/g/2005#event.organizer' valueString='Kirchenmusik'/>
<gd:when endTime='2014-04-30T21:00:00.000+02:00' startTime='2014-04-30T19:45:00.000+02:00'/>
<gd:transparency value='http://schemas.google.com/g/2005#event.opaque'/>
<gCal:anyoneCanAddSelf value='false'/>
<gCal:guestsCanInviteOthers value='true'/>
<gCal:guestsCanModify value='false'/>
<gCal:guestsCanSeeGuests value='true'/>
<gCal:sequence value='0'/>
<gCal:uid value='palimpalim@google.com'/>
</entry>
Langer Rede kurze Frage: Wie komme ich an die Werte von <gd:where> <gd:when endTime startTime> ran? {$xml|print_r} gibt nix aus.
Beitrag geändert von Andynium (21. Mai 2014 04:27)
Offline
#2 08. Mai 2014 16:54
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Langer Rede kurze Frage: Wie komme ich an die Werte von <gd:where> <gd:when endTime startTime> ran? {$xml|print_r} gibt nix aus.
Ähmm, wo kommt den plötzlich $xml her?
Hast du dir schon mal $feeds angeschaut (wenn ich mal von deinem obigen Template ausgehe)?
Offline
#3 08. Mai 2014 18:32
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
{$xml|print_r} gibt mehr aus als {$feeds|print_r}, die gd-Teile ignorieren beide.
Offline
#4 09. Mai 2014 22:04
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Müsste man mal in die Sourcen schauen, ob es sich an dem ":" verschluckt ... nur fehlt mir momentan die Zeit
Offline
#5 09. Mai 2014 10:26
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
... ob es sich an dem ":" verschluckt ...
So ist es. Hab es mal andersherum getestet und eine geänderte statische XML-Datei ohne Doppelpunkte eingebunden. Und siehe da, die Tags werden ausgegeben und können verwendet werden.
Dieses einfache Template funktioniert mit meinem statischen Testfeed:
[== Smarty ==]
{foreach from=$feeds item='item'}
{assign var="titel" value=$item->title}
{assign var="beschreibung" value=$item->content}
{assign var="ort" value=$item->gdwhere.valueString}
{assign var="beginn" value=$item->gdwhen.startTime|date_format:"%d. %B %Y · %R Uhr"}
<p>Titel: {$titel}<br>
Beschreibung: {$beschreibung}<br>
Wo: {$ort}<br>
Wann: {$beginn}
</p>
{/foreach}
Im eingehenden Feed müsste also z.B. automatisch <gd:where> durch <gdwhere> ersetzt werden. Ich weiß aber leider nicht, in welche Datei man das einbaut oder ob das ein Plugin bewerkstelligen kann.
Offline
#6 09. Mai 2014 10:44
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Da es ja nicht nur gd:where, sondern alle gd: Werte betrifft, würde ich eher "gd:" pauschal durch "gd" ersetzen. Dieses replace sollte im Normalfall in der action.default.php passieren.
Offline
#7 12. Mai 2014 16:37
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Dieses replace sollte im Normalfall in der action.default.php passieren.
Probier mal dies (ungetestet) - Zeile 35 ändern von
$xml = $feed->getFeed();
in
$xml = str_replace('gd: ','gd',$feed->getFeed());
Offline
#8 12. Mai 2014 19:15
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Gibt leider nur eine 1 aus.
Kann man irgednwie herausfinden, ob die Doppelpunkt-Tags den Ruf überhaupt hören oder gar nicht erst ankommen?
Offline
#9 13. Mai 2014 17:03
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Das Modul ist möglicherweise nicht optimal für die Ausgabe der gd Daten gerüstet.
Probier mal, ob du mit der folgenden Variablen im Template den gesuchten Wert erhältst:
{$entry->children('http://schemas.google.com/g/2005')->when->attributes()->startTime}
Offline
#10 14. Mai 2014 15:31
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Daraufhin meckert die Smartybase und haut einen Fatal error raus:
Fatal error: Call to a member function children() on a non-object in /home/sagichnicht/public_html/lib/smarty/libs/sysplugins/smarty_internal_templatebase.php(151) : eval()'d code on line 50
Allerdings gibt es ein Add-on für den Feed-Parser SimplePie, das genauso agiert, ich habe auch gleich mit dem CMSMS-Modul RSSSimplePie experimentiert, kriege das Add-on dort wg. mangelhafter PHP-Kenntnisse nicht eingebaut.
Link zum Add-on (Scrollen bis zum Example): http://simplepie.org/wiki/reference/sim … item_class
Und der entscheidende Auszug:
[== PHP ==]
// Retrieve the <gd:when startTime="" /> value.
function get_gcal_starttime($format = false)
{
// We want to grab the Google-namespaced <gd:when> tag.
// http://simplepie.org/wiki/tutorial/grab_custom_tags_or_attributes
$when = $this->get_item_tags('http://schemas.google.com/g/2005', 'when');
// Once we grab the tag, let's grab the startTime attribute
$date = $when[0]['attribs']['']['startTime'];
if ($format)
{
// Let's pass it through strtotime() and then format it with date(). This will be the date we display.
return date($format, strtotime($date));
}
else
{
// Otherwise we'll return it as-is with no modifications.
return $date;
}
}
Und damit bin ich dann leider wieder off beat.
Beitrag geändert von COR9 (14. Mai 2014 15:33)
Offline
#11 15. Mai 2014 16:11
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Hmm, zu blöd, dass Smarty dazwischen funkt - unter PHP funktioniert es bestens ...
Offline
#12 20. Mai 2014 14:51
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Eine Bitte @cyberman:
Da für mich ein wesentlicher Teil eines Projektes daran hängt und so eine Kompletteinbindung eines Google-Kalenders auch von allgemeinem Interesse ist: Bitte trenne doch den Thread bei z.B. #19 ab und gib dem neuen einen Titel wie »Feed mit XMLMadeSimple - Google Data Elemente einbinden« o.ä.
Vielleicht nimmt dann noch jemand an der Diskussion teil.
Vielen Dank.
Offline
#13 21. Mai 2014 04:22
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Schon geschehen!
Offline
#14 04. Juni 2014 11:04
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: Feed mit XMLMadeSimple - Google Data Elemente einbinden
Ich mache jetzt mal hier weiter mit dem Versuch, das Modul GoogleCalendar zu reanimieren.
Vorarbeiten
Auf einem alten System nötige Module installiert mit folgenden Versionen:
Core 1.6.1
CGExtensions 1.15
GoogleCalendar 0.1.1
ZendFramework 1.0.4
GoogleCalendar will daraufhin den korrekten Pfad zum Zend-Framework. Deshalb ZendFramework installiert und dies auskommentiert:
[== GoogleCalendar.module.php(115) ==]
#require_once 'Zend/Loader.php';
Daraufhin wird vom Kalendermodul nur noch die Überschrift und der Hilfe-Link angezeigt. Der Aufruf des Feeds bringt im Frontend einen Fatal error:
Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 400' in /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/App.php:286 Stack trace: #0 /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/App.php(132): Zend_Gdata_App::import('http://www.goog...', Object(Zend_Http_Client), 'Zend_Gdata_Cale...') #1 /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata.php(109): Zend_Gdata_App->getFeed('http://www.goog...', 'Zend_Gdata_Cale...') #2 /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/Calendar.php(98): Zend_Gdata->getFeed('http://www.goog...', 'Zend_Gdata_Cale...') #3 /home/meineseite/public_html/modules/GoogleCalendar/GoogleCalendar.module.php(130): Zend_Gdata_Calendar->getCalendarEventFeed(Object(Zend_Gdata_Calendar_EventQuery)) #4 /home/meineseite/public_html/modules/GoogleCalendar/action.default.php(22): GoogleCalendar->get_events(Array, '') #5 /home/meineseite/public_html/lib/classes/cl in /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/App.php on line 286
An allen Fehlerstellen steht $uri, also werden entweder meine Queries (z.B. full statt basic) nicht unterstützt oder eine anders strukturierte URL (alte Calendar-API?) wird erwartet oder die korrekte falsch verarbeitet.
Kann mir hier jemand weiterhelfen?
Offline
Seiten: 1