HTML-Templates/Tagging
Eingetragen von FGamba (24)
am 08.08.2007 - 09:50 Uhr in
am 08.08.2007 - 09:50 Uhr in
Gibt es eine Möglichkeit (wie beispielsweise in Typo3)
in einer HTML-Vorlage (template) Tags für Contents
zu definieren, die dann von Drupal mit dem tatsächlichen
Content ersetzt werden.
Als z.B. eine HTML-Datei erstellen:
....
###BlockX###
und in Drupal einen BlockX definieren, der dann
von Drupal automatisch in die HTLM-Datei an der durch
den Tag definierten Stelle eingefügt wird.
Ich habe das bisher nicht gefunden. Das muß
aber doch möglich sein, oder?
Gruß,
Ralf
- Anmelden oder Registrieren um Kommentare zu schreiben
Du kannst in der
am 08.08.2007 - 09:53 Uhr
Du kannst in der template.php mit der Funktion "_phptemplate_variables" beliebige Variablen hinzufügen, die Ausgabe im Template erfolgt dann einfach per
<?php
print $varibalenname;
?>
Beispiel:
<?php
function _phptemplate_variables($hook, $vars = array()) {
$vars['wichtig'] = 'Das ist ein wichiger Text, den ich immer wieder brauche';
return $vars;
}
?>
Die Variable im Beispiel heisst dann $wichtig.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Ja, nutze einfach die
am 08.08.2007 - 09:57 Uhr
Ja, nutze einfach die vorhandenen Variablen.
vg
//Edit:
Alternativ geibt es auch die Möglichkeit eine andere Theme-Engine[1] zu nutzen.
[1] http://drupal.org/project/Theme+engines
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Admin-Edit?
am 08.08.2007 - 10:14 Uhr
Danke (das war eine sehr schnell Antwort!).
Was ist mit der anderen Seite der Sache?
Wie überschreibe ich den Inhalt von $wichtig innerhalb der Admin-Oberfläche?
Der Inhalt soll ja nicht im php-Quelltext editiert wird müssen, sondern
als Story oder anderer Content von Usern/Admins in der Oberfläche
editiert werden können.
Geht das auch?
Was willst du denn wo
am 08.08.2007 - 10:16 Uhr
Was willst du denn wo ausgeben?
gruß pebosi
gruß pebosi
--
https://pebosi.net
Als Ergänzung: anderes
am 08.08.2007 - 10:18 Uhr
Als Ergänzung:
anderes (vielleicht auch typischstes) Beispiel
für das, was ich will, wäre ja der Fall,
dass ich eine vorhandene HTML-Datei habe,
die ich auch weiter verwenden will als Template
für eine Seite und in der ich nur
die Inhalte durch drupal-contents ersetzten will.
Dann müßte ich im Prinzip drupal anweisen können,
einen content an einer bestimmten Stelle
zu plazieren.
Also mit php z.B.:
...
<?php
print_content (content_7)
?>
Du findest die verfügbaren
am 08.08.2007 - 10:26 Uhr
Du findest die verfügbaren Variablen[1] in der Theme-Engine, die Du verwendest.
vg
[1] http://api.drupal.org/api/function/phptemplate_page/5
http://api.drupal.org/api/function/phptemplate_node/5
http://api.drupal.org/api/function/phptemplate_comment/5
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Crash!
am 08.08.2007 - 11:01 Uhr
Danke, das ist vom Prinzip her genau das, was
ich suche.
Allerdings bringe ich mit der Zeile
print phptemplate_node("meine_erste_eigene_story");
(wollte also eine Story über die phptemplate_node ansprechecn,
das ist wahrscheinlich verkehrt, aber wie geht es richtig?)
den XAMPP-Apache stabil zum crashen!
Gibt es eine Referenz oder Beispiele für die korrekte
Verwnedung der Funtkionen (also welche Funktion
z.B. für eine Story, welche für einen Block usw.?).
Schau doch einfach mal in
am 08.08.2007 - 11:03 Uhr
Schau doch einfach mal in eine page.tpl.php eines Themes rein.
vg
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
nur print $content
am 08.08.2007 - 11:11 Uhr
da bleibt es ja meist sehr allgemein bei Statements wie:
<?php
print $content
?>
und zusammengebaut wird $content anscheinend schon
irgendwo vorher.
FGamba wrote: [...]und
am 08.08.2007 - 11:14 Uhr
[...]und zusammengebaut wird $content anscheinend schon
irgendwo vorher.
Ja, siehe
vg
[1] http://www.drupalcenter.de/node/4576#comment-15399
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
???
am 08.08.2007 - 11:56 Uhr
Da steht z.B.:
theme('blocks', 'left');
Das funktioniert aber irgendwie nicht,
also eingefügter Code wäre bei mir:
print theme('blocks','User login');
Hingegen
print theme('page','Willkommen');
klappt.
Warum klappt 'page', und 'blocks' nicht ?
Hey, Meinolf hat mal ein
am 08.08.2007 - 12:03 Uhr
Hey, Meinolf hat mal ein sehr schönes und anschauliches Tutorial[1] zum Thema Drupal-Themeing geschrieben.
Vielleicht solltest Du das erstmal lesen.
vg
[1] http://drupal.mdwp.de/Drupal_Theme_und_CSS_Tutorial
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Ansonsten schau auch mal in
am 08.08.2007 - 12:10 Uhr
Ansonsten schau auch mal in Benutzerhandbuch: http://www.drupalcenter.de/handbuch/4217
--
bv - drupalcenter.de
Da wird ja auch nur print
am 08.08.2007 - 12:28 Uhr
Da wird ja auch nur print $content
und die theme-Funtkion verwendet.
http://api.drupal.org/api/function/theme/5
dokumentiert theme() aber
da steht leider nicht genau, was außer 'page'
als erster Parameter angegeben werden kann.
'blocks' wird auch mal als erster Parameter
verwendet, das aber bringt nicht das gewünschte Ergebnis
(das ein Block eingefügt wird, das ist ja das,
was ich eigentlich will).
Funktioniert das denn bei Euch?
Welcher Block wo angezeigt
am 08.08.2007 - 12:31 Uhr
Welcher Block wo angezeigt wird stellst Du im Adminbereich ein, nicht im Template.
vg
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Ohne s
am 08.08.2007 - 12:32 Uhr
Probiers mal mit "block"
gruß pebosi
gruß pebosi
--
https://pebosi.net
Plazieren ohne admin
am 08.08.2007 - 14:31 Uhr
Das stimmt ja so nicht: wo $content erscheint,
hängt ja auch davon ab, wo im template ich den
print-Befehl plaziere.
Ich dachte halt nur, dass ich auch auf
contents, blocks oder stories direkt
zugreifen könnte, um es halt gerade NICHT
der admin-Oberfläche zu überlassen, sondern
das zu overrulen :-)
Wie gesagt muss es in der
am 08.08.2007 - 14:33 Uhr
Wie gesagt muss es in der theme - Funktion nicht "blocks" sondern "block" heissen
gruß pebosi
gruß pebosi
--
https://pebosi.net
'block'
am 08.08.2007 - 14:35 Uhr
Probiers mal mit "block"
gruß pebosi
Funktioniert auch leider nicht.
Es gibt keine Fehlermeldung,
es wird einfach nichts zurückgegeben.
FGamba wrote:Das stimmt ja
am 08.08.2007 - 14:39 Uhr
Das stimmt ja so nicht: wo $content erscheint,
hängt ja auch davon ab, wo im template ich den
print-Befehl plaziere.
Doch das stimmt genau so!
//edit:
Die Regionen denen man Blöcke zuwisen kannst, findest Du in der Funktion http://api.drupal.org/api/function/phptemplate_regions/5
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
stimmt
am 08.08.2007 - 14:46 Uhr
Ja, das stimmt schon so.
Ich würde aber gern wissen, wie ich den HTML-Code eines Blocks
abgreifen kann. Damit ich ihn TROTZDEM woanders manuell
plazieren kann.
>>Die Regionen denen man
am 08.08.2007 - 15:05 Uhr
>>Die Regionen denen man Blöcke zuwisen kannst, findest Du in der Funktion >>http://api.drupal.org/api/function/phptemplate_regions/5
Wahrscheinlich habe ich mich sehr unklar ausgedrückt:
ich brauche nicht die Funktion, um Blöcke Regionen zuzuweisen.
Ich suche die Funktion, mit der man auf Block bzw. Contents allgemein
zugreifen und diese irgendwo manuell ausgeben kann.
Das ist im Theme-System von
am 08.08.2007 - 15:24 Uhr
Das ist im Theme-System von Drupal so nicht vorgesehen, Du kannst allerdings per module_invoke[1] auf einzelne hooks eines Moduls zugreifen und Dir so auch beliebige Blöcke zurückgeben lassen.
vg
[1] http://api.drupal.org/api/function/module_invoke/5
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Vielleicht auch mal auf Webserver probieren
am 08.08.2007 - 15:41 Uhr
M.E. machst du es auch unnötig kompliziert. In Drupal ist das alles so offen angelegt, dass du es erstmal funktionierend hinbekommen solltest, wie man es normalerweise macht. Wenn dein Xampp crasht, kann das an verschiedenen Dingen liegen. Du hast doch sicherlich einen Online-Account, lad es doch mal da hoch.
Wenn das dann alles so funktioniert und du immer noch nicht zufrieden bist, dann gibt es schon noch Schrauben, an denen man drehen kann.
Dabei sein ist alles
www.tommiblog.de
Klappt
am 08.08.2007 - 16:04 Uhr
Danke, das klappt, es kommt mal was raus.
Habe auch gerade noch ein Modul gefunden,
das anscheinend etwas Ähnliches macht:
insert_block.
Das klingt von der Beschreibung gut, ich
muß es aber noch ans Laufen kriegen.
Die Beschreibung ist super-umfangreich,
da stehen noch nicht einmal die Parameter
für den Aufruf genau drin.
Aktualisierung?
am 08.08.2007 - 17:00 Uhr
Habe jetzt auch den Weg über die eigene Region
nochmal probiert.
Dabei habe ich festgestellt, dass die Drupal
die neuen Regionen nicht übernimmt.
Muß die Datenbank dazu aktualisiert oder
die neuen Regionen sonst irgendwo noch
angemeldet werden?
/**
* Theme Regions
*/
function eigenesTheme_regions() {
return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
'eigen1' => t('eigen1'),
'eigen2' => t('eigen2')
);
}
Die Funktion muss heißen
am 08.08.2007 - 17:13 Uhr
Die Funktion muss heißen wie Dein Theme.
Und sie muß in die Datei template.php
Dann übernimmt Drupal die neuen Regionen im Adminbereich automatisch, im Deinem Template mußt Du die Regionen selbst angeben.
Also die neuen Variablen $eigen1 und $eigen2 dort in der page.tpl.php platzieren, wo sie erscheinen sollen.
vg
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Seltsam.
am 08.08.2007 - 19:44 Uhr
Habe ich gemacht.
Komischerweise ist es so:
wenn ich das Theme komplett in ein neues Verzeichnis kopiere
und nur die Funktionsmnamen in template.php ändere,
werden die eigenen Regionen in der Adminoberfläche korrekt
angezeigt.
Wenn ich sie im vorhandenen Thema ändere, dann nicht.
vielleicht eine lösung?
am 08.09.2007 - 05:00 Uhr
@FGamba
ich such auch grad sowas. vielleicht ist das hier eine lösung, ganz unten "Regions without Blocks": http://drupal.org/node/29139
oder das hier: http://www.drupalcenter.de/node/4262
grüsse vom dude