Posted by Ubbe on July 21, 2009 at 3:37pm
Mitt mål är att visa kalenderhändelser från en webbplats i ett block på en annan webbplats.
Hur gör man detta på lättaste sätt?
Mitt mål är att visa kalenderhändelser från en webbplats i ett block på en annan webbplats.
Hur gör man detta på lättaste sätt?
Comments
Detta inbegriper två delar:
Detta inbegriper två delar: sidan som inkluderar ditt kalender och sidan som genererar kalendern. Du kan inkludera kalendern genom generellt sett tre olika metoder:
Beroende på metod behöver sajten som tillhandahåller kalendern förpacka den på lämpligt sätt.
Om du använder en IFRAME tag bör den andra sajten tillhandahålla ett komplett HTML-dokument med body, head et c, med andra ord valideras som en webbsida. Om du använder SSI eller AHAH är det enklast att skicka ett fragment, det vill säga ett litet stycke HTML som du stoppar in i din sida. Om du använder AJAX måste sajten på andra sidan skicka XML, eller som är vanligtast: JSON, som du sedan parsar och genererar HTML utav.
Det absolut snyggaste sättet enligt mig, även om det ändå inte är det lättaste, att göra detta på är att använda modulen Views Calendar, skapa en kalendervy som ett block eller en sida och sedan installera modulen AJAX Endpoints for Views. Den sistnämnda modulen tillhandahåller style-pluginer för Views så att du kan visa din vy som JSON, XML eller förenklad HTML. Ställ in att ändpunkten ska generera HTML. Du kan då med jQuery på den andra sajten hämta in ditt block:
I exemplet ovan antar jag du har ett block du skapat själv (skapat med 'Lägg till block' på blockadministrationssidan). Det blocket kommer få innehållet från den andra sajten.
Du kan också använda drupal_http_request() för att använda dig av SSI genom att placera denna PHP-kod i ditt egenskapade block:
Resutatet kommer vara detsamma. Skillnaden är att med SSI gör webbservern jobbet. Med AHAH är det webbläsaren som hämtar in data. Det finns för- och nackdelar med båda lösningarna.
Du kan också använda en IFRAME som visar en sidan på andra sajten som innehåller kalendern. Låt oss säga att den sidan har adressen http://kalendersida.se/kalender/iframe. Skapa en kopia av
page.tpl.phpi ditt tema som du döper tillpage-kalender-iframe.tpl.php. Rensa ut all ovidkommande HTML i denna, ha bara med det allra viktigaste (t ex$script,$styles,$contentet c). Rensa sedan Drupalsajtens cache (admin/settings/performance). Om du går till kalenderns sida (http://kalendersida.se/kalender/iframe) ska du nu se en väldigt enkel sida med bara din vy. Med HTML kan du sedan placera den i en IFRAME, så här:IFRAME-metoden är enklast och kräver enbart kunskaper i theming. De andra två metoderna kräver att man kan programmera lite.
Vi använder ofta en kombination av dessa tekniker beroende på ändamål och krav.
Jakob Persson - NodeOne
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
iCal?
En annan variant vore väl att låta första kalendern mata ut exempelvis ett iCal-feed, som du sedan importerar till kalender två.
Det kräver att båda kalendrarna stödjer iCal-formatet (eller något annat gemensamt format), men så länge du använder Drupal borde det inte vara något problem.
//Johan Falk, NodeOne
**
Vill du lära dig mer om Drupal? Kolla in samlingen av tips och guider!
Har du en fråga om Drupal? Missa inte FAQ-sidan på forumet!
Kolla in min senaste guide: Sju steg mot svart bälte i att tema Drupal