Rubrik-Include mal anders

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7117
Registriert: 01.01.1970 02:00
Hat sich bedankt: 103 Mal
Danksagung erhalten: 916 Mal

Rubrik-Include mal anders

Beitrag von MarkusR »

Ich habe hier ja schon beschrieben, wie man eine komplette Rubrik auch ohne http-include in eine andere einbindet (um vor allem Laufzeitprobleme und Serverbeschränkungen zu umgehen).

Aber auch das ist für viele Anwendungen schon zuviel des guten, weil meist geht es nur um folgende Aufgabenstellung:
Neben der eigentlichen Rubrik sollen einige oder alle Artikel einer anderen Rubrik als Info- oder News-Spalte eingebunden werden.

Wenn das alles ist, dann kann man den folgenden Code entweder in eine Datei kopieren und diese einbinden oder den Code auch direkt verwenden.

Im Grunde muß man nur die ID der Rubrik und die Anzahl der Artikel eintragen. Bei Bedarf kann die Sortierung angepasst werden.

Hier der Code:

Code: Alles auswählen

<?php 

// Die Parameter
$rubrikid = 1; // der ID der Rubrik
$artikelanzahl = 3; // maximale Anzahl der auszugebenden Artikel
$sortierung = 'idx, pub_datum desc'; // Art der Artikelsortierung


// ab hier nix mehr ändern
if (!defined('CPO')) exit;

$query = "SELECT rubric_id, commentary, verfallsdatum, templates_id, nr, idx, email, autor, pub_datum, titel, initial, freigabe, changer FROM " . CPO_NEWS . " WHERE " . ( $cpoSystem['release'] ? "artikel_archiv<2 AND freigabe=" . STATE_RELEASED : "artikel_archiv<1 AND freigabe!=" . STATE_BLOCKED ) . " AND pub_datum<='" . date('Y-m-d H:i:s', time()) . "' AND verfallsdatum>='".date('Y-m-d H:i:s', time())."' AND rubric_id='".$rubrikid."' ORDER BY ".$sortierung." LIMIT 0," . $artikelanzahl . " ";
$db = new DB;
$db->query($query);

while($db->next_record()) {

    $db_template      = $db->v('templates_id');
    $db_nr            = $db->v('nr');
    $db_idx           = $db->v('idx');
    $db_email         = $db->v('email');
    $db_autor         = $db->v('autor');
    $db_changer       = $db->v('changer');
    $db_pub_datum     = $db->v('pub_datum');
    $db_verfallsdatum = $db->v('verfallsdatum');
    $db_commentary    = $db->v('commentary');
    $db_titel         = $db->v('titel');
    $db_initial       = $db->v('initial');
    $db_freigabe      = $db->v('freigabe');
    $db_rubric_id     = $db->v('rubric_id');
    require(CPO_BASEDIR.'_include/select_template.php');

}

?>
Wichtig: Das Ganze funktioniert nur, wenn man es in einer ConPresso-Datei benutzt (also z.B. Header oder Footer) und somit schon alle notwendigen Komponenten geladen sind. Alleine oder außerhalb von ConPresso ist der Code nicht lauffähig!
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

Hallo MarkusR,

ich habe es zwar noch nicht getestet, aber das hört sich sehr praktisch an!!

Ich hätte da aber noch zwei Fragen:
1. Kann ich damit auch geschlossene Rubriken "includen" (wie ich es hier beschrieben habe: http://community.conpresso.de/viewtopic ... 2143#22143 )

und 2. Kann man dieses Script auch 2mal oder öfters innerhalb einer Seite einbauen?

vielen DANK schon mal für dieses Code-Snippet
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7117
Registriert: 01.01.1970 02:00
Hat sich bedankt: 103 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

zu 1.) die Codezeilen kümmern sich nicht um die Einstellungen im Backend und geben das aus, was ausgegeben werden soll, d.h. auch geschlossene Rubriken werden ausgegeben.

Das Script macht ja nichts anderes als a) die Artikel herauszusuchen und b.) sie auszugeben.

zu 2.) Versuch macht kluch! Aber im Grunde kann man es beliebig oft einsetzen.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

Hallo zusammen, hallo MarkusR,

ich habe es nun getestet und bin super begeistert!!!
Es können Geschlossene-Rubriken eingebunden werden und es kann auf einer Seite mehrmals eingebunden werden, ohne am Code etwas zu ändern!!

Somit, genau das was ich gesucht habe, nicht mehr und nicht weniger!!

Vielen DANK
cu Ralf
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Hallo Markus, kannst du mir Ignoranten ;-) noch kurz erklären, welchen Vorteil diese Lösung gegenüber der von hier hat? Danke.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7117
Registriert: 01.01.1970 02:00
Hat sich bedankt: 103 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

Mr. Magpie hat geschrieben:Hallo Markus, kannst du mir Ignoranten ;-) noch kurz erklären, welchen Vorteil diese Lösung gegenüber der von hier hat? Danke.
- es werden keine Variablen umgeschrieben oder berücksichtigt
- geht auch mit geschlossenen Rubriken
- man ist unabhängig von der eigentlichen Rubrik, d.h. es kann z.B. die Sortierung, Artikelzahl etc. abweichen
- kein include weiterer Dateien (außer dem Parser für die Ausgabe), womit einige ja echt auf dem Kriegsfuß stehen
- es wird das index-template verwendet, so daß die doppelte Definition von index- und php-Template entfällt.

und ansonsten ist es eben eine andere Art.
(ursprünglich habe ich es mal für 3.x entwickelt, weil da noch mehr Dinge dazwischenfunken können)
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 02:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal

Beitrag von Matthias V »

Hallo zusammen

Man könnte da auch noch ein wenig Code aus der _includesite/i_index.php und der secure.php mit einbauen, um das Include bei geschlossenen und personalisierten Rubriken nur durchzuführen, wenn sich der richtige Benutzter eingeloggt hat.

Denn so wie es jetzt ist, werden Artikel geschlossener und personalisierter Rubriken IMMER eingebunden.

Also geschlossene Rubriken bitte nur in geschlossene includen!!! Oder ihr müsst mit den Auswirkungen leben :?

Gruß Matthias
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
KRALdesign
ConPresso-Newbie
Beiträge: 23
Registriert: 24.08.2006 13:18

Beitrag von KRALdesign »

Hallo,

Super Lösung. Nur wie kann ich da jetzt den Code vom javascript/php - Template nehmen und nicht von der Rubrikseite?

Lg,

Klaus
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 02:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal

Beitrag von Matthias V »

KRALdesign hat geschrieben:Super Lösung. Nur wie kann ich da jetzt den Code vom javascript/php - Template nehmen und nicht von der Rubrikseite?
Schreibe mal oben zu

Code: Alles auswählen

// Die Parameter
noch die Zeile

Code: Alles auswählen

$pagetype = 'php';
Das sollte eigentlich funktionieren.

Wenn du den Code im local_header und nicht im local_footer hast, dann musst du am Ende des Codes wieder den ursprünglichen pagetype setzen. Dazu schaust du am besten mal in die index.php oder detail.php des Rubrikverzeichnisses. Leider wird der pagetype nicht in beiden Dateien gesetzt, denke ich.
Entweder du benutzt unset($pagetype); oder du speicherst den alten pagetype zwischen.

Gruß Matthias
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
KRALdesign
ConPresso-Newbie
Beiträge: 23
Registriert: 24.08.2006 13:18

Beitrag von KRALdesign »

Hallo,

super.

Aber ich habe das jetzt mit mod_inline eingebunden und auf meiner Startseite, wo ich den Inline-Code drinnen habe, kommen dort jetzt folgende Meldungen, wo normal die Inhalte ausgegeben werden sollten von der betroffenen Rubrik:
Warning: Invalid argument supplied for foreach() in /home/xyz/www/xyz/_include/parser.php on line 53

Startseite ist aber eine CPO-Seite:
/_rubric/index.php?rubric=Start

Hat wer eine Idee?

Lg,

Klaus
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7117
Registriert: 01.01.1970 02:00
Hat sich bedankt: 103 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

mod_inline hat das Problem, daß Funktionen benutzt werden. Für diese müssen alle benötigten Variablen globalisiert werden.

Welche Du globalisieren mußt kannst Du einfach aus der meldung ablesen.
In Zeile 53 wäre das $hdlr_parser_replacement

Danach kommen sicher noch zwei Dutzend weitere Meldungen bzw. Falschausgaben, die Du dann eben aich berücksichtigen mußt.

BTW: Was macht es für einen Sinn innerhalb eines Artikels mehrere andere Artiekl auszugeben?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
KRALdesign
ConPresso-Newbie
Beiträge: 23
Registriert: 24.08.2006 13:18

Beitrag von KRALdesign »

Es handelt sich um eine Startseite, welche eine Rubrikseite einer Kategorie START ist.

Diese Startseite ruft über mod_inline aus 3 anderen Kategorien eben Artikel ab, um diese auf der Startseite auszugeben.

Allerdings ist der Abruf aus einer Kategorie - siehe anderes Thema von mir http://community.conpresso.de/viewtopic.php?t=3932 - langsam und bremst die Startseite aus.

Deshalb suche ich verzweifelt nach Lösungen, aber auch deine Lösung scheint hier nicht zu wirken, so gut sie auch ist.

Hmmm....

Lg,

Klaus
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7117
Registriert: 01.01.1970 02:00
Hat sich bedankt: 103 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

WARUM mußt Du dafür mod_inline benutzen???

Geht ein normales include nicht?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
KRALdesign
ConPresso-Newbie
Beiträge: 23
Registriert: 24.08.2006 13:18

Beitrag von KRALdesign »

Hallo,

im Template-Code unter Rubrikseite mit <?php include(""); ?> bekomm ich keine Ausgabe...

Dann is zwar die Startseite richtig flott :lol: , aber die Ausgabe von der einen Kategorie fehlt :cry:

Lg,

Klaus
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7117
Registriert: 01.01.1970 02:00
Hat sich bedankt: 103 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

WARUM muß eine Rubrik innerhalb eines Artikels ausgegeben werden statt darüber, darunter oder daneben???

Steckst Du Deine Garage auch in den Kofferraum Deines Autos?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle