Page 1 of 1

Funktion erstellen und in template einfügen!

Posted: Tue Apr 25, 2006 2:39 pm
by F4n4T!C
Hallo,
ich versuche gerade mich euer doch recht guten CMS zu betun, jedoch steh ich derzeit vor ein kleinen Problem, ich würde gern ein Include einbinden. Der soll im Haupttemplate an einer logisch ganz bestimmten stelle gesetzt werden.

Wie ich ahne kann ich nicht einfach in den Template Editor einen include hinein schreiben. Deswegen dachte ich daran den include als Funktion irgendwo hinein zu schreiben, das ich dann einfach nur noch den Tag ins Template schriben muss.

Also in Template steht
{include} und schon kommt das was ich haben möchte

Meine Frage ist jetzt, in welche Datei muss das rein und was ist dabei zu beachten??
Ich hoffe mir kann man helfen, Danke!

Re: Funktion erstellen und in template einfügen!

Posted: Tue Apr 25, 2006 3:17 pm
by cyberman
F4n4T!C wrote: Wie ich ahne kann ich nicht einfach in den Template Editor einen include hinein schreiben.
Da Smarty den Output der Templates übernimmt, funzt das nicht ...
Deswegen dachte ich daran den include als Funktion irgendwo hinein zu schreiben, das ich dann einfach nur noch den Tag ins Template schriben muss.
Es kommt darauf an, was du includen willst. CMS made simple hat hierfür mehrere Optionen zur Verfügung.

Ist es nur ein Text oder ein Bild oder ähnliches, gibt es dafür die Funktion "global_content", zu finden in der Administration im Menü "Erweiterungen - Tags" - den weiteren Einsatz verrät dir die Hilfe. Erzeugt wird der global_content über das Menü "Inhalt - Globale Inhaltsblöcke".

Soll es dagegen ein PHP-Script sein, ist der benutzerdefinierter Tag die richtige Wahl - zu erreichen in der Administration über das Menü "Erweiterungen - Benutzerdefinierte Tags".
Also in Template steht {include} und schon kommt das was ich haben möchte
Nach dem Klick auf "Einen userdefinierten Tag hinzufügen" legst du Namen und Inhalt deines Tags fest. Der Inhalt ist dein PHP-Script ohne . Nach dem Speichern wird der Tag an der gewünschten Stelle im Template, einer Seite oder auch einem globalen Inhaltsblock mit {Name_des_benutzerdefinierten_Tags} aufgerufen.

Alternativ kannst du dein PHP-Script an den bereits genannten Stellen aufrufen - du musst den include-Befehl bzw. das Script jeweils nur mit {literal}{/literal} maskieren, damit Smarty nicht versucht, das zu interpretieren.

Re: Funktion erstellen und in template einfügen!

Posted: Tue Apr 25, 2006 4:13 pm
by Piratos
Mach einfach ein normales Smarty - plugin - das ist schnell und billig zu machen:

function smarty_function_mein_plugiin($params, &$smarty) {

// Hier dein Code und gut ist.
}

Re: Funktion erstellen und in template einfügen!

Posted: Tue Apr 25, 2006 4:51 pm
by F4n4T!C
Also das mit dem Tag hinzufügen hat einwandfrei geklappt! Funktioniert auch wie gewollt. Danke!
Ein problem ist bei mir spezifisch noch aufgetreten,

man kann in das Template zum bsp. kein Style/CSS Code anwenden.



table#body{margin-top:-1px}



Klar jeder normale Mensch würde das in die CSS Datei schreiben, aber komischerweise springt dieses Code stückchen in einem CSS File nicht an. Ich hab schon probiert das auch in solch Tag tzu schreiiben, aber da will er es nicht annehmen! Kann ich da was tun, oder müsst ich mir da grundsätzlich ne andere Lösung suchen? Danke!

Re: Funktion erstellen und in template einfügen!

Posted: Wed Apr 26, 2006 7:28 am
by F4n4T!C
^^ AH, wunderbar das geht. Vielen Dank  ;)

Re: Funktion erstellen und in template einfügen!

Posted: Wed Apr 26, 2006 7:15 pm
by F4n4T!C
Hi,
Eine Frage hab ich noch, ich hoffe mir kann da genau so gut geholfen werden wie bei mein anderen Fragen auch.

Das Problem ist folgendes, ich hab ja nun eine Datei includet, da wird auch alles perfekt angezeigt, jedoch umlaute wie ä,ü und ö werden nicht angezeigt!

Wie kann ich das ändern?

Re: Funktion erstellen und in template einfügen!

Posted: Thu Apr 27, 2006 4:39 am
by cyberman
Schau dir mal die Kodierung der inkludierten Daten an - standardmäßig wird der CMSms-Output utf-8 kodiert. Das heisst, du musst für Umlaute und Sonderzeichen die entsprechenden Entitäten verwenden (also ä für ä usw.), damit sie sauber angezeigt werden.

Re: Funktion erstellen und in template einfügen!

Posted: Mon May 01, 2006 12:28 pm
by F4n4T!C
^^ Oh Gott, das hört sich schwierig an, wie soll das denn funktinieren?

Re: Funktion erstellen und in template einfügen!

Posted: Mon May 01, 2006 2:45 pm
by Piratos
Da Smarty den Output der Templates übernimmt, funzt das nicht ...
Grundsätzlich und praktisch geht ein include in ein Smarty - Template.

Auszug aus dem Smarty Handbuch:
Include Tags werden verwendet, um andere Templates in das aktuelle Template einzubinden. Alle Variablen des aktuellen Templates sind auch im eingebundenen Template verfügbar. Das include-Tag muss ein 'file' Attribut mit dem Pfad zum einzubindenden Template enthalten.

Optional kann mit dem assign Attribut definiert werden, in welcher Variable die Ausgabe des mit include eingebundenen Templates abgelegt werden soll statt sie auszugeben.

Beispiel 7-6. function include (einbinden)

{include file="header.tpl"}

{* hier kommt der body des Templates *}

{include file="footer.tpl"}
Das bezieht sich auf ein Template in ein Template.

PHP lässt sich grundsätzlich auch includen

Dazu muss allerdings in der config.php 

$config['use_smarty_php_tags'] = false;  auf true gesetzt werden.

Die Einbindung soll dann so sein (Handbuch):
{* absoluter Pfad, oder relativ zu '$trusted_dir' *}
{include_php file="/pfad/zu/lade_nav.php"}

Re: Funktion erstellen und in template einfügen!

Posted: Mon May 01, 2006 7:46 pm
by cyberman
F4n4T!C wrote: ^^ Oh Gott, das hört sich schwierig an, wie soll das denn funktinieren?
Überhaupt nicht  :) ... such dir einfach alle ä, Ä, ö, Ö, ü, Ü und ß raus und ersetz diese durch ä , Ä , ö , Ö , ü , Ü und ß . Dann sollte es keine Probleme mit der Kodierung mehr geben.

Die Funktion "Suchen und Ersetzen" hat so ziemlich jeder Texteditor.

Re: Funktion erstellen und in template einfügen!

Posted: Tue May 02, 2006 9:11 am
by Piratos
Texteditor
Da sag ich nur Tswebeditor (für Windows) kostnix, markieren Taste F2 fertig.