Liste der Anhänge anzeigen (Anzahl: 1)
[site_export] Seiten-Export und Epub-Generierung (Ebook)
Hier mal meine erste umfangreichere Erweiterung für Contao: Site-Export
Mit dieser Erweiterung lassen sich die Artikel ganzer Seitenbäume als einzelne HTML-Dateien oder als E-Book (Epub) exportieren. Anwendungsmöglichkeiten sind:
- Seiten für die Offline-Nutzung exportieren
- Seiten für die Nutzung in anderen Anwendungen (bspw. mobile Apps für iPhone und Co.) exportieren
- Epub E-Books von bestehenden Seiten erzeugen
Denkbar ist auch der Einsatz als E-Book-Publishingsystem. Durch die ausgefeilte Rechteverwaltung von Contao können ja verschiedene Autoren an ihren Artikel/Kapiteln eines Buchs gemeinsam arbeiten und dieses Buch lässt sich dann zentral als Epub exportieren.
Export-Set
Im Export-Set definiert man das Export-Verzeichnis und wählt die zu exportierenden Seiten aus. Für jedes Export-Set lässt sich ein extra Layout definieren, so dass die Seiten unabhängig vom Webseitenlayout frei exportiert werden können. Auf Wunsch wird automatisch ein eingerücktes oder flaches Inhaltsverzeichnis (toc.html) erstellt. Dabei wird die Struktur komprimiert, so dass keine Lücken entstehen, wenn in der Seitenstruktur nicht alle Ebenen enthalten sind.
Epub
Soll aus den exportieren Seiten ein Epub erzeugt werden, können dazu ein Cover-Bild und weitere notwendige Informationen wie bspw. Titel, Beschreibung, ID, Autor oder Sprache definiert werden.
Wichtig ist, dass dazu auf jeden Fall ein extra Layout angelegt und eingebunden wird, welches der Epub-Definition entspricht.
Ersetzungsregeln
Zu jedem Export-Set können beliebig viel Exportregeln angelegt werden, mit denen die Seiten vor dem Export noch angepasst werden können. Die Regeln können einfache Ersetzungen oder reguläre Ausdrücke enthalten. So können damit zum Beispiel bestimmte Inhaltselemente entfernt werden, die nicht mit im Export enthalten sein sollen. Mit diesem Suchmuster und einem leeren Ersetzungsausdruck wird bspw. das Inhaltselement Artikelliste komplett aus dem Export entfernt:
Code:
<(nav|div) class="ce_article_list block">(.*)</(nav|div)>
Als Modifikatoren sollten i m s und U gesetzt werden.
Export
Beim Export werden im ersten Schritt die zu exportierenden Seiten angezeigt. Im zweiten Schritt werden schon vorhandene Dateien im Export-Verzeichnis gelöscht und die ausgewählten Seiten exportiert.
Die Seiten werden alle ins Export-Verzeichnis geschrieben und die Dateinamen werden aus dem Alias generiert. Eingebundene Bilder und Stylesheets werden automatisch mit exportiert und die Verweise werden angepasst. Auch werden interne Links so weit wie möglich an die lokale Struktur angepasst.
Epub-Export
Im dritten Schritt kann dann das Epub erstellt werden. Die notwendigen Verzeichnisse und Dateien werden dazu automatisch generiert:
- mimetype
- OEBPS/toc.ncx
- OEBPS/content.opf
- META-INF/container.xml
Das Inhaltsverzeichnis wird natürlich auch gefüllt.
Anmerkungen
Es handelt sich um eine erste Alpha-Version der Erweiterung. Fehler sind garantiert noch vorhanden und somit ist Vorsicht bei der Nutzung geraten. Wichtig ist, dass im Export-Verzeichnis keine anderen Daten enthalten sind, da diese immer vor dem Export gelöscht werden.
Fehler melden
Fehler oder Feature-Request bitte im entsprechenden Projekt bei Contao-Forge melden.
Anhang 5771
Site Export Fehlermeldung
Hallo,
bei der Generierung der HTML-Dateien erhalte immer die folgende Fehlermeldung
"Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'SiteExport::processImages', to be a valid callback in /homepages/22/d74264111/htdocs/00_www/system/modules/site_export/SiteExport.php on line 542"
"Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'SiteExport::processStylesheets', to be a valid callback in /homepages/22/d74264111/htdocs/00_www/system/modules/site_export/SiteExport.php on line 543"
Hast du eine Idee, woran das liegen könnte. Ich benutze Contao 2.10.2.
HTML-Dateien haben 0KB - beim Export steht ERROR
Hallo Babelfish,
ich wollte auch Deine Erweiterung ausprobieren, leider generiert er bei mir zwar die html-Dateien, aber sie sind alle 0 KByte.
Fehlermeldung: Export … aktuelles_3.html – ERROR –
Contao-Version 3.0.0, vorerst lokal installiert
Habe ein Export-Set angelegt
Seite ausgewählt
Export-Verzeichnis ausgewählt
ein Layout zugewiesen
und beim Inhaltsverzeichnis: eingerücktes Inhaltsverzeichnis - ausgewählt
gespeichert und dann den Export gestartet
Die Vorschau zeig er ganz normal an:
Export starten: Dann zeigt er:
Seiten wurden exportiert. Export … aktuelles_3.html – ERROR –
Gehe ich im Verzeichnis gucken, liegt dort das Inhaltsverzeichnis und meine html-Dateien, aber sie sind alle leer.
Habe ich noch irgendwo ein Fehler? Muss eine Regel definiert werden? Was kann es sein?
Vielen Dank schon mal für die Hilfe
Gruß Anja
Bei mir leere Dateien und Fehlermeldungen unter C3 lokal (XAMPP)
Hallo an alle,
könnte die Erweiterung gerade gut gebrauchen um einen Snapshot der lokal entstehenden Website an meinen internen Kunden weiterzugeben.
Funzt aber net - jedenfalls nicht bis zum Schluss, denn bevor die HTML-Dateien mit Inhalt gefüllt werden, kommt bei jeder die folgende Fehlermeldung:
Warning: file_get_contents(http:///index.php/?export=1&layout=14) [function.file-get-contents]: failed to open stream: operation failed in E:\Develop\meinServer\htdocs\contao\system\modules \site_export\SiteExport.php on line 270
#0 [internal function]: __error(2, 'file_get_conten...', 'E:\Develop\mein...', 270, Array)
#1 E:\Develop\meinServer\htdocs\contao\system\modules \site_export\SiteExport.php(270): file_get_contents('http:///index.p...')
#2 E:\Develop\meinServer\htdocs\contao\system\modules \core\classes\Backend.php(231): SiteExport->export(Object(Contao\DC_Table))
#3 E:\Develop\meinServer\htdocs\contao\contao\main.ph p(121): Contao\Backend->getBackendModule('site_export')
#4 E:\Develop\meinServer\htdocs\contao\contao\main.ph p(319): Main->run()
#5 {main}
So bleiben alle HTML-Dateien bei 0 Bytes, nur die TOC ist gefüllt und auch richtig verlinkt...
Mir scheint, das file_get_contents('http:///index.p...') funktioniert so bei localhost nicht?!
So hat's bei mir geklappt...
Eure Tipps haben mich in die richtige Spur gebracht:
So ein Seiten-"sauger" wie wget wäre sicher noch eine gute Idee, nur suche ich etwas, womit ich viel Einfluss auf Auswahl und Gestaltung des Exports nehmen kann. Ich vermute, das müsste ich dann immer temporär über die Layout-Zuweisungen in Contao machen...
Der vorgeschlagene localhost-Eintrag hat es bei mir so nicht ganz gebracht (auch nicht mit dem u.g. Pfad) . Ich habe dann aber in der
SiteExport.php die Originalzeile 145 mal entsprechend meinen Pfaden ersetzt:
PHP-Code:
# 'httpUrl' => 'http://'.$objPage->domain.'/'.$url,
'httpUrl' => 'http://localhost/contao/'.$url,
Und so geht's!
Für den Export nehme ich dann ein minimalistisches Layout, damit vor allem die Artikel angezeigt werden, und z.B. auch Accordions aufgeklappt sind (oder Javascript aus).
Also, vielen Dank an die nachtaktiven Helfer!
Liste der Anhänge anzeigen (Anzahl: 1)
Danke
Ich habe die Datei jetzt über den Validator laufen lassen und bekomme tatsächlich eine Unmenge an Fehlern.
Das ist schon merkwürdig. Ich habe im Theme ausschließlich die Artikel eingebunden und im Template alles entfernt was nicht nötig ist. Trotzdem findet er anscheinend nicht geschlossene Div, die es aber so nicht gibt ....
Ich werde dann wohl mal das Theme fürs Frontend umschalten und entsprechend validieren lassen.
Bis dahin.
Danke
Rico
Edit: Firefox meldet im Validator keine Probleme. Ich habe mal die Seite die ich als einzige für das Epub ausgewählt habe, hier mit dem entsprechenden Theme versehen: http://test.reitverein-hubertus.de/test.html