Unterschiedliche Artikel-Arten
Unterschiedliche Artikel-Arten
Hallo,
wie gehe ich am besten vor, wenn ich folgendes erreichen möchte:
es gibt unterschiedliche Klassen von Artikeln, also z.B. "News" und "Berichte". News werden von jemand anders eingepflegt als Berichte, News erscheinen viel öfter, Berichte nur wöchentlich. Vielleicht wird es noch weitere Klassen von Artikeln geben.
Beide Artikel-Arten können Kategorien zugeordnet werden.
Auf der Startseite sollen nun in unterschiedlichen Bereichen die jeweils neuesten Artikel für jede Artikel-Klasse aus den zugeordneten Kategorien an unterschiedlichen Stellen erscheinen.
Um das zu verdeutlichen: stellt Euch einfach eine 4 x 4 - Tabelle vor:
Spalte links oben -> 5 neueste News aus Kategorie A
Spalte rechts oben -> 5 neueste Berichte aus Kategorie A
Spalte links unten -> 10 neueste News aus Kategorie B
Spalte rechts unten -> 10 neueste Berichte aus Kategorie B
Wie sollte ich vorgehen? ich kann bei NULL anfangen, hab also die Möglichkeit, es von Anfang an "richtig" zu machen, daher erlaube ich mir mal hier zu fragen nach der "best practice" für sowas.
Danke!
wie gehe ich am besten vor, wenn ich folgendes erreichen möchte:
es gibt unterschiedliche Klassen von Artikeln, also z.B. "News" und "Berichte". News werden von jemand anders eingepflegt als Berichte, News erscheinen viel öfter, Berichte nur wöchentlich. Vielleicht wird es noch weitere Klassen von Artikeln geben.
Beide Artikel-Arten können Kategorien zugeordnet werden.
Auf der Startseite sollen nun in unterschiedlichen Bereichen die jeweils neuesten Artikel für jede Artikel-Klasse aus den zugeordneten Kategorien an unterschiedlichen Stellen erscheinen.
Um das zu verdeutlichen: stellt Euch einfach eine 4 x 4 - Tabelle vor:
Spalte links oben -> 5 neueste News aus Kategorie A
Spalte rechts oben -> 5 neueste Berichte aus Kategorie A
Spalte links unten -> 10 neueste News aus Kategorie B
Spalte rechts unten -> 10 neueste Berichte aus Kategorie B
Wie sollte ich vorgehen? ich kann bei NULL anfangen, hab also die Möglichkeit, es von Anfang an "richtig" zu machen, daher erlaube ich mir mal hier zu fragen nach der "best practice" für sowas.
Danke!
Re: Unterschiedliche Artikel-Arten
Du willst wahrscheinlich ein Template im Magazin-Stil. Allzuviele davon gibt es für s9y derzeit nicht - eigentlich nur Mimbo, zu finden über Spartacus.WATCHDOG wrote:Auf der Startseite sollen nun in unterschiedlichen Bereichen die jeweils neuesten Artikel für jede Artikel-Klasse aus den zugeordneten Kategorien an unterschiedlichen Stellen erscheinen.
Gibt's eine Seite, auf der es so ähnlich oder genauso gemacht wird, wie Du es Dir vorstellst?
Das ist nicht nur sehr "speziell", sondern erschwert es auch ungemeint, das Ganze evtl. über Plugins zu lösen. Theoretisch hättest Du z.B. über das Plugin "Show entries in siderbar" ... aber letztlich ist das alles Quatsch und meines Erachtens nur halbgar.WATCHDOG wrote:Spalte links oben -> 5 neueste News aus Kategorie A
Spalte rechts oben -> 5 neueste Berichte aus Kategorie A
Spalte links unten -> 10 neueste News aus Kategorie B
Spalte rechts unten -> 10 neueste Berichte aus Kategorie B
Nebebei: Meinst Du wirklich oben jeweils die neuesten 5, unten die neuesten 10 - oder doch eher oben 1-5, unten 6-15?
Meines Erachtens ist das vernünftig[tm] nur über ein individuelles Template zu machen. Wobei es sicherlich auch über verschiedene Plugins (Show entries in sidebar, Newsbox etc. pp.) zu lösen ist, aber meiner Ansicht nach ist das der schmerzhaftere Weg.WATCHDOG wrote:Wie sollte ich vorgehen? ich kann bei NULL anfangen, hab also die Möglichkeit, es von Anfang an "richtig" zu machen, daher erlaube ich mir mal hier zu fragen nach der "best practice" für sowas.
Just my two cents,
YL
Re: Unterschiedliche Artikel-Arten
Mit Multicolor könnte es auch gehen.yellowled wrote:eigentlich nur Mimbo, zu finden über Spartacus
YL
Re: Unterschiedliche Artikel-Arten
Hi, danke erstmal für die schnelle Antwort.
also das template würde ich mir gerne selber stricken, ich suche eher nach einem Hinweis für die richtige Vorgehensweise. Dennoch guck ich mir das mal an, was Du mir da empfohlen hast, danke!
Vielleicht hab ich mich nicht deutlich genug ausgedrückt - das, was ich da will, gibts eigentlich auf jeder besseren News-Site, z.B. http://www.washingtonpost.com/
Da gibts auch mehrere unterschiedliche Klassen von Artikeln, die in Ihrem eigenen Seitenbereich gerendert werden. Also nicht nur eine Klasse "Blogeintrag", sondern "News", "Opinions", "Holiday Guide" usw. - ist eigentlich nix kompliziertes oder spezielles, dachte ich zumindest.
Muss nur wissen, wie ich Blogeinträge sinnvoll unterscheiden kann - das wäre womöglich über die Kategorien zu machen, vielleicht ist das aber auch ein Missbrauch, weil sich Kategorien ja eher auf den Inhalt beziehen und nicht auf die Form - möglicherweise gibts da was anderes?
Na und dann muss ja irgendwo im template nur noch sowas wie
render_article(kategorie="x",anzahl=10)
stehen (pseudo-code), dachte ich zumindest.
Das Beispiel mit den Spalten war schon richtig, beachte bitte den konzeptionellen Unterschied zwischen "News" und "Bericht".
also das template würde ich mir gerne selber stricken, ich suche eher nach einem Hinweis für die richtige Vorgehensweise. Dennoch guck ich mir das mal an, was Du mir da empfohlen hast, danke!
Vielleicht hab ich mich nicht deutlich genug ausgedrückt - das, was ich da will, gibts eigentlich auf jeder besseren News-Site, z.B. http://www.washingtonpost.com/
Da gibts auch mehrere unterschiedliche Klassen von Artikeln, die in Ihrem eigenen Seitenbereich gerendert werden. Also nicht nur eine Klasse "Blogeintrag", sondern "News", "Opinions", "Holiday Guide" usw. - ist eigentlich nix kompliziertes oder spezielles, dachte ich zumindest.
Muss nur wissen, wie ich Blogeinträge sinnvoll unterscheiden kann - das wäre womöglich über die Kategorien zu machen, vielleicht ist das aber auch ein Missbrauch, weil sich Kategorien ja eher auf den Inhalt beziehen und nicht auf die Form - möglicherweise gibts da was anderes?
Na und dann muss ja irgendwo im template nur noch sowas wie
render_article(kategorie="x",anzahl=10)
stehen (pseudo-code), dachte ich zumindest.
Das Beispiel mit den Spalten war schon richtig, beachte bitte den konzeptionellen Unterschied zwischen "News" und "Bericht".
Re: Unterschiedliche Artikel-Arten
Klar. {serendipity_fetchPrintEntries} - siehe http://www.s9y.org/78.html.WATCHDOG wrote:Na und dann muss ja irgendwo im template nur noch sowas wie
render_article(kategorie="x",anzahl=10)
stehen (pseudo-code), dachte ich zumindest.
YL
aha, also sowas in der Art dachte ich mir doch, sieht ganz gut aus.
Aber ist die Benutzung von Kategorien die gängige Art und Weise, unterschiedliche Klassen von Texten zu differenzieren? Kategorien würden damit ja zweierlei Bedeutungen bekommen: ein inhaltliches Unterscheidungsmerkmal und ein Merkmal zur Unterscheidung der Form von Artikeln... also ich vermute, das wäre dann Missbrauch?
Andersrum gefragt: hat S9Y nur ein einziges Modell für "Artikel"? Ist es nicht möglich, eine eigene, neue Artikel-Klasse zu definieren?
Also sowas wie "class article_news extends article" (pseudocode) ???
Aber ist die Benutzung von Kategorien die gängige Art und Weise, unterschiedliche Klassen von Texten zu differenzieren? Kategorien würden damit ja zweierlei Bedeutungen bekommen: ein inhaltliches Unterscheidungsmerkmal und ein Merkmal zur Unterscheidung der Form von Artikeln... also ich vermute, das wäre dann Missbrauch?
Andersrum gefragt: hat S9Y nur ein einziges Modell für "Artikel"? Ist es nicht möglich, eine eigene, neue Artikel-Klasse zu definieren?
Also sowas wie "class article_news extends article" (pseudocode) ???
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Grüße,
Garvin
Serendpity hat sogar unendlich viele Arten, es gibt die "Custom Entryproperties". Darüber können beliebige Artikelattribute gespeichert werden, die separat abgefragt und ausgegeben werden können unda uch in der {fetchPrintEntries} funktion als filter genutzt werden.Andersrum gefragt: hat S9Y nur ein einziges Modell für "Artikel"? Ist es nicht möglich, eine eigene, neue Artikel-Klasse zu definieren?
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
ah, ok, das bringt mich doch schon auf die richtige Spur, danke. mal sehen, wie weit ich damit komme. Gibts da irgendeine Falle zu beachten? Was passiert z.B., wenn diese "Custom Entryproperties" zukünftig mal geändert werden? Migriert die s9y dann von alleine oder verliert man dann alle alten Artikel? Nur ein spontaner Gedanke, sowas halt mein ich, Probleme, die man so hat im Laufe der Jahre, das übliche...
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Inwiefern meinst du "mal geändert"? Der s9y Kern wird dort nichts veärndern, und da die properties "custom" sind bist du selbst über dein template dafür verantwortlich, dass sie sich nicht ändern.
Serendipity ist extrem auf Kompatibilität hin entwickelt. Solange ich ein Wörtchen mitzureden habe wird es nie dazu kommen, dass ein Blogger irgendwas verliert, Artikel neu machen muss oder Pluginprogrammierung total hinfällig wird. Das ist auch in der Vergangenheit noch nie vorgekommen, sogar als wir von PHP-Templates auf Smarty umgestiegen sind gab (und gibt) es einen Rückwärts-Kompatibilitätsmodus.
Viele Grüße,
Garvin
Inwiefern meinst du "mal geändert"? Der s9y Kern wird dort nichts veärndern, und da die properties "custom" sind bist du selbst über dein template dafür verantwortlich, dass sie sich nicht ändern.
Serendipity ist extrem auf Kompatibilität hin entwickelt. Solange ich ein Wörtchen mitzureden habe wird es nie dazu kommen, dass ein Blogger irgendwas verliert, Artikel neu machen muss oder Pluginprogrammierung total hinfällig wird. Das ist auch in der Vergangenheit noch nie vorgekommen, sogar als wir von PHP-Templates auf Smarty umgestiegen sind gab (und gibt) es einen Rückwärts-Kompatibilitätsmodus.
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Es gibt ne einfache Datenbanktabelle serendipity_entryproperties mit "id", "name" und "value". Da kann also quasi alles reingepackt werden und wird später als Variable unter dem Namen verfügbar, wie man es in der Datenbanktabelle eingetragen hat. Also so wie Du vermutest, genau.
grüße,
Garvin
Es gibt ne einfache Datenbanktabelle serendipity_entryproperties mit "id", "name" und "value". Da kann also quasi alles reingepackt werden und wird später als Variable unter dem Namen verfügbar, wie man es in der Datenbanktabelle eingetragen hat. Also so wie Du vermutest, genau.
grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
entryproperty als radio button und / oder als checkbox
ok, nach kleiner weihnachtspause wieder am Ball. Gutes 2009 übrigens für alle!
Also ok, die entryproperties tabelle ist einfach, habs gesehen.
Frage: wie mache ich daraus eine checkbox im template?
In einem Fall ist das schon so - sticky postings. Hab aber nicht finden können, wie das umgesetzt wird in den Admin Templates - kannst Du mir sagen, wo ich die relevante Stelle im Code finde?
Frage 2: wie mache ich daraus radio boxen?
Das beinhaltet dann leider auch noch was anderes: wie kann man dafür sorgen, dass sich zusätzlich auf diese Weise einem Artikel angefügte Eigenschaften gegenseitig ausschliessen ("mutual exclusion")?
Sowas auf template-ebene zu machen wäre zwar momentan für mich ein akzeptabler hack, aber wenn die Exklusivität im Backend nicht ersichtlich ist, wäre es wohl eine böse Falle...
Danke!
Also ok, die entryproperties tabelle ist einfach, habs gesehen.
Frage: wie mache ich daraus eine checkbox im template?
In einem Fall ist das schon so - sticky postings. Hab aber nicht finden können, wie das umgesetzt wird in den Admin Templates - kannst Du mir sagen, wo ich die relevante Stelle im Code finde?
Frage 2: wie mache ich daraus radio boxen?
Das beinhaltet dann leider auch noch was anderes: wie kann man dafür sorgen, dass sich zusätzlich auf diese Weise einem Artikel angefügte Eigenschaften gegenseitig ausschliessen ("mutual exclusion")?
Sowas auf template-ebene zu machen wäre zwar momentan für mich ein akzeptabler hack, aber wenn die Exklusivität im Backend nicht ersichtlich ist, wäre es wohl eine böse Falle...
Danke!
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: entryproperty als radio button und / oder als checkbox
Hi!
Gilt für radiobuttons dann exakt so.
Grüße,
Garvin
Genauso wie ein text-input field. Schau dir einfach mal die serendipity_event_entryproperties.php an... eigentlich kannst du das HTML dort auch genauso im Template einsetzen.Frage: wie mache ich daraus eine checkbox im template?
Gilt für radiobuttons dann exakt so.
Das musst du dann entsprechend mit javascript lösen.Das beinhaltet dann leider auch noch was anderes: wie kann man dafür sorgen, dass sich zusätzlich auf diese Weise einem Artikel angefügte Eigenschaften gegenseitig ausschliessen ("mutual exclusion")?
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
mit javascript???
nein, da scheint ein grundlegendes missverständnis vorzuliegen. mit "backend" meinte ich das backend, welches die daten speichert - sorry.
Wenn es eine Exklusivität in der Kennzeichnung der Daten geben soll, müsste das auch im Datenmodell ersichtlich sein. Das ist aber scheinbar in den entry_properties nicht angedacht gewesen? Eigentlich schade, denn das ist ja gleich der zweite Gedanke, den man hat bei der Nutzung dieses Features.
Da Du ja bereits mysql als Datenbank-backend nutzt und sogar Postgres unterstützt, könntest Du solche Features recht einfach einbauen, wenn Du die Möglichkeiten, die eine Datenbank bietet, auch nutzt. Nur zum Daten-Sammeln und wieder auslesen braucht man eine DB eigentlich nicht, dafür sind moderne Dateisysteme völlig ausreichend.
Da gibts noch erheblichen Raum zur Optimierung - Frage: wie abstrakt ist denn das Datenmodell? Also ist das konsequent gekapselt? Es scheint ja schon sowas wie einen DB-Layer zu geben, aber ich finde immer noch verdächtig viele "select" statements, wenn ich die mal so im Code suche... hmmm.... auweia, vor allem auch in den Plugins gibt es direkten Zugriff auf die DB mit sql... warum denn sowas? Plugins sollten doch abstrakt modelliert sein, in dieser Abstraktion besteht doch überhaupt der Sinn von Plugins - Kapselung und leichte Erweiterbarkeit...
hmm... nunja, muss ja in der Praxis nicht wirklich schlimm sein, mal schauen, was ich noch so an Klöpsen finde
nein, da scheint ein grundlegendes missverständnis vorzuliegen. mit "backend" meinte ich das backend, welches die daten speichert - sorry.
Wenn es eine Exklusivität in der Kennzeichnung der Daten geben soll, müsste das auch im Datenmodell ersichtlich sein. Das ist aber scheinbar in den entry_properties nicht angedacht gewesen? Eigentlich schade, denn das ist ja gleich der zweite Gedanke, den man hat bei der Nutzung dieses Features.
Da Du ja bereits mysql als Datenbank-backend nutzt und sogar Postgres unterstützt, könntest Du solche Features recht einfach einbauen, wenn Du die Möglichkeiten, die eine Datenbank bietet, auch nutzt. Nur zum Daten-Sammeln und wieder auslesen braucht man eine DB eigentlich nicht, dafür sind moderne Dateisysteme völlig ausreichend.
Da gibts noch erheblichen Raum zur Optimierung - Frage: wie abstrakt ist denn das Datenmodell? Also ist das konsequent gekapselt? Es scheint ja schon sowas wie einen DB-Layer zu geben, aber ich finde immer noch verdächtig viele "select" statements, wenn ich die mal so im Code suche... hmmm.... auweia, vor allem auch in den Plugins gibt es direkten Zugriff auf die DB mit sql... warum denn sowas? Plugins sollten doch abstrakt modelliert sein, in dieser Abstraktion besteht doch überhaupt der Sinn von Plugins - Kapselung und leichte Erweiterbarkeit...
hmm... nunja, muss ja in der Praxis nicht wirklich schlimm sein, mal schauen, was ich noch so an Klöpsen finde
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Bei Software kommt es nicht nur auf Objekte, Er-Modelle und Co an, sondern dass Funktionen implementiert sind, funktionieren, erweiterbar sind, kompatibel sind, API-Zugriff erlauben, für Programmierer leicht verständlich und anpassbar sind.
Du fragst, warum heutzutage Autos noch mehr als 8 Liter Sprit verbrauchen, owbohl es doch auch erwiesenermaßen mit Erdgas oder auch mit weniger als 5 Litern. Es gibt eine so perfekte Welt nicht, schon garnicht in der OpenSource-Welt.
Schau Dir mal WordPress an, da wirst du noch gröbere Schnitzer finden. Oder nimm Typo3. Jedes System, was über den einfachen Alpha-Status hinaus einsetzbar ist, geht heutztage Kompromisse ein.
Garvin.
Ja, klar - Du kannst nur über javascript wirklich sinnvoll direkt prüfen ob eine box angecheckt werden sollen darf oder nicht. Mit PHP könntest du das erst nach dem abschicken abfangen, das wäre zu spät.WATCHDOG wrote:mit javascript???
Was meinst du mit Exklusivität denn genau, ich verstehe dein problem noch nicht.Wenn es eine Exklusivität in der Kennzeichnung der Daten geben soll, müsste das auch im Datenmodell ersichtlich sein. Das ist aber scheinbar in den entry_properties nicht angedacht gewesen? Eigentlich schade, denn das ist ja gleich der zweite Gedanke, den man hat bei der Nutzung dieses Features.
Das ist eine pauschale Behauptung die jetzt hier erstmal garnichst zur Sache tut und unqualifiziert so nicht diskutiert werden kann. Da darfst du ruhig genauer werden.Da Du ja bereits mysql als Datenbank-backend nutzt und sogar Postgres unterstützt, könntest Du solche Features recht einfach einbauen, wenn Du die Möglichkeiten, die eine Datenbank bietet, auch nutzt. Nur zum Daten-Sammeln und wieder auslesen braucht man eine DB eigentlich nicht, dafür sind moderne Dateisysteme völlig ausreichend.
Richtig, wir nutzen aus Performancegründen und zur vollsten Flexibilität SQL-Abfragen.Da gibts noch erheblichen Raum zur Optimierung - Frage: wie abstrakt ist denn das Datenmodell? Also ist das konsequent gekapselt? Es scheint ja schon sowas wie einen DB-Layer zu geben, aber ich finde immer noch verdächtig viele "select" statements, wenn ich die mal so im Code suche...
Programmier mal dein eigenes Blogsystem, lass es 7 Jahre aktiv sein, und dann schaust du mal ob das System nach 7 Jahren aktuellen Ansprüchen genüge tut. Du wirst rausfinden,d ass man ein System quasi alle 3 Jahre nochmal von neu programmieren müsste um etwas perfekt zu implementieren.hmmm.... auweia, vor allem auch in den Plugins gibt es direkten Zugriff auf die DB mit sql... warum denn sowas? Plugins sollten doch abstrakt modelliert sein, in dieser Abstraktion besteht doch überhaupt der Sinn von Plugins - Kapselung und leichte Erweiterbarkeit...
Bei Software kommt es nicht nur auf Objekte, Er-Modelle und Co an, sondern dass Funktionen implementiert sind, funktionieren, erweiterbar sind, kompatibel sind, API-Zugriff erlauben, für Programmierer leicht verständlich und anpassbar sind.
Du fragst, warum heutzutage Autos noch mehr als 8 Liter Sprit verbrauchen, owbohl es doch auch erwiesenermaßen mit Erdgas oder auch mit weniger als 5 Litern. Es gibt eine so perfekte Welt nicht, schon garnicht in der OpenSource-Welt.
Schau Dir mal WordPress an, da wirst du noch gröbere Schnitzer finden. Oder nimm Typo3. Jedes System, was über den einfachen Alpha-Status hinaus einsetzbar ist, geht heutztage Kompromisse ein.
Garvin.
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/