versuch13
Erfahrenes Mitglied
Hallo, also mir geht es eigentlich nicht direkt um die template engine von Drupal,
sondern ich möchte etwas ähnliches realisieren. Ich habe einen Blick auf den Drupal
Code geworfen allerdings bringt mich das aufgrund von Verständnis Problemen leider
nicht weiter.
In Drupal hat man die Möglichkeit verschiedene Template Dateien anzulegen.
Zum Beispiel page-default.tpl.php als Template welches des eigentliche HTML
Dokument enthält.
also in etwa
Dann gibt es die Möglichkeit zum Beispiel für Kommentare ein eigenes Template
anzulegen. Diese könnte dann ungefähr so aussehen.
So, und ähnliches habe ich nun auch vor nur das es nicht die Ausmaße des Templating
in Drupal annehmen soll.
Ok, hier mal ein Beispiel welches ich mir zurecht gemacht habe, es funktioniert auch
soweit. Allerdings möchte ich gerne wissen wie man es besser machen kann.
page.tpl.php
blog-template.php
Das Array $blog enthält also die Inhalte. Dann wird für jedes Array Element einmal
das Blog Template inkludiert (und da frage ich mich ob es nicht besser geht).
Mir wäre lieber, das array $blog in einen String ($content) zu schreiben und diesen
anhand des blog-template.php zu formatieren.
Also in etwa so:
Wichtig ist mir, dass ich in den einzelnen Templates keine Loops haben
möchte. Man sollte also einfach nur eine Variable ausgeben können wie im
Beispiel.
Ja, eventuell kennt sich ja jemand mit Drupal sehr gut aus und weiß wie das dort
funktioniert oder hat trotzdem eine Idee oder Tipp wie man dies so umsetzen könnte.
Vielen Dank schon mal.
sondern ich möchte etwas ähnliches realisieren. Ich habe einen Blick auf den Drupal
Code geworfen allerdings bringt mich das aufgrund von Verständnis Problemen leider
nicht weiter.
In Drupal hat man die Möglichkeit verschiedene Template Dateien anzulegen.
Zum Beispiel page-default.tpl.php als Template welches des eigentliche HTML
Dokument enthält.
also in etwa
HTML:
Doctype
head
<body>
/* Layout bestimmenden Elemente */
<div id="menu"><?php echo $menu ?></div>
<div id="content"><?php echo $content ?></div>
<body>
Dann gibt es die Möglichkeit zum Beispiel für Kommentare ein eigenes Template
anzulegen. Diese könnte dann ungefähr so aussehen.
HTML:
<h3><?php echo $title; ?></h3>
<p><?php echo $comment; ?></p>
So, und ähnliches habe ich nun auch vor nur das es nicht die Ausmaße des Templating
in Drupal annehmen soll.
Ok, hier mal ein Beispiel welches ich mir zurecht gemacht habe, es funktioniert auch
soweit. Allerdings möchte ich gerne wissen wie man es besser machen kann.
page.tpl.php
PHP:
<?php
error_reporting(E_ALL);
$page['title'] = 'Seiten Titel';
$page['modul'] = 'blog';
$blog['title'][0] = 'Überschrift 1';
$blog['article'][0] = 'Artikel 1';
$blog['title'][1] = 'Überschrift 2';
$blog['article'][1] = 'Artikel 2';
$blog['title'][2] = 'Überschrift 3';
$blog['article'][2] = 'Artikel 3';
$template = $page['modul']."-template.php";
function createContent() {
global $blog;
global $template;
$content = '';
for($i = 0; $i <= count($blog); $i++) {
$title = $blog['title'][$i];
$article = $blog['article'][$i];
$content .= include($template);
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $page['title']; ?></title>
</head>
<body>
<div id="blog">
<?php createContent(); ?>
</div>
</body>
</html>
blog-template.php
PHP:
<?php if($title): ?>
<h2><?php echo $title ?></h2>
<?php endif; ?>
<?php if($title): ?>
<div class="article"><?php echo $article ?></div>
<?php endif; ?>
Das Array $blog enthält also die Inhalte. Dann wird für jedes Array Element einmal
das Blog Template inkludiert (und da frage ich mich ob es nicht besser geht).
Mir wäre lieber, das array $blog in einen String ($content) zu schreiben und diesen
anhand des blog-template.php zu formatieren.
Also in etwa so:
PHP:
<?php
error_reporting(E_ALL);
$page['title'] = 'Seiten Titel';
$page['modul'] = 'blog';
$blog['title'][0] = 'Überschrift 1';
$blog['article'][0] = 'Artikel 1';
$blog['title'][1] = 'Überschrift 2';
$blog['article'][1] = 'Artikel 2';
$template = $page['modul']."-template.php";
/*
tue etwas um das array $blog formatiert anhand des blog-template.php
in einen String ($content) zu schreiben
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $page['title']; ?></title>
</head>
<body>
<div id="blog">
<?php echo $content ?>
</div>
</body>
</html>
PHP:
<?php if($title): ?>
<h2><?php echo $title ?></h2>
<?php endif; ?>
<?php if($title): ?>
<div class="article"><?php echo $article ?></div>
<?php endif; ?>
Wichtig ist mir, dass ich in den einzelnen Templates keine Loops haben
möchte. Man sollte also einfach nur eine Variable ausgeben können wie im
Beispiel.
Ja, eventuell kennt sich ja jemand mit Drupal sehr gut aus und weiß wie das dort
funktioniert oder hat trotzdem eine Idee oder Tipp wie man dies so umsetzen könnte.
Vielen Dank schon mal.
Zuletzt bearbeitet: