php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.10.2005, 13:30  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, aber solange wir nicht wissen, wie die Template-Engine intern mit Blöcken umgeht können wir doch schlecht sagen, was da schief läuft, oder?
imported_Ben ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.10.2005, 13:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

In der FAQ oder in Beispielen zu deiner Template-"Engine" steht das ganz bestimmt!
Zergling-new ist offline  
Alt 29.10.2005, 14:16  
Benutzer
 
Registriert seit: 12.10.2005
Beiträge: 67
argon
Standard

@Ben:
Zitat:
Sorry, aber solange wir nicht wissen, wie die Template-Engine intern mit Blöcken umgeht können wir doch schlecht sagen, was da schief läuft, oder?
Ich benutze die PHPLIB TemplateKlasse.
Diese Seiten sind mir nicht unbekannt:
http://kris.koehntopp.de/artikel/phplib-deutsch/
http://www.sanisoft.com/phplib/manua...teExamples.php <-- hier ist auch ein Beispiel wie phplib-Templates funktionieren.

Ich wüsste jetzt aber nicht, wo ich den Ansatz, für die Lösung meines Problems finden könnte.

@Zergling:
Glaub mir, ich such schon seit Stunden (gester,heute), nach Beispielen die mir weiter helfen könnten (siehe Link oben).
Ich seh wahrscheinlich "den Wald vor lauter Bäumen nicht mehr"...

Scheinbar ist mein Problem schwerwiegender als ich dachte....

EDIT: ich geh mir jetzt erst einmal ein paar Bier kaufen, dann gibt es heute FrustSaufen....*gg*..... :wink:
argon ist offline  
Alt 29.10.2005, 16:22  
Benutzer
 
Registriert seit: 12.10.2005
Beiträge: 67
argon
Standard

werd das Gefühl nicht los, das die ganze Mühe,
mein Problem zu beschreiben, für umsonst war....*megafrust*...
argon ist offline  
Alt 30.10.2005, 13:17  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

template.inc.php
PHP-Code:
<?php
//Einfügen der Template Klasse von Kristian Köhntopp
require("template_class.inc.php");

$tpl = new template("./tpl/","keep");

$tpl->set_file("CONTENT"$content);//<-- hier soll der CONTENT von blockBeispiel.tpl.php ersetzt werden
$tpl->parse("temp""CONTENT");
//- 1. kannst Du das erst machen, wenn Du content verarbeitet hast (incl. Block
//- 2. macht es keinen Sinn, $content zweimal einzulesen.
//- 3. benutzt Du temp nie wieder
//- dafür hast Du jetzt Unsinn in CONTENT drinstehen, den Du nie
//- mit was sinnvollem überschreibst

/*************Block-Beispiel************/
$tpl->set_file("seite""$content");
$tpl->set_block("seite""block""blockbereich");

$tpl->set_var(array("TITLE" => "Das ist mein Seitentitel"));

for (
$i 1$i <= 10; ++$i) {
  
$tpl->set_var(array("BLOCKINHALT" => $i));
  
$tpl->parse("blockbereich""block"true);
}
$tpl->parse("out""blockbereich");

//- $tpl->parse("CONTENT", "blockbereich");
//- wäre wohl sinnvoller, denn was hat das in "out" zu suchen,
//- ausser vom nächsten parse() gleich wieder überschrieben zu werden?

/*************Block-Beispiel************/


$tpl->set_file("template""template.tpl.php");
$tpl->parse("out""template");
$tpl->p("out");

?>
__________________
mod = master of disaster
Waq ist offline  
Alt 30.10.2005, 19:06  
Benutzer
 
Registriert seit: 12.10.2005
Beiträge: 67
argon
Standard

Also vorhin war ich ja fast sprachlos, ich hab nicht mehr damit gerechnet das ich es diese Woche auf die Reihe kriege.... Ich hab jetzt fast 3 Tage an diesem Prob gesessen....*gg*

Erst einmal herzlichen Dank an WAQ .... ohne Deine Hilfe hätt ich es heute (und auch nächste Zeit) nicht lösen können....:wink: :wink:

Es hat mit Deiner Beschreibung und FehlerDiagnose wunderbar geklappt...."ick könnt Dich knutschen"....


und nu gehts los...


Zitat:
//- 2. macht es keinen Sinn, $content zweimal einzulesen.
Das habe ich verändert, indem ich nun den Block-Content $content_block genannt habe.

Zitat:
//- 3. benutzt Du temp nie wieder
da hast Du sicherlich auch recht, aber ich hab das leider noch nicht richtig
verstanden In Beispielen die ich gefunden hatte, wurde es so gemacht und es funktionierte.... wenn ich es weglasse funktioniert es nicht mehr.

Zitat:
//- $tpl->parse("CONTENT", "blockbereich");
//- wäre wohl sinnvoller, denn was hat das in "out" zu suchen,
//- ausser vom nächsten parse() gleich wieder überschrieben zu werden?
Hier war der Knackpunkt! Ein blöder Fehler!!!
Nachdem ich es in:
PHP-Code:
<?php
$tpl
->parse("CONTENT""blockbereich");
?>
geändert habe, funktionierte es wunderbar...

So und nun noch der gesamte Code für die "NachWelt", wie ich ihn jetzt habe und wie er auch funktioniert.


template.inc.php
PHP-Code:
<?php
//Einfügen der Template Klasse von Kristian Köhntopp
require("template_class.inc.php");

$tpl = new template();

//überprüfen, ob $head gesetzt wurde
if (isset($head))
{
    
$tpl->set_file("HEAD"$head);
    
$tpl->parse("temp""HEAD");
}

//überprüfen, ob $titel gesetzt wurde
if (isset($titel))
{
    
$tpl->set_var("TITEL"$titel);
    
$tpl->parse("temp""TITEL");
}

//überprüfen, ob $menue gesetzt wurde
if (isset($menue))
{
    
$tpl->set_file("MENUE"$menue);
    
$tpl->parse("temp""MENUE");
}

//überprüfen, ob $content gesetzt wurde
if (isset($content))
{
    
$tpl->set_file("CONTENT"$content);
    
$tpl->parse("temp""CONTENT");
}


//überprüfen, ob $content_block gesetzt wurde
/*************Block-Beispiel************/
if (isset ($content_block))
{
    
$tpl->set_file("seite""$content_block");
    
$tpl->set_block("seite""block""blockbereich");
    for (
$i 1$i <= 10; ++$i) {
      
$tpl->set_var(array("BLOCKINHALT" => $i));
      
$tpl->parse("blockbereich""block"true);
    }
    
$tpl->parse("CONTENT""blockbereich");
}
/*************Block-Beispiel************/

$tpl->set_file("template""template.tpl.php");
$tpl->parse("out""template");
$tpl->p("out");
?>
template.tpl.php
Code:
<html>
 <head><title>{TITEL}</title></head>
 <body >
    <table border="1" width="100%" bgcolor="e6e6e6" cellpadding="5">
      <tr>
         <td colspan="2" align="center">{HEAD}</td>
      </tr>
      <tr>
         <td align="center" valign="top" width="10%">{MENUE}</td>
         <td align="center" bgcolor="#ffffff" width="80%" valign="top">
{CONTENT}

</td>
      </tr>
    </table>
  </body>
</html>
blockBeispiel.php
PHP-Code:
<?php
$titel 
"Block Beispiel";
$head "head.tpl.php";
$menue "menue.tpl.php";
$content_block "blockBeispiel.tpl.php";

//Ausgabe erfolgt in template.inc.php
include("template.inc.php");
?>
blockBeispiel.tpl.php
Code:
<table>
	<tr>
		<td>
		
		{BLOCKINHALT}
		
		</td>
	</tr>
</table>
linksammlung.php
PHP-Code:
<?php
$titel 
"Linksammlung";
$head "head.tpl.php";
$menue "menue.tpl.php";
$content "linksammlung.tpl.php";

//Ausgabe erfolgt in template.inc.php
include("template.inc.php");
?>
linksammlung.tpl.php
PHP-Code:
<?php
[url="#"]linksammlung[/url]

[
url="#"]linksammlung[/url]

[
url="#"]linksammlung[/url]

[
url="#"]linksammlung[/url]

?>
menue.tpl.php
PHP-Code:
<?php
[url="blockBeispiel.php"]Block Beispiel[/url]

[
url="linksammlung.php"]Linksammlung[/url]

?>
head.tpl.php
PHP-Code:
<?php

<center><h3>Der HEAD-Bereich</h3></center>
?>
Wie gesagt funktioniert dieses Systen.
Die einzige Frage die für mich offen bleibt ist diese:
Warum geht es nicht mehr, wenn ich
z.B.: $tpl->parse("temp", "CONTENT"); weglasse??? Ich benutze
ja - wie Du bereits erwähntest - temp nie wieder....das ist seltsam.

Aber mit diesem Phänomen könnte ich leben...*gg*

Gruß argon
argon ist offline  
Alt 04.11.2005, 11:33  
Benutzer
 
Registriert seit: 12.10.2005
Beiträge: 67
argon
Standard

Hallo zusammen, ich hab da noch eine kleine Frage zu dem Beispiel von oben.
Ich versuch eine Überschrift in diesen Code einzubauen:

s.o. ---> blockBeispiel.tpl.php

Code:
<table>
   <tr>
      <td>
      
      {BLOCKINHALT}
      
      </td>
   </tr>
</table>

Wenn ich es so mache:

Code:
<table>
   <tr>
      <td>
          <h2>BlockInhalt Überschrift</h2>
      </td>
   </tr>
   <tr>
      <td>
        
        {BLOCKINHALT}
        
      </td>
   </tr>
</table>
dann macht er es nicht und zeigt trotzdem nur die Zahlen von 1-10 an.
Ich denke mal weil er nur den Bereich "block" abarbeitet.
Aber was ich nicht verstehe ist, dass ein "unterTemplate" nicht nur aus
"Blöcken" besteht, die anderen Elemente werden aber einfach ignoriert und nicht angezeigt, so als ob sie gar nicht existieren... hmmm...??!!!

Wie schaffe ich es ein Template mit allen Elementen
(nicht nur Blöcke) in das HauptTemplate (template.tpl.php ) einzubinden?
Ich bin echt ratlos, was mache ich nur falsch?!

Wäre schön wenn mir jemand helfen könnte/würde...
__________________
Argon
ist mit etwa 0,933 Volumen % das am häufigsten
in der Atmosphäre vorkommende Edelgas.
argon ist offline  
Alt 04.11.2005, 16:35  
Benutzer
 
Registriert seit: 12.10.2005
Beiträge: 67
argon
Standard

Heute kein Template-Expert hier?....
Naja, ehrlich gesagt wollt ich einfach mal "pushen"....*gg*
__________________
Argon
ist mit etwa 0,933 Volumen % das am häufigsten
in der Atmosphäre vorkommende Edelgas.
argon ist offline  
Alt 05.11.2005, 16:21  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Also das Verfahren sollte folgendes sein, probier das mal selbst, bevor ich mich durch deine Bezeichner wühle:
- Du hast eine Variable, nennen wir sie FILE, wo der Block drinsteht, und die in diesem Fall per set_file() gefüllt wird.
- Du hast einen Block, nennen wir ihn BLOCK, den ziehst Du per
set_block("FILE","BLOCK","BLOCKREP") raus. Dann hast Du eine neue Variable BLOCK, in der der Inhalt des Blocks steht, und da wo der Block vorher war, ist jetzt nur noch der Platzhalter {BLOCKREP}, dahin muss der Block am Ende zurück.
- Jetzt arbeitet man den Block in einer Schleife ab, und baut Zeile für Zeile über parse("BLOCKREP","BLOCK",true) den Inhalt des Blockes zusammen. In BLOCK steht hierbei die ganze Zeit der ursprüngliche Block mit Platzhaltern, in BLOCKREP werden die geparsten Inhalte aneinenandergehägt.
- Jetzt sollte man dafür sorgen, dass auch alle anderen Variablen für Platzhalter in FILE (z.B. deine Überschrift) gesetzt sind, und dann parst man FILE. Hier wird dann auch der Block, genauer BLOCKREP, zurückgelesen.
__________________
mod = master of disaster
Waq ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kategoriedaten rekursiv in Array bringen Schiedsrichter PHP Tipps 2008 2 10.12.2007 15:43
mehrdimensionales array, wert zuweißen? $data['x'][$i][] Matthiasnet PHP Tipps 2007 8 06.08.2007 19:22
Array Schlüssel nehmen den gewünschten Wert nicht an lindner PHP Tipps 2006 3 19.10.2006 19:21
array zählen lindner PHP Tipps 2006 8 13.05.2006 17:46
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Array auf wert überprüfen Ypsillon PHP Tipps 2007 4 19.12.2005 23:28
an welcher stelle im array gibt es den wert ? Skazi PHP Tipps 2007 13 11.12.2005 15:03
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
array speichert ersten wert nicht?! lindner PHP Tipps 2005-2 6 09.07.2005 18:42
Zugriff auf einen bestimmten wert in einem Array PHP Tipps 2005 1 08.02.2005 18:09
Array prüfen ob wert vorhanden, wenn ja, wert ändern... PHP Tipps 2005 4 31.01.2005 22:32
bbcode - Classe PHP-Fortgeschrittene 4 18.09.2004 17:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
parsecontent(), php es wird nur array angezeigt, php array prüfen ob letzter wert, linksammlung php

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.