ConPresso Community

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

 
mod_functions
Gehe zu Seite 1, 2, 3  Weiter
 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Kleine und neue Module
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 10.06.2012 18:37    Titel: mod_functions Antworten mit Zitat

Ich fürchte, daß es mit ConPresso 4.1.x nicht so recht weitergeht, solange man mit Seitentemplates nicht wie mod_pages in 4.0.x auch problemlos PHP-Code einsetzen kann.

Natürlich kann man mit <!-- function: Name; Parameter...; --> auch vorher definierte Funktionen im Seitentemplate einbauen. Aber wenn ich schon mit einem externen Editor und FTP am Werkeln bin, dann schalte ich gewöhnlich das alte Header/Footer System wieder ein.
Insbesondere die Übergabe von Parametern an diese Funktionen ist zwar möglich, deren Verarbeitung dann aber aufwändiger als die Funktion selbst.

Also schieben wir 4.1.x mal ein wenig an: mod_functions

Hier kann man eine typische PHP-Funktion im System speichern, z.B.

Code:
function FUNKTIONSNAME($argument1, $argument2 [,...] )  {
    //hier kommt nun der Beispiel-Code ...
    $ergebnis = $argument1 + $argument2;
    return $ergebnis;
}


Ganz wichtig ist dabei, daß die Argumente direkt(!) zu Verfügung stehen, also
$ergebnis = $argument1 + $argument2;
auch wirklich sofort eine Ausgabe erzeugt. Das ist von ConPresso so nicht vorgesehen.

Im Seitentemplate steht die Funktion dann als
<!-- function: FUNKTIONSNAME; argument1=WERT; argument2=WERT; -->
zur Verfügung, wird aber auch zusätzlich als PHP-Funktion FUNKTIONSNAME($argument1, $argument2) angelegt, und steht somit dann wieder in weiteren Funktionen zur Verfügung! Ganz wichtig, da in den Parametern natürlich/leider keine Funktionen verwendet werden können.





functions1.jpg
Klicken für Originalbild! functions1.jpg (76.19KB) - 586 mal angeklickt



functions2.jpg
Klicken für Originalbild! functions2.jpg (75.61KB) - 558 mal angeklickt



functions3.jpg
Klicken für Originalbild! functions3.jpg (31.36KB) - 568 mal angeklickt



functions4.jpg
Klicken für Originalbild! functions4.jpg (42.35KB) - 537 mal angeklickt



 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 999
Wohnort: Wuppertal

BeitragVerfasst am: 11.06.2012 08:19    Titel: Antworten mit Zitat

Wo kann ich das Plussen? Smile
_________________
Günther Ludwig, amazingBytes webdesign   

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 11.06.2012 08:58    Titel: Antworten mit Zitat

Bei mir gibt es nichts zu "plussen" Wink

Vor dem Erstellen eines Downloads will ich erst noch ein paar Funktionen als Beispiele erstellen (dazu muss ich erst mal meine ganzen Webseiten durchstöbern, was man da sinnvoll für jeden zur Verfügung stellen sollte, z.B. Login/Logout etc.) und ich muß noch drüber nachdenken, ob man dafür eine Hilfeseite braucht, weil es ja nur etwas für Leute ist, die PHP-Funktionen erstellen oder zumindest fehlerfrei abschreiben können. Alles andere sollte ja bekannt sein...

Brauchst Du eine Testversion?

Das Modul wird übrigens kostenlos und ohne Registrierung sein...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 999
Wohnort: Wuppertal

BeitragVerfasst am: 11.06.2012 09:57    Titel: Antworten mit Zitat

Momentan bin ich so mit Arbeit zu, dass ich das nicht zeitnah vernünftig testen kann.
_________________
Günther Ludwig, amazingBytes webdesign   

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 11.06.2012 15:33    Titel: Antworten mit Zitat

Das Funktionen-Modul zum Download (s.u.)

Ich habe jetzt folgende Funktionen als Beispiele dazugelegt:

Artikelzahl -> gibt dier Anzahl der online stehenden Artikel aus
LiveSearch -> zeigt die letzten Suchvorgänge auf der Webseite (kennt man ja von vielen Seiten)
Datum -> Gibt ein beliebiges oder das aktuelle Datum in der gewünschten Formatierung aus
Login -> Gibt ein "Sie sind nicht eingeloggt" bzw. "Sie sind als xyz eingeloggt" aus und bietet die Links zum ein- bzw. ausloggen

Das sollen ja nur Beispiele sein und es wäre schön, wenn hier einfach viele Funktionen gesammelt würden, die dann auch ins Modulsetup integriert werden könnten.

Und weil doch irgendwann einer fragen wird:
Das Modul ist (das erste) nur für ConPresso 4.1.x
Es lässt sich zwar auch unter 4.0.x installieren, ist dort aber nutzlos, weil es dort keine Seitentemplates und somit auch keine Seitentemplate-Funktionen gibt.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: hscha, Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 23.11.2012 22:20    Titel: Antworten mit Zitat

Hier ein neuer Vorschlag für eine Funktion zur Verwendung mit mod_functions:

Damit man, wie im Handbuch beschrieben, auch in einer 4.1.5 ein Login-Formular im Seitentemplate einbauen kann, habe ich folgende Funktion erstellt.

Code:
function getToken($action) {
$antiCSRF = $GLOBALS['antiCSRF'];
$input = $antiCSRF->getInput($action);
return $input;
}


Mit <!-- function: getToken; action=dologin; --> kann ich nun ein Login-Formular in dieser Form erstellen:
Code:
<h3><span>Login</span></h3>
        <div id="loginForm"><form action="../_rubric/member.php" method="post"><p><!-- function: getToken; action=dologin; --><input type="hidden" name="rubric" value="<!-- value: rubric; id; -->" />
        <input type="text" class="text" name="username" value="" /><br />
        <input type="password" class="text" name="password" value="" /> <input type="submit" class="button" name="login" value="Login" /><br />
        <a href="../_rubric/member.php?action=password_reset&amp;rubric=1" class="red">Passwort vergessen?</a></p>
        </form></div>
<script type="text/javascript">
/* <![CDATA[ */
if (sessionuserid>0) document.getElementById("loginForm").innerHTML = '<form action="../_rubric/member.php" method="post"><!-- function: getToken; action=logout; --><input type="hidden" name="rubric" value="<!-- value: rubric; id; -->" />Sie sind eingeloggt als:<br /><b>'+sessionusername+'</b><br /><input type="submit" class="button" value="Ausloggen" /></form>';
/* ]]> */
</script>


Damit die JS-Umschaltung zwischen Login-Formular und "Sie sind eingeloggt als..." funktioniert, habe ich noch eine Funktion erstellt, die mir ein paar Session-Daten als JS-Variablen zur Verfügung stellt:

Code:
function session() {
$script = '';
if ($_SESSION['SID_user']['id']) {
$script = "<script type=\"text/javascript\">
/* <![CDATA[ */
var sessionuserid=".$_SESSION['SID_user']['id'].";
var sessionusername=\"".$_SESSION['SID_user']['name']."\";
/* ]]> */
</script>";
}
return $script;
}

Das läss sich natürlich nach Belieben erweitern.

Zur Ausgabe wird im head-Tag die Funktion
<!-- function: session; -->
eingesetzt, die dann sowas ausgibt
Code:
<script type="text/javascript">
/* <![CDATA[ */
var sessionuserid=1;
var sessionusername="Administrator";
/* ]]> */
</script>

_________________
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: 7016

BeitragVerfasst am: 04.12.2012 17:20    Titel: Antworten mit Zitat

Neues von mod_functions!

1.) Die Funktionen lassen sich auch in Artikeltemplates und auch im Artikel selbst benutzen.
2.) für die Nutzung in Artikeln ist (neben der Schreibweise als Kommentar, um sie z.B. vor Redakteuren zu "verstecken") auch eine sichtbare Schreibweise in der Form
[!-- function: FUNKTIONSNAME; argument1=WERT; argument2=WERT; --]
möglich.
Dazu muß nur im Enhanced Parser noch die Zeile
mod_functions/post_parse_functions.inc.php
eingetragen werden.
Ohne Enhanced Parser ergänzt man den Parser am Ende um ein entsprechendes include.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: hscha
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: 02.01.2013 09:04    Titel: Antworten mit Zitat

Hallo Markus,
ich habe die Modul-Version 4.2 gerade installiert (cpo 4.1.5). Leider kann ich keine eigenen Funktionen speichern. Der "Funktion speichern"-Button funxt nicht. Es wird nix in die Datenbank geschrieben.

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


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 02.01.2013 09:51    Titel: Antworten mit Zitat

3 Bedingungen werden vor dem Speichern geprüft:
1.) der Speichern-Button wurde gedrückt
2.) die Funktion hat einen Namen
3.) die Funktion hat einen Inhalt

Was steht bei Dir bei 2. und 3. ???

_________________
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: 02.01.2013 12:16    Titel: Antworten mit Zitat

Hallo Markus,
es geht gar nichts, weder das Ändern einer vorhandenen vorinstallieren Funktion (z.B. "Datum") noch das Ergänzen einer neuen mit Inhalt und mit Namen.
Ich habe allerdings gerade festgestellt, dass es im MSIE funktioniert, nur Firefox spielt nicht mit!Rolling Eyes

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


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 02.01.2013 12:28    Titel: Antworten mit Zitat

Aaaah, FF ist mal wieder pingelig Wink

Aber er hat recht, ich habe das INPUT-Tag nicht geschlossen.

Hier eine 4.2a, dort wurde nur die Datei edit.php geändert.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: hscha
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: 09.01.2013 21:21    Titel: Antworten mit Zitat

Hallo Markus,

kann man eigentlich einer Funktion auch über ein Artikeltemplate Werte übergeben?
Ich habe folgendes vor:

Im Artikeltemplate steht:
Code:
<!-- ifSet: benutzerLoginRubrik; --><!-- function: benutzerlogin; loginrubric=<!-- TEXT: benutzerLoginRubrik; -->; logintext=<!-- TEXT: loginText; -->; --><!-- /ifSet -->

Ich würde der Funktion "benutzerlogin" gern zwei Argumente übergeben: zum einen die Login-Rubrik, zum anderen einen Text, der über dem Login-Formular angezeigt werden soll.
Dies soll über das Artikeltemplate erfolgen mittels zweier durch den Redakteur editierbarer Felder.
Ist sowas machbar?

Grüße aus Berlin von
Horst
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7016

BeitragVerfasst am: 09.01.2013 22:11    Titel: Antworten mit Zitat

Du hast es ja sicher getestet, oder?

Ich glaube nicht, daß es geht. Platzhalter ließen sich noch nie ineinander verschachteln.

Aber Du könntest das Post-Parsing ausprobieren:

[!-- function: benutzerlogin; loginrubric=<!-- TEXT: benutzerLoginRubrik; -->; logintext=<!-- TEXT: loginText; -->; --]

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: hscha
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: 10.01.2013 18:35    Titel: Antworten mit Zitat

Hallo Markus!

Es funktioniert! Die Funktion wird ausgeführt und gibt die in den Platzhaltern angegebenen Werte aus!

Prima!!! Verschachteln geht in diesem Falle doch!

Daaaaaanke!
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: 10.01.2013 19:29    Titel: Antworten mit Zitat

Diese Funktion gibt in Abhängigkeit vom Alter eines Artikels eine bestimmte Anzahl von Tagen ein "neu"-Bildchen aus, das vor der Überschrift eines Artikels ausgegeben werden kann:
Code:

function artikelistneu ($anzahlNeuTage) {

/*                          \|/
---------------------------- o|o ----------------------------------
                              v
Diese Datei berechnet die Tage seit dem Veröffentlichungsdatum
eines Artikels und gibt für die ersten x Tage das gif "neu" aus. */

// tage, die ein artikel "neu" ist, festlegen:

if (empty($anzahlNeuTage)) $artikelfrisch = 7;
else $artikelfrisch = $anzahlNeuTage;

setlocale(LC_TIME,de_DE);

// Publikationsdatum des Artikels globalisieren und ermitteln:
global $db_pub_datum;
$publ = $db_pub_datum;

// string pub_datum - zeit abtrennen:
$pubdate = substr ($publ,0,10);

// string sortieren:
$ptag = substr ($pubdate,8,2);
$pmon = substr ($pubdate,5,2);
$pjahr = substr ($pubdate,0,4);
$pubdatesort = $ptag.'.'.$pmon.'.'.$pjahr;

// heutiges datum:
$jetztdate = date ("Y-m-d");

// Returns the Excel/Calc internal date integer from either an ISO date YYYY-MM-DD or MM/DD/YYYY formats:

$pubdate_xls = (25569 + (strtotime("$pubdate 12:00:00") / 86400));
$jetztdate_xls = (25569 + (strtotime("$jetztdate 12:00:00") / 86400));

// dank an http://www.php.net/manual/de!

$tagesdiff = $jetztdate_xls - $pubdate_xls;

// bilddatei-code ausgeben, wenn der artikel nicht älter als x tage ist (url an bildpfad anpassen):
if ($tagesdiff < $artikelfrisch){
   $bild = '<img src="../../bilder/neu.gif" style="border:0; margin: 0 8px -5px 0;" alt="neu" title="artikel vom '.$pubdatesort.'" />';
}
else {
   $bild = '';
}
return $bild;
}

Die Bild-URL muss angepasst werden. Wenn man nach obigem Vorbild die Funktion mit
Code:
[!-- function: artikelistneu; anzahlNeuTage=<!-- TEXT: artikelNeu; -->; --]

in einem Artikeltemplate einbaut, dann kann der Redakteur die Anzahl der Tage selbst bestimmen...

Grüße von
Horst
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 -> Kleine und neue Module Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
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