| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Du musst immer alle Variablen auch mitgeben. Sprich: Dir fehlt das $smarty->assign("copyright", .... Dein Code um den Footer komplett zu kompilieren ist vollständig überflüssig.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Erfahrener Benutzer | Du hast eine Smarty-Instanz. Diese eine Smarty-Instanz kompiliert dann sowohl die index.tpl als auch nach Anweisung des Includes die footer.tpl. Aus Sicht von Smarty ist das ein Template mit Subtemplate. Das sind keine zwei unabhängigen Templates oder zwei unabhängigen Klassen. Du hast zwei mögliche Lösungen aus dieser Misere: 1. Du baust es so, dass allgemeine Variablen immer per "->assign" gesetzt werden, unabhängig davon, ob das Include benutzt wird oder nicht 2. Du erweiterst Smarty und baust eine Funktion, die bei Bedar bei einem Include weitere Variablen einbindet. Schaue ins Smarty-Handbuch, wie man Smarty-Plugins schreiben kann.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Neuer Benutzer Registriert seit: 26.01.2011
Beiträge: 25
PHP-Kenntnisse: Anfänger ![]() | hallo, Ich glaube ich habe ein ähnliches Problem. Schade dass der abdullah seine Lösung nicht geposted hat. Könnte mir wahrscheinlich helfen. Nun ja also hier sind meine Kopfschmerzen. Habe mich über PHP und Smarty eine Woche lang belesen und sehe langsam den Wald vor lauter Bäumen nicht mehr. Es gibt zu viel Information. Aber das Schlimme ist ja, dass jedes Mal was anderes geschrieben wird. Deswegen möchte folgendes fragen. Ich möchte in meine intex.tpl die blog.tpl includen, aber der zeigt mir dann nur den Inhalt meiner blog.tpl ohne den dazugehörigen code(blog.php). Und wenn ich meine URL mit /blog.php aufrufe dann zeigt er mir die Blogs. Habe Smarty 3 installiert und mit dem Code von Smarty die Pfade überprüft. Die Ausgabe zeigte das alle ok sind Smarty Installation test... Testing template directory... /users/zerg/www/temp/ is OK. Testing compile directory... /users/zerg/www/smarty/temp_c/ is OK. Testing plugins directory... /users/zerg/www/smarty/plugins/ is OK. Testing cache directory... /users/zerg/www/smarty/cache/ is OK. Testing configs directory... /users/zerg/www/smarty/configs/ is OK. Tests complete. Sorry wenn etwas unverständlich oder falsch ist. Ist mein erster Post. meine index.php Code: <?php
require('smarty/Smarty.class.php');
$smarty = new Smarty;
$smarty->testInstall();
$smarty->display('index.tpl');
?>
Code: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title></title>
</head>
<body>
{include file="blog/blog.tpl"}
</body>
</html>
Code: <?php
require('smarty/Smarty.class.php');
$smarty = new Smarty;
$db = @new mysqli('localhost', '******', '******', '******');
if (mysqli_connect_errno()) {
die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
$sql = 'SELECT
title,
story,
user.id,
story.id,
date_posted,
username,
userid
FROM
blog_story
INNER JOIN
user
ON
userid = user.id
ORDER BY osdate_blog_story.id DESC LIMIT 8';
$result = $db->query($sql);
if (!$result) {
die ('Etwas stimmte mit dem Query nicht: '.$db->error);
}
$blogliste = array();
while ($row = $result->fetch_assoc()) { // NULL ist äquivalent zu false
// $row ist nun das Array mit den Werten
$blogliste[] = $row;
}
$result->close();
unset($result); // und referenz zum objekt löschen, brauchen wir ja nicht mehr...
$smarty->assign('blogliste',$blogliste);
$smarty->display('blog/blog.tpl');
?>
Code: {strip}
<link href="{$css_path}startseite/werbeanzeigen/default.css" rel="stylesheet" type="text/css" />
<table width="623" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="3">
</td>
</tr>
{foreach from=$blogliste item=row}
<tr>
<td height="7">
</td>
</tr>
<tr>
<td height="46">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="10">
</td>
<td width="48">
<a href="http://zerg.bplaced.net/showprofile.php?id={$row.userid}"><img border="0" src="getsnap.php?id={$row.userid}&typ=tn" width="48" height="38"></a>
</td>
<td width="9">
</td>
<td width="379" height="46" valign="middle">
<a class="blog_titel" href="http://zerg.bplaced.net/viewblog.php?id={$row.id}" target="_top">{$row.title|truncate:115:"...":true}</a>
</td>
<td width="170" align="right" valign="middle">
<font style="font-family:Arial; font-size:11px; color:#979797;">am {$row.date_posted|date_format:$lang.DATE_FORMAT}<br></font>
<a class="blog_username" href="http://zerg.bplaced.net/showprofile.php?id={$row.userid}">{$row.username}</a>
</td>
<td width="11">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="7">
</td>
</tr>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="10">
</td>
<td height="1" width="602" bgcolor="#DBDBDB" style="background-image:url({$image_dir}blog_trennlinie.jpg); background-repeat:repeat-x; background-position:bottom;">
</td>
<td width="11">
</td>
</tr>
</table>
</td>
</tr>
{/foreach}
</table>
{/strip}
|
| | |
| | |
| Erfahrener Benutzer | Insofern du Smarty 3 benutzt solltest du nicht Includen sondern extenden. Deine blog.tpl ist die Datei die den eigentlichen Content in das von index.tpl vorgegebene "Layout" reindrücken möchte. Du kannst dort Felder ( Blöcke ) vorgeben und diese dann füllen. Das geht einfacher als einen "Wald" aus Includes zu erstellen: index.tpl Code: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>{block name="title"}{/block}</title>
{block name="css"}{/block}
</head>
<body>
{block name="content"}Ups, hier hat wer die Falsche Datei ge-displayed :({/block}
</body>
</html>
blog.tpl Code: {extends file="index.tpl"}
{block name="title"}Tolle Seite - {$page.title}{/block}
{block name="css"}
<link href="{$css_path}startseite/werbeanzeigen/default.css" rel="stylesheet" type="text/css" />
{/block}
{block name="content"}
<table width="623" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="3">
</td>
</tr>
{foreach from=$blogliste item=row}
<tr>
<td height="7">
</td>
</tr>
<tr>
<td height="46">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="10">
</td>
<td width="48">
<a href="http://zerg.bplaced.net/showprofile.php?id={$row.userid}"><img border="0" src="getsnap.php?id={$row.userid}&typ=tn" width="48" height="38"></a>
</td>
<td width="9">
</td>
<td width="379" height="46" valign="middle">
<a class="blog_titel" href="http://zerg.bplaced.net/viewblog.php?id={$row.id}" target="_top">{$row.title|truncate:115:"...":true}</a>
</td>
<td width="170" align="right" valign="middle">
<font style="font-family:Arial; font-size:11px; color:#979797;">am {$row.date_posted|date_format:$lang.DATE_FORMAT}<br></font>
<a class="blog_username" href="http://zerg.bplaced.net/showprofile.php?id={$row.userid}">{$row.username}</a>
</td>
<td width="11">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="7">
</td>
</tr>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="10">
</td>
<td height="1" width="602" bgcolor="#DBDBDB" style="background-image:url({$image_dir}blog_trennlinie.jpg); background-repeat:repeat-x; background-position:bottom;">
</td>
<td width="11">
</td>
</tr>
</table>
</td>
</tr>
{/foreach}
</table>
{/block}
Es reicht übrigens aus wenn du die variable per unset löscht, die datenbank wird dann automatisch ge-closed.
__________________ |
| | |
| | |
| Neuer Benutzer Registriert seit: 26.01.2011
Beiträge: 25
PHP-Kenntnisse: Anfänger ![]() | hallo tr0y, danke das du mir hilfst. Also dein Vorschlag mit Blocks sieht gut und logisch aus. Habe nur ein Problem mit $smartyvar. Ich weiss nicht was du damit meinst. Smarty gibt mir einen Fehler aus, wenn ich es in die PHP-Datei anstatt $smarty->display('blog.tpl'); schreibe ( Fatal error: Call to a member function display() on a non-object in /users/zerg/www/neue_blogs.php on line 50 ). So wie ich das verstanden habe gibt es die Function nicht. Könntest du mir das bitte etwas mehr erklären oder wenigstens einen Verweis geben. Letzte frage noch. Was meinst du mit unset. Meine Datenbankabfrage habe ich doch in der neue_blogs.php damit geschloßen. SOrry für die Fragerei aber ich würde gerne alles verstehen. Gruß panica |
| | |
| | |
| Erfahrener Benutzer | $smartyvar ist dein $smarty ... Du machst: PHP-Code: PHP-Code:
__________________ |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Tut aber auch nicht weh.. (und es zeugt von gutem Stil, hinter sich immer brav aufzuräumen)
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Formularfeld -> per POST-Methode Ergebnis in andere Datei speichern? | Tomchen | PHP Tipps 2009 | 9 | 19.04.2009 16:43 |
| [Erledigt] Datei lesen in andere Verzeichnis | nymus7 | PHP Tipps 2009 | 10 | 17.02.2009 16:21 |
| [Erledigt] inhalt einer Datei in Variable Speichern | mupilz | PHP Tipps 2008 | 6 | 31.05.2008 13:28 |
| Text aus Datei in JS includieren | Plague | HTML, Usability und Barrierefreiheit | 1 | 26.10.2005 12:07 |
| Variable mit an andere datei übergeben | nicobischof | PHP Tipps 2005-2 | 6 | 17.09.2005 19:23 |
| ZIP Datei auf Server kopieren, entpacken und Inhalt in DB | PHP-Fortgeschrittene | 40 | 06.06.2005 23:33 | |
| wie kann ich den Inhalt einer Datei sortieren? | PHP Tipps 2005 | 4 | 16.05.2005 14:18 | |
| <texarea> inhalt aus einer exteren datei | PHP Tipps 2004-2 | 3 | 06.12.2004 20:28 | |
| Kann man ein Formular an die eine oder andere Datei weiterge | d-81 | PHP Tipps 2004-2 | 7 | 03.12.2004 17:06 |
| [HILFE] Datenbank Inhalt fuer andere Webseiten !?! | PHP Tipps 2004-2 | 3 | 05.11.2004 17:34 | |
| [Erledigt] Inhalt der PHP Datei verschwindet | PHP Tipps 2004 | 11 | 18.10.2004 23:59 | |
| Ausgabe einer Datei in andere schreiben? | Unbekanntes_Pferd | PHP Tipps 2004 | 1 | 07.10.2004 12:16 |
| variable an andere php datei übergeben | PHP Tipps 2004 | 18 | 19.09.2004 10:09 | |
| Inhalt einer Datei einbinden ohne Inhalt anzuzeigen | Corvin | PHP Tipps 2004 | 4 | 22.07.2004 09:24 |
| Inhalt einer datei Sortieren ???? | PHP Tipps 2004 | 12 | 21.06.2004 22:56 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php zend includieren, http://www.php.de/php-fortgeschrittene/62249-erledigt-inhalt-einer-template-datei-eine-andere-template-datei-includieren.html, smarty extends file w3c, smarty subtemplates caching 2011, smarty variable an andere template übergeben, mehrere templates in einer datei, smarty mehrere templates, smarty include in variable, php zip datei hinzufügen anderen ort speichern, smarty display nicht ausgeben, smarty zwei template dateien, vbulletin template datei, display zwei dateien php, template in zwei dateien, templatedateien aufbauen mit hilfe einer datenbank, smarty ausgabe nur einsen angezeigt, php mehrere templates, php code in einer tpl datei einbetten per smarty, smarty variable aus anderem template anzeigen, php inhalte aus anderer datei in html |