Modulcode $variable->count -Erklärung erbeten

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
Firesteve
Beiträge: 52
Registriert: Sa 14. Nov 2009, 12:26
Wohnort: Sternenfels
Kontaktdaten:

Modulcode $variable->count -Erklärung erbeten

Beitrag von Firesteve » Do 23. Jan 2014, 22:36

Hallo zusammen,

ich versuche gerade das Terminmodul von Markus Hübner (mcHubi) so umzubauen, dass ich es in der contenido 4.9 verwenden kann.
Ich habe schon große Fortschritte gemacht, aber auf ein gelöstes Problem scheinen 10 ungelöste hinzuzukommen ;-)

Zum Beispiel habe ich Schwierigkeiten mit dem oben genannten Modulcode.
In einigen Bereichen war folgender Code notiert:

Code: Alles auswählen

$count = $list->count;
Das Ergebnis der Zählung war immer 0!
Erst als ich alle counts dieser Art auf die php Funktion umgeschrieben habe

Code: Alles auswählen

count($list);
hat es funktioniert.

Nun bin ich im Terminlistenmodul angekommen und auch hier ist code im obigen Stil vorhanden:

Code: Alles auswählen

 if (!isset($tpl) || !is_object($tpl)) {
        $tpl = new cTemplate();
    }

echo "Testausgabe Abbruchfindung";
	$tpl->reset();
Die Testausgabe wird nach diesem Code nicht mehr angezeigt, wie auch der Rest des Modules hier abbricht....

Kann mir jemand erklären ob diese Schreibweise Contenido spezifisch ist, ein Fehler ist oder was ich hier noch falsch machen könnte?
Gruß Stefan
___________________________________________________________________
;-) Natürlich führe ich Selbstgespräche - Ich brauche schließlich auch mal einen Expertenrat
...... nicht ganz so ernstzunehmen ;-)

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

Re: Modulcode $variable->count -Erklärung erbeten

Beitrag von homtata » Do 23. Jan 2014, 23:58

Ja, das Umschreiben solcher Mammut-Module ist so eine Sache ;-)

Also: im geposteten Code erkenne ich erstmal keinen Fehler. Es wird (sofern nicht schon instanziert) ein neues HTML-Template instanziert und dann über den Befehl "->reset" quasi erstmal für alle Fälle wieder geleert (sollte es bisher Zuweisungen enthalten haben, werden diese entfernt). Insofern kann "$tpl->reset()" eigentlich nicht die Fehlerquelle sein; eher tritt der Fehler unmittelbar danach auf. Poste ggf. mal die Folgezeilen....

LG

Firesteve
Beiträge: 52
Registriert: Sa 14. Nov 2009, 12:26
Wohnort: Sternenfels
Kontaktdaten:

Re: Modulcode $variable->count -Erklärung erbeten

Beitrag von Firesteve » Fr 24. Jan 2014, 06:07

Hallo homtata,

der darauffolgende Codeblock sieht für mich jetzt wieder unauffällig aus:

Code: Alles auswählen

$tpl->reset();


    $sql = "SELECT
                htmlpath, frontendpath
            FROM
                ".$cfg["tab"]["clients"]."
            WHERE
                idclient = ".$client." ";

    $db->query($sql);
	
    if ($db->next_record()) {
        $htmlpath = $db->f('htmlpath');
        $frontendpath = $db->f('frontendpath');
    }
		
		echo "Testausgabe Abbruchfindung";

    // selected category
    $selcat = "CMS_VALUE[1]";
    //mod anfang
    //$template = "teaser-standard.html";
    $template = "terminkalender_sd_terminliste.html";
    //mod ende
    // anzahl der zeichen text
    $mxtext = 200;

    $limit = "CMS_VALUE[15]";

    $cms_sort_direction = "CMS_VALUE[16]";
    if ($cms_sort_direction == '') {
        $cms_sort_direction = 'desc';
    }

    if ("CMS_VALUE[3]" == "sortdate") {
        $order = 'lastmodified';
    } else {
        $order = 'artsort';
    }

    if ("CMS_VALUE[17]" != '') {
        $with_start = true;
    } else {
        $with_start = false;
    }

    $newsheadline = "CMS_VALUE[4]";

    $tpl->set('s', 'TITLE', $newsheadline);
	echo "Testausgabe Abbruchfindung";	
nehme ich die $tpl->reset anweisung aus dem Code, läuft das Modul weiter bis $tpl->set......
Danach bricht es wieder ab.

Ich vermute schon, dass diese ->anweisungen hier etwas damit zu tun haben.
Was sind die? php? contenido? Ich hab nirgends etwas vernünftiges gefunden darüber (oder auch nicht verstanden...)

Änderungen welche ich am Programmcode vorgenommen habe:
  • new ArticleCollection geändert in new cArticleCollector
  • new Template geändert in new cTemplate
  • alle ->count Anweisungen in count() umgeschrieben
Gruß Stefan
___________________________________________________________________
;-) Natürlich führe ich Selbstgespräche - Ich brauche schließlich auch mal einen Expertenrat
...... nicht ganz so ernstzunehmen ;-)

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

Re: Modulcode $variable->count -Erklärung erbeten

Beitrag von homtata » Fr 24. Jan 2014, 08:50

Dann ändere der Einfachheit halber doch erstmal

Code: Alles auswählen

 if (!isset($tpl) || !is_object($tpl)) {
        $tpl = new cTemplate();
    }

echo "Testausgabe Abbruchfindung";
   $tpl->reset();
in

Code: Alles auswählen

$tpl = new cTemplate();
ohne if und reset-Gedöns.

Die ->Anweisungen sind php-Grammatik für Funktionsaufrufe innerhalb eines Objekts. Hardcore-Programmierer bitte weghören, folgende Erklärung ist nix für Puristen: "cTemplate" ist eine Contenido-eigene Klasse, die der Verwaltung von HTML-Templates dient. Damit das funktioniert, muss man zuerst ein Objekt mithilfe dieser Klasse erstellen, das ist in diesem Fall das händisch so benannte $tpl. Die cTemplate-Klasse enthält u.a. auch Funktionen, auf die kann man dann mit dem Pfeilsystem zugreifen.

$tpl->reset() sagt also: im händisch erzeugten Objekt $tpl, das auf der Klasse cTemplate beruht, gibt es eine Funktion "reset", und die führe jetzt bitte ohne zusätzliche Parameter (daher leere Klammern dahinter) jetzt bitte aus. Von der Programmiergrammatik her ok.

Vielleicht ist durch die if-Schleife obendrüber $tpl nicht richtig initalisiert oder sowas, weshalb reset fehlschlägt und einen Fehler produziert. Wer weiß.

Firesteve
Beiträge: 52
Registriert: Sa 14. Nov 2009, 12:26
Wohnort: Sternenfels
Kontaktdaten:

Re: Modulcode $variable->count -Erklärung erbeten

Beitrag von Firesteve » Sa 25. Jan 2014, 06:19

Hallo homtata,

auch wenn deine Erklärung programmiertechnisch gesehem nicht unbedingt richtig gewesen sein sollte:
Didaktisch war sie es auf alle Fälle, denn ich habe Sie so wenigstens verstanden :D :!:
Danke dafür.

Dank deiner Hilfe läuft das Modul jetzt, auch wenn ich die If - Abfrage nicht mehr einbauen kann - sobald ich das mache ist es mit der Modulabarbeitung vorbei....

Ich lass das erst mal so und teste jetzt ausgiebig - Eventuell kann man auf die Sicherheitsabfrage ja auch verzichten.

Nochmals Danke!
Gruß Stefan
___________________________________________________________________
;-) Natürlich führe ich Selbstgespräche - Ich brauche schließlich auch mal einen Expertenrat
...... nicht ganz so ernstzunehmen ;-)

Antworten