Antworten
Wie wärs mit Smarty? ;)
2.
Naja, das wollte er nun wirklich nicht hören....
Allerdings:
:D Ich wurstel meist mit
SoEinem System :D
3.
Oliver ich hab dich nicht lieb :P... zurzeit nutz ich eh TeamplatePower aber damit kann ich nicht auf comerz gehn und Smarty mag ich nicht weil das vielzuviel schnick schnack hat und ich alle templates umschreiben müsst.... und das sind nicht grade wenig.... bei 4 laufenden großen projekten :) Muss ja jemanden geben der mir helfen kann :O
4.
Warum so umständlich? Verwende doch als platzhalter in deinem template entweder so was: {platz_halter} oder einfach tags, wie z.B. <FORM/>.
Die Sachen kannst du dann ganz einfach mit preg_replace ersetzen. Den Inhalt für den Platzhalter lässt du dir vorher von einer anderen Klasse generieren und ersetzt den dann.
Bsp:
In deiner template datei steht der platzhalter: {link}
Code: In Zwischenablage kopieren (nur IE)
Aber vergiss nicht die gepufferte ausgabe zu verwenden (ob_start() u. ob_end_flush())
5.
bei der letzten } fehlt der slash davor. bitte beachte dies
6.
Zitat:
Ich kann euch ja auch mal den Source geben...
Auja vielen Dank - als repräsentatives Beispiel für ein unsäglich schlechtes Tempatesystem, quasi "wie man es nicht machen soll".
Rückkehr zur Steinzeit...
Ich empfehle als Templatesystem PHP, kostet auch recht wenig.
7.
[quote]
spoensche posteteWarum so umständlich? Verwende doch als platzhalter in deinem template entweder so was: {platz_halter} oder einfach tags, wie z.B. <FORM/>.
Die Sachen kannst du dann ganz einfach mit preg_replace ersetzen. Den Inhalt für den Platzhalter lässt du dir vorher von einer anderen Klasse generieren und ersetzt den dann.
Bsp:
In deiner template datei steht der platzhalter: {link}
Code: In Zwischenablage kopieren (nur IE)
Aber vergiss nicht die gepufferte ausgabe zu verwenden (ob_start() u. ob_end_flush())[/quote] Hallo,
genau dieser Ansatz macht mir seit ca. 10 Stunden Kopfzerbrechen - Ich versuche es genau so zu lösen, aber ich vestehe folgende Punkte nicht:
1. Ich bekomme bei Deinem code folgenden Error:
Parse error: parse error, unexpected ')', expecting '=' in C:\Inetpub\wwwroot\cv24\deutsch\last_links.php on line 49
2. Wie soll das hier gehen ?
Zitat:
Aber vergiss nicht die gepufferte ausgabe zu verwenden (ob_start() u. ob_end_flush())
Wäre super dankbar über genauere Anweisungen hierzu, ich versuche übrigens unter $link HTML gemischt mit PHP zu verwenden - vielleicht ist das so nicht möglich ?
Gruss,
Daniel
8.
Ein Blick ins Handbuch hilft da ungemein :)
http://de2.php.net/manual/de/ref.outcontrol.php
9.
Code: In Zwischenablage kopieren (nur IE)
so sollte es funktionieren, tuts bei mir jedenfalls, oben war ein list zu viel in der while schleife. das musste durch ein each ersetzten.
10.
*seufz* Diese Template-System-Geschichte ist einfach nicht totzukriegen. Genauso wie "Nested Sets". Das ist alles ganz grober Unfug...
11.
Hallo oimel,
kannst du mir bitte ein wenig Informationen geben, warum Nested Sets "grober Unfug" sind. Das interessiert mich doch sehr.
MFG
Phplehrling
12.
Hallo,
oimel, weshalb sind Templates Unfug ? Was wäre die Alternative ?
spoensche, also bei mir funzt das wieder nicht, könntest Du mal einen Blick werfen bitte ? Ich bin ein totalter Newbie, und habe es eh nicht so ganz verstanden, was bzw. woher $tpl kommt, ich denke da muss ich noch was definieren ?
<?php require_once('../Connections/cv24.php');
include ('../Templates/cv24.tpl');
$maxRows_RecordsetLast = 10;
$pageNum_RecordsetLast = 0;
if (isset($_GET['pageNum_RecordsetLast'])) {
$pageNum_RecordsetLast = $_GET['pageNum_RecordsetLast'];
}
$startRow_RecordsetLast = $pageNum_RecordsetLast * $maxRows_RecordsetLast;
mysql_select_db($database_cv24, $cv24);
$query_RecordsetLast = "SELECT URL, ESPTitle FROM Links WHERE Active = -1 ORDER BY ID DESC";
$query_limit_RecordsetLast = sprintf("%s LIMIT %d, %d", $query_RecordsetLast, $startRow_RecordsetLast, $maxRows_RecordsetLast);
$RecordsetLast = mysql_query($query_limit_RecordsetLast, $cv24) or die(mysql_error());
$row_RecordsetLast = mysql_fetch_assoc($RecordsetLast);
if (isset($_GET['totalRows_RecordsetLast'])) {
$totalRows_RecordsetLast = $_GET['totalRows_RecordsetLast'];
} else {
$all_RecordsetLast = mysql_query($query_RecordsetLast);
$totalRows_RecordsetLast = mysql_num_rows($all_RecordsetLast);
}
$totalPages_RecordsetLast = ceil($totalRows_RecordsetLast/$maxRows_RecordsetLast)-1;
$Last_Links='<table width="26%" border="0">
<tr>
<td width="31%"><?php do { ?>
<table width="80%" border="0">
<tr>
<td><a title="<?php echo $row_RecordsetLast["ESPTitle"]; ?>" href="<?php echo $row_RecordsetLast["URL"]; ?>" class="cv24"><?php echo (++$startRow_RecordsetLast) ?> <?php echo $row_RecordsetLast["ESPTitle"]; ?></a></td>
</tr>
</table>
<?php } while ($row_RecordsetLast = mysql_fetch_assoc($RecordsetLast)); ?></td>
</tr>
</table>';
$rep = array("{Last_Links}" => $Last_Links);
// falls du mehrere einträge in dem array rep hast. $tpl ist der inhalt deines templates
while (list($variable, $value) = each($this->assign)) {
if (preg_match("|" . $variable . "|",$this->file))
$this->file = preg_replace("|" . $variable . "|",$value, $this->file);
}
echo $tpl;
?>
13.
Ich empfehl dir Pear::Template_IT...
Das entspricht ziemlich genau deinen Wünschen....
Und Oimel hat halt was gegen Templates :)
Die Meinungen gehen halt auseinander.
So meinen die von PHPGuru.de ja auch ihr System sei der Korrekte Weg :)
Zitat:
Was wäre die Alternative
Die Alternative wäre natürlich, PHP und HTML einfach zu mischen...
Was dann zb einem Smarty Template gleicht =)
14.
.de? .com? .net? Alles falsch es muss phpguru.org heissen :)
BTW. Weisst du warum oimel was gegen Nested Sets hat?
15.
@daniel
der codeschnippsel von mir stammt aus einer klasse, deshalb $this. Die template datei von mir erhällt keinen php code sondern platzhalter in der form: {platzhalter}.
das array assign sieht wie folgt aus:
Code: In Zwischenablage kopieren (nur IE)
das template:
Code: In Zwischenablage kopieren (nur IE)
usw.
die werte aus deiner datenbank packst du mit einem platzhalter in das array assign. die template datei lädst du mit fopen und fread (gibt aber auch noch andere möglichkeiten die datei als string zu laden) dann ersetzt du mit preg_replace die platzhlater durch die werte und gibst alles aus.
16.
Hallo,
danke für Deine Zeit !
Meine Template Datei enthält auch nur einen Platzhalter: {Last_Links}
Wie könnte ich denn meine Klasse gestalten ?
Ich bekomme folgenden Fehler:
Warning: Variable passed to each() is not an array or object in C:\Inetpub\wwwroot\cv24\deutsch\last_links.php on line 49
Setzt Dein Code Pear Template_IT voraus ? ich denke, das könnte man gut gebrauchen !?
17.
Ich habe überhaupt nichts gegen nested sets - dort, wo sie angebracht sind. In den allermeisten Fällen ist es aber nur völlig unnötig kompliziert. Das wurde aber doch schon alles so oft diskutiert.
18.
Ihr spammt A. hier nur rum und B. Lass ich mich nicht beleidigen ?? ICH GLAUBE NICHT!!!! Was SOLL das? Das hier ist ein Forum, da kann jeder seine Frage stellen, so sinnlos sie auch erscheinen mag, DAS scheinen manche zu vergessen!! Ihr müsst nicht Antworten. Und nur weil IHR keine ahnung habt wie man ein TPL-System macht und euch der Hintergrund auch nicht interessiert, gibt es ja doch menschen die es interessiert also sagt was zum Thema oder haltet einfach den Mund! Und mein Problem liegt nicht am Variablen Parsen sindern am Block setzen, wer mal richtig lesen würde.. Aber ihr seht das Thema und mein ja der hat das und dies Prob. dem sagma erstmal: "Nimm doch Sowiesoundüberhaupt".... Ich finde das nicht OK, weil dies ein Forum in den Qualitativ wichtigen Beiträgen herunterzieht. Das Forum ist nicht schlecht, bei ner Frage die Beantwortet werden will weil es für diejenigen sinvoll erscheint. Wenn ich aber ankomme und sag: "Na ihrs könnta mir mal helfen hab da prob mit eigenem TPL-System... sowieso und überhaupt", ich das ordentlich erkläre und daruf verweise, dass ich nix externes nutzen will weil mich die Funktionsweise interessiert gibbets ja dann doch ein paar spammer die da unbedingt sinnlos sagen Smarty..... OK dieses TPL-System ist echt nicht schlecht, respekt an die Progger, aber die ham doch auch irgendwann mal angefangen und wer nie anfängt kann nie soweit kommen. Bei WoltLab sagt doch auch keiner: "Son schmarn die ham ne eigene TPL-Engine, LOL!". Wisst ihr was ich mein?? Gibbets hier auch nur eine Seele die mich versteht?
19.
Aber hier wurde doch nichtmal eine Analyse betrieben, ob es nicht andere Möglichkeiten gäbe, das Problem zu lösen; sondern es wurde einfach wild drauf los programmiert. Was soll man da im Fortgeschrittenen-Forum denn von halten?
20.
@daniel
du erstellst eine klasse, die die klassenvariable assign (das assoziative array) hat, eine klassenvariable die die templatedatei als string enthällt. Die klasse benötigt die methoden assign, die die variable und dessen wert in der klassenvariable assign ablegt.
beispiel:
Code: In Zwischenablage kopieren (nur IE)
@blackskyliner
in deinem beispiel liest du als erstes ja deinen hauptblock mutherfucker ein. den namen oder die parent id von diesem block kannst du bei dem zweiten aufruf der methode setBlock mit übergeben, dann hast du die parent id. wenn du die methode setBlock zum ersten mal aufrufst übergibst du null. In der methode setBlock überprüfst du dann ob der wert null ist und setzt dem entsprechend die parent id. sprich für den ersten block (mutherfucker) nimmst du 0 und für den rest die entsprechenden blocknamen oder ids.
21.
@oimel ohh doch ich hab stundenlang konzepte ausgearbeitet und kahm darauf das dies das beste scheint.... wieso? hättest du es denn anders gemacht? da bin ich ja mal gespammt wie du so ein Blocksystem verwalten würdest. ich hätte da echt keine andere sinnvolle Idee.. und außerdem hab ich das hier gestellt weil im Anfängerforum dann wieder nur gekommen wäre nutze dies das oder jenes, warum das rad neu erfinden, blubb, bla, enzec, ezetera... Die Frage erschien mir doch schon etwas schwierig und da hab ichs halt ins Fortgeschrittene mit reingestellt.
@spoensch
Ja nun hab ich ja das problem das der User die BlockID angeben muss was ich ja nicht will :) das soll so für sich allein ein bisschen hochzählen, ansonsten wäre das ja kein prob. :) trotzdem danke, dass wenigstens mal eine Antwort zum Theman von jemanden kahm ;), macht mir hoffnung das die anderen sich der Sache anschließen ^.^... Ich müsst ja nur rausfinden ob in dem Block, den ich grade aufrufe A. Nach andere Blocke sind und dann müsst ich noch abfragen ob der Block den ich grade aufrufe sich in einem anderne befindet und ob der auch schon gecalled wurde.... das ist schwerer ales klingt ^.^
[OT]
Ich weiß ich mag es halt kompliziert... das mag mein Mathe Lehrer an mir ^.^ ich ham am ende in meinen Matheaufgaben manchmal soviel Klammern das mein Taschenrechner gleichmal ewig mit rechnen braucht :O Taja.... :D
[/OT]
22.
Was denn für ein Blocksystem??
Bei der Analyse guckt man doch üblicherweise, welches Problem man vor sich hat und überlegt sich dann, wie eine mögliche Lösung aussehen kann. Ich sehe aber nicht, dass ihr überhaupt mal klar analysiert wurde, welches Problem überhaupt gelöst werden soll.
23.
der user muss die block id nicht angeben.wenn du zu erst die hauptblöcke in ein array einliest, kannst du daraus mit einer schleife die block id auslesen.
eine weitere möglichkeit ist, dass wenn du mit dem template system eine modulbasierte anwendung aufbaust, die blöcke den entsprechenden modulnamen zuweist, das modul dann dem template system den content liefert und das template system diesen für die blöcke des moduls ersetzt.
24.
ja, aber wie weiß ich, welcher block in welchem liegt?... mhm ich hab da grade ne idee :) mal sehn...