"Onepager" mit Contendio

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

"Onepager" mit Contendio

Beitrag von malsdgtac » Mi 17. Feb 2016, 19:17

Ich habe schon ein wenig gesucht, aber zu meiner Idee eigentlich nur diesen Artikel gefunden, der mir nur ansatzweise weiter hilft.
Im konkreten geht es darum, mit Contenido Websites zu erstellen "wie es in Wordpress so einfach geht". Der große Vorteil von Wordpress gegenüber Contenido sind Editoren, die es ermöglichen sich eine Seite ganz einfach selbst "zusammenzubauen" (mit allen Nachteilen) und verschiedene Inhaltselmente selbst zu positionieren und zu verwenden, oder auch nicht.

Die Idee ist nun, pro Kategorie mit mehreren Artikeln zu arbeiten, die im Startartikel "zusammengefasst" werden und über die Sortierreihenfolge sortiert werden können. Die Artikel selber (stellen dann die einzelnen sections dar) können dann je nach Wunsch konfiguriert werden - für die Konfigurationen werden verschiedenste Vorlagen zur Verfügung gestellt.
Das funktioniert grundsätzlich so auch schon ganz gut - aber die Perfomance ist nicht wirklich der Hammer. Im Moment löse ich es so, dass ich alle einzelnen Artiekl über file_get_contents auslese und anzeige. Nur einzelne Inhaltselemente auszulesen reicht nicht aus - weil die Artikelkonfigurationen auch Layouts behinhalten, die beibehalten werden sollen.

Gibt es eine Mölgichkeit "Contenido intern" den Inhalt eines Artikels zu genieren, ohne diese über den Umweg von file_get_contents zu gehen? Ich könnte mir vorstellen, das könnte wesentlich schneller sein - oder gibt es einen anderen Ansatz? Hat von euch schon jemand ein Modul oder Plugin entwickelt, dass das kann?

Vielen Dank für eure Antworten.

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von malsdgtac » Mi 17. Feb 2016, 19:40

Noch eine Frage dazu. In dem verlinkten Artikel ist ja empfohlen concache zu nutzen - das habe ich jetzt versucht. Es wird aber eine Datei cms/inlcudes/concache.php dafür benötigt - die gibt es aber nicht in der Version 4.9.8?

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von Faar » Mi 17. Feb 2016, 20:36

smac hat geschrieben:Im konkreten geht es darum, mit Contenido Websites zu erstellen "wie es in Wordpress so einfach geht". Der große Vorteil von Wordpress gegenüber Contenido sind Editoren, die es ermöglichen sich eine Seite ganz einfach selbst "zusammenzubauen" (mit allen Nachteilen) und verschiedene Inhaltselmente selbst zu positionieren und zu verwenden, oder auch nicht.
Das ist gelinde gesagt, eine Theme-Katastrophe. Aber soll Wordpress damit zu Grunde gehen, Contenido wird es nicht.
Die Idee ist nun, pro Kategorie mit mehreren Artikeln zu arbeiten, die im Startartikel "zusammengefasst" werden und über die Sortierreihenfolge sortiert werden können.


Vielleicht gibt es dazu ein jQuery, mit dem durch das Sortieren automatisch die Sortiernummer der Artikel geändert werden.
Das bräuchte zumindest auch ein Backend-Modul, das die Ajax Anfrage bearbeitet (und in der Datenbank die Zahlen ändert).
aber die Perfomance ist nicht wirklich der Hammer
Das liegt sicher an der sehr abstrakten Architektur vom Core.
weil die Artikelkonfigurationen auch Layouts behinhalten, die beibehalten werden sollen.
Hier bin ich raus. :shock:
Was soll da unterschiedliches beibehalten werden?
Templates (Vorlagen)?
Gibt es eine Mölgichkeit "Contenido intern" den Inhalt eines Artikels zu genieren, ohne diese über den Umweg von file_get_contents zu gehen?
Was hat file_get_contents mit einer Artikel-Generierung zu tun?
Hiermit gehts vielleicht: http://api.contenido.org/con490/class-c ... ction.html (create)
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von homtata » Do 18. Feb 2016, 10:19

Wir haben hier im Forum verschiedene Module gepostet (Artikellisten, Article Includes usw.), mit denen sich solche Dinge mit etwas Programmierkenntnis m.E. nach umsetzen lassen müssten:

Zur Modulübersicht:
http://forum.contenido.org/viewtopic.php?f=89&t=36453

LG

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von malsdgtac » Do 18. Feb 2016, 14:29

Diese Auflistung kannte ich noch gar nicht, vielen Dank für den Tipp.

Vielleicht poste ich hier mal, was ich schon mache. Das folgende Modul ist im Startartikel eingebunden:

Code: Alles auswählen

$collector = new cArticleCollector(array('idcat' => $idcat, 'order' => 'sortsequence', 'direction' => 'ASC'));
$collector->loadArticles();
$showarticles = array();
while($article = $collector->nextArticle()) {
	$showarticle = array();
	$showarticle['idart'] = $article->getField('idart');
	$showarticles[] = $showarticle;
}	

foreach($showarticles as $article) {
	$url = "http://".$_SERVER['HTTP_HOST']."/front_content.php?idart=".$article['idart']."&include=yes";
	$sectioncontent = file_get_contents($url);
	echo "<section>";
	echo $sectioncontent; 
	echo "</section>";
}
Ich hole mir also alle Artikel der Kategorie, lese den Inhalt aus und zeige diesen im Startartikel in einzelnen Sections untereinander an. Das "file_get_contents" möchte ich, wenn möglich, ersetzen. Ich benötige den Inhalt der einzelnen Artikeln und möchte gerne auf einen "direkteren" Weg darauf zugreifen, weil es so, bei vielen Artikeln lange dauert.
Da in den einzelnen Artikeln unterschiedlichste Varianten von Modulen und Inhalten vorhanden sein können, hilft es mir nicht per "getfield" oder "getContent" darauf zuzugreifen.

LG

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von homtata » Do 18. Feb 2016, 15:08

Dann probiers zuerst mal mit dem Modul mpArticleInclude von xmurrix, das scheint mir hierfür dann der geeignetere Weg zu sein. Mein eigenes Modul ist einfacher gestrickt und holt nur Standard-CMS-Typen per getContent.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von Faar » Do 18. Feb 2016, 15:21

Nur so als Idee:

In der foreach-Schleife könnte doch mit der cAPIArticleCollection auf fetchByID($id) zugegriffen werden: http://api.contenido.org/con498/source- ... #1024-1039
Die Artikel ID hast du ja alle im Array $showarticles und jedes $article enthält dann die gesuchte Artikel ID.
fetchByID greift auf loadItem($id) zurück und das wirft dir jeweils ein Objekt aus, vermutlich mit allen Daten die einem Artikel entsprechen.

Wenn meine Überlegung richtig ist, hättest du damit was du suchst.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: "Onepager" mit Contendio

Beitrag von malsdgtac » Mo 2. Jan 2017, 19:08

Hallo,

ich habe mich jetzt lange Zeit mit der Erstellung von "Onepager" mit Contenido beschäftigt. Gerne möchte ich meine Ergebnisse auch mit euch teilen.

Die Grundidee habe ich schon weiter oben beschrieben. Es geht darum, aus einer starren Layoutvorgabe auszubrechen und beliebig viele und verschiedene "Designelemente" untereinander zu positionieren. Diese werden als eigene <sections> aufgelistet. Ich gehe dafür so vor, dass ich eine Kategorie anlege, in die alle relevanten Artikel gelegt werden. Der Startartikel bekommt eine Vorlage, der das folgende Modul zugeordnet wird. Man kann sich das so wie die Übersichtsseite einer Newsübersicht vorstellen.

Code: Alles auswählen

<?php
defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');

$categoryHelper = cCategoryHelper::getInstance();
$categoryHelper->setAuth(cRegistry::getAuth());

$collector = new cArticleCollector(array('idcat' => $idcat, 'order' => 'sortsequence', 'direction' => 'ASC'));
$collector->loadArticles();


$showarticles = array();
while($article = $collector->nextArticle()) {
	$showarticle = array();
	$showarticle['idart'] = $article->getField('idart');
	$showarticle['alias'] = $article->getField('urlname');
	$showarticles[] = $showarticle;
}

foreach($showarticles as $article) {

	if ($article['idart'] == $idart)  {
		exit();
	}

	echo "<section id='".$article['alias']."'>\n";
	$url = "http://".$_SERVER['HTTP_HOST']."/cms/front_content.php?idart=".$article['idart']."&include=yes&lang=".$lang;
	$sectioncontent = file_get_contents($url);
	echo $sectioncontent;
	echo "</section>\n";
}
?>
Alle anderen Artikel in der Kategorie können nun beliebige Vorlagen zugeordnet bekommen. Wichtig ist, dass diese Vorlagen immer ein Modul haben, in welchen alle Inhalte zusammengefasst werden, die auf dem Onepager dargestellt werden sollen. Also z.B. alle Textfelder und Bildelemente usw. in einem Modul. Zusätzlich benötigt dieses Modul folgende Codezeile am Anfang:

Code: Alles auswählen

if (isset($_GET['include']) && $_GET['include'] == "yes") ob_end_clean();
und folgende Codezeile am Ende des Moduls:

Code: Alles auswählen

if (isset($_GET['include']) && $_GET['include'] == "yes") exit();
Somit bleibt von diesem Modul nur noch jener Code für den Onepager übrig, der zwischen diesen beiden Codezeilen steht.

Empfehlenswert ist es den Contenidocache zu aktivieren, dadurch laden die Seiten dann superschnell.

Vielleicht kann's ja wer brauchen ;-)

Antworten