ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Rubric-Include per mod_functions
Gehe zu Seite Zurück  1, 2
 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Implementierung/Anpassung ConPresso 4
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 23.03.2013 23:49    Titel: Antworten mit Zitat

Zitat:
Ich verwende keine Seitentemplates...

Dann benutze in der Funktion eben die offizielle Funktion, die auch vom Page-Parameter benutzt wird:
Code:
function rubricinclude($rubric_id, $artikelanzahl, $sortierung){
switch ($sortierung){
   case 'manual': $sortierung = 'sort_id desc'; break;
   case 'index aufwärts': $sortierung = 'index asc'; break;
   case 'index abwärts': $sortierung = 'index desc'; break;
   default: $sortierung = 'sort_id desc';
}
return getArticles($rubric_id, 'php', 0, array('settings'=>array('noOfArticles'=>$artikelanzahl, 'sorting'=>$sortierung)));
}

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 497
Wohnort: Berlin

BeitragVerfasst am: 24.03.2013 00:14    Titel: Antworten mit Zitat

edit: Mit deinem korrigierten Quellcode geht's!

Kann man auf diese Weise eigentlich die template_id mit übergeben? Das wäre ziemlich wichtig, da die Templates die Ausgabe der Artikel auf bestimmten Klassenseiten regeln.

Noch ein Horstgruß
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 24.03.2013 00:32    Titel: Antworten mit Zitat

Nein.

das fehlt der Conpresso-Funktion sowieso noch. Vermutlich hat Balu dafür, entgegen den vielen Anwendern, bisher noch keine Verwendung gehabt.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 497
Wohnort: Berlin

BeitragVerfasst am: 24.03.2013 08:10    Titel: Antworten mit Zitat

Kann man das als Workarround einbauen?

Sonn-tägliche Grüße von
Horst
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 24.03.2013 08:30    Titel: Antworten mit Zitat

Natürlich kann man das, aber damit greift man in wichtige Conpresso-Dateien ein.

Wenn Du Deiner Funktion noch eine Variable $forcetemplate_id mitgibst, dann kannst Du in _include/select_template.php
nach
Code:
if ($template=='') {
    $template = $cpoRubricSettings['standard_template'];
}

noch folgendes einfügen
Code:
if ($forcetemplate_id) {
    $template = $forcetemplate_id ;
}

Außerdem muss in _include/function.php
Code:
function getArticles($rubricId, $pagetype = 'index', $pos = 0, $cpoRubricOverride = array())

erweitert werden zu
Code:
function getArticles($rubricId, $pagetype = 'index', $pos = 0, $cpoRubricOverride = array(), $forcetemplate_id = 0)


Nicht getestet!

Mich persönlich würde ja mal interessieren, wie komplex Dein forciertes Template ist, daß man dafür die ganze ressourcenfressende Conpresso-Maschinerie braucht?

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 497
Wohnort: Berlin

BeitragVerfasst am: 24.03.2013 09:17    Titel: Antworten mit Zitat

Hallo Markus,
Zitat:
Mich persönlich würde ja mal interessieren, wie komplex Dein forciertes Template ist, daß man dafür die ganze ressourcenfressende Conpresso-Maschinerie braucht?


Der Grund, warum ich das so machen möchte, ist folgender:
Wir haben auf der Schulwebseite Klassenseiten für momentan 25 Klassen. Info-Artikel, die ganze Jahrgänge oder Schulstufen betreffen, schreibe ich in eine Rubrik "Klasseninfos". Mit dem Platzhalter "adressat" weise ich den Artikel bestimmten Jahrgängen oder Stufen zu. Den Templates kommt die Aufgabe zu, mittels <!-- ifvalue...--> einen Artikel auszugeben oder nicht. Deshalb brauche ich die verschiedenen Templates.

Grüße von Horst

---------------
Ich habe jetzt select_template.php und functions.php geändert. Die Artikel werden trotzdem noch mit dem Standardtemplate ausgegeben. Sieht so aus, als wenn der Inhalt von $forcetemplate_id nicht ankommt...




Template für die Grundschule, Klassenstufe 4-6
template_klasseninfo_4-6_grundschule.txt - 5.48 KB
269 mal

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 24.03.2013 10:00    Titel: Antworten mit Zitat

Das sieht für mich jetzt so aus, als gäbe es nur ein Template, in dem mittels ifvalue jeweils ein anderes Aussehen gewählt wird.
oder sind das jetzt für 25 Klassen 25 Templates mit je 3 Adressaten?
Und das muß wirklich die Ausgabe einer Rubrik in einem Artikel sein?
Schade, daß Du nicht mal zeigst wie das wo aussieht...

Was meinst Du mit
Zitat:
Die Artikel werden trotzdem noch mit dem Standardtemplate ausgegeben

Standardtemplate ist das Standardtemplate der Rubrik oder meinst Du damit das individuell pro Artikel gewählte Template?

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 497
Wohnort: Berlin

BeitragVerfasst am: 24.03.2013 10:08    Titel: Antworten mit Zitat

Hallo Markus,
Zitat:
Das sieht für mich jetzt so aus, als gäbe es nur ein Template, in dem mittels ifvalue jeweils ein anderes Aussehen gewählt wird.
oder sind das jetzt für 25 Klassen 25 Templates mit je 3 Adressaten?

Es sind 6 Templates: Jahrgang 1-3, Jahrgang 4-6 und für die Jahrgänge 7-10 je eines.
Zitat:

Und das muß wirklich die Ausgabe einer Rubrik in einem Artikel sein?
Schade, daß Du nicht mal zeigst wie das wo aussieht...

Das ist sonst sehr aufwändig, die Artikel einzupflegen...
Ansehen kann man das hier:
http://www.reformschule-charlottenburg.de/cms/_rubric/index.php?rubric=klassen
Die Grundstufenklassen haben andere Infos, als die 7. oder 10. Klassen...

Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 24.03.2013 10:46    Titel: Antworten mit Zitat

Da Du ja einen verhängnisvollen Hang zu Tippfehlern hast ... Wink SCNR ... wie sieht denn jetzt Dein Code aus?

Du hattest ja zuletzt die (zu erwartende) Fehlermeldung wegen fehlendem $hdlr_parser_content gepostet und dann wie vorgegeben auch dieses globalisiert. Aber wie sah dann Dein Code aus?

Ich habe das mal vom nicht mit mod_functions zusammenhängenden Thread getrennt, sonst kapiert das keiner

Warum benutzt Du eigentlich nicht ein Einbinden mittels JS oder ein http-include?

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 497
Wohnort: Berlin

BeitragVerfasst am: 24.03.2013 11:14    Titel: Antworten mit Zitat

So sieht die Funktion jetzt aus:
Code:

function rubricinclude($rubric_id, $template_id, $artikelanzahl, $sortierung){
global $activeModules, $cpoSystem, $hdlr_parser_content, $placeholders_cache, $typeNames, $fetchedcontent;

switch ($sortierung){
   case 'manual': $sortierung = 'sort_id desc'; break;
   case 'index aufwärts': $sortierung = 'index asc'; break;
   case 'index abwärts': $sortierung = 'index desc'; break;
   default: $sortierung = 'sort_id desc';
}

$pagetype = 'php';

ob_start();

// datenbank-abfrage

$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='".$rubrik_id."' ORDER BY ".$sortierung." LIMIT 0," . $artikelanzahl . " ";
$db = new DB;
$db->query($query);

while($db->next_record()) {

    $db_template      = $template_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');

}

$rubriccontent = ob_get_contents();
ob_end_clean();

return $rubriccontent;
}

Im Moment mache ich das ja per http-include. Wenn ich jedoch alle Abfragen in eine Datei packe, dann wird die Seite schnarchlangsam.
Deshalb möchte ich das per Funktionsaufruf machen, der die Abfrage der Datenbank nur im entsprechenden Artikel startet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 24.03.2013 11:24    Titel: Antworten mit Zitat

Ist das wirklich Deine letzte Version?
Du übergibst $rubric_id, verwendest aber $rubrik_id
Hatten wir das nicht schon?
Es fehlt auch $hdlr_parser_replacement ...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7008

BeitragVerfasst am: 24.03.2013 11:31    Titel: Antworten mit Zitat

Ich habe mich einfach mal an getArticles orientiert, was das Globalisieren angeht:
Code:
function rubricinclude ($rubric_id, $template_id, $artikelanzahl, $sortierung) {
    global $content, $db_autor, $db_changer, $db_content, $db_email,
        $db_idx, $db_initial, $db_last_modify, $db_nr, $db_pub_datum,
        $db_rubric_id, $db_template, $db_titel, $db_verfallsdatum,
        $fetchedcontent, $hdlr_parser_content, $hdlr_parser_replacement,
        $key, $_name, $parameters, $placeholder, $placeholders_cache,
        $replacement, $_type, $typeNames, $cpoSystem, $tl, $activeModules;
 

switch ($sortierung){
   case 'manual': $sortierung = 'sort_id desc'; break;
   case 'index aufwärts': $sortierung = 'index asc'; break;
   case 'index abwärts': $sortierung = 'index desc'; break;
   default: $sortierung = 'sort_id desc';
}

$pagetype = 'index';

ob_start();

// datenbank-abfrage

$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='".$rubric_id."' ORDER BY ".$sortierung." LIMIT 0," . $artikelanzahl . " ";
$db = new DB;
$db->query($query);

while($db->next_record()) {

    $db_template      = $template_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');

}

$rubriccontent = ob_get_contents();
ob_end_clean();

return $rubriccontent;
}

Bei mir funzt das in Seitentemplates und in Artikeln problemlos...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 497
Wohnort: Berlin

BeitragVerfasst am: 24.03.2013 12:53    Titel: Antworten mit Zitat

Oh oh, diesmal hat mir der Schreibfehlerteufel aber mächtig auf der Schulter gesessen. Mit der Globalisierung aus getArticles funktioniert es!!!

1000 Dank, Markus!

Jetzt habe ich alles da, wo ich's haben möchte. Zum einen lässt sich alles im Backend erledigen und ich kann die Funktion in Templates einbauen...

Einen schönen Sonntag und Osterfest
wünscht dir
Horst aus Berlin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Implementierung/Anpassung ConPresso 4 Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen