Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

Contemplates -> Seiteninhalte/Variablen auch für Pages?

Eingetragen von Boris.B (25)
am 25.03.2009 - 13:55 Uhr in
  • Module
  • Drupal 6.x

Hallo, ich schaue mir gerade das Video-2-Brain Tutorial von Hagen Graf an. Dort wird Content verschiedener Inhaltstypen manuell ausgerichtet und gestaltet. Also node.tpl.php --> node-"Inhaltstyp".tpl.php.
Meine Frage ist, ob ich das auch mit Pages statt Inhaltstypen realisieren kann? Sprich page.tpl.php --> page-"Pagename".tpl.php...
Sodass jede Page seine eigene PHP-Datei besitzt und man sich nicht mehr mit den Editoren auseinander setzen muss.
Ich hab das auch schon ausprobiert, doch es ändert sich nichts!

‹ Mit welchen Modulen Monthview umsetzen? Fehler bei Textfeld mit FCK-Editor ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

page.tpl.php

Eingetragen von stBorchert (6003)
am 25.03.2009 - 14:07 Uhr
Boris.B schrieb

Sprich page.tpl.php --> page-"Pagename".tpl.php...
Sodass jede Page seine eigene PHP-Datei besitzt und man sich nicht mehr mit den Editoren auseinander setzen muss.

Könntest Du mal bitte näher erläutern, was Du damit meinst? Der Sinn der page.tpl.php ist er nämlich eine globale (sprich seitenübergreifende) Struktur der Homepage zu liefern.

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Übrigens fand Morten

Eingetragen von Alexander Langer (3416)
am 25.03.2009 - 14:15 Uhr

Übrigens fand Morten gestern die richtigen Worte zum Thema Contemplate, siehe meine Signatur ;)

Im Zweifelsfalle verkompliziert man das Theming mit Contemplate so dermaßen, dass man gar nicht mehr weiß wo was passiert.

--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!

webseiter.de

Suchmaschinenoptimierung (SEO) & Drupal

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich will ganz einfach jede

Eingetragen von Boris.B (25)
am 25.03.2009 - 14:17 Uhr

Ich will ganz einfach jede erstellte Page, Blogeintrag usw. manuell bearbeiten.

Zitat:

Der Sinn der page.tpl.php ist er nämlich eine globale (sprich seitenübergreifende) Struktur der Homepage zu liefern.

Genau das wollte ich nicht hören, aber dank dir!
Wie kann ich denn trotzdem Seite für Seite manuell bearbeiten, ohne das die Struktur seitenübergreifend ist?
Ist das überhaupt möglich?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Inhaltstypen

Eingetragen von stBorchert (6003)
am 25.03.2009 - 14:29 Uhr

Wenn Du Inhaltstypen anders darstellen willst, kannst Du das über die node-<type>.tpl.php machen. Siehe dazu auch Core templates and suggestions.
Die umfassende Struktur (page.tpl.php) lässt sich übrigens auch pro Inhaltstyp, Kategorie, Pfad, ... anpassen.
http://drupal.org/node/139766
http://drupal.org/node/249726
usw.

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

wohooo! Genau das suchte

Eingetragen von Boris.B (25)
am 25.03.2009 - 14:33 Uhr

wohooo! Genau das suchte ich!
Danke, Danke, Danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Verschiedene Templates pro Seite

Eingetragen von Boris.B (25)
am 26.03.2009 - 09:19 Uhr

Guten Tag nochmal,
nochmal zum Problem:
Ich möchte gerne via URL-aliase für jede erstellte Seite eine individuelle page-.tpl.php, um Design, Anordnung usw. zu bearbeiten. Das unten stehende Snippet in der template.php macht irgendwie nichts bei mir. Könnt ihr helfen?

Das Snippet:

<?php
/**
* Different page templates depending on URL aliases
*/

function phptemplate_preprocess_page(&$vars) {
  if (
module_exists('path')) {
   
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if (
$alias != $_GET['q']) {
     
$suggestions = array();
     
$template_filename = 'page';
      foreach (
explode('/', $alias) as $path_part) {
       
$template_filename = $template_filename . '-' . $path_part;
       
$suggestions[] = $template_filename;
      }
    }
     
$vars['tabs2'] = menu_secondary_local_tasks();

 
// Hook into color.module
 
if (module_exists('color')) {
   
_color_page_alter($vars2);
  }
   
$vars2['template_files'] = $suggestions;
  }
}

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dateiendung

Eingetragen von stBorchert (6003)
am 26.03.2009 - 09:41 Uhr

Moin!
Lass Dir doch mal die Variable $suggestions ausgeben. Dann siehst Du, nach welchen Templates Drupal sucht.

<?php
drupal_set_message
('<pre>'. print_r($suggestions, 1) .'</pre>');
?>

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Keine Ausgabe

Eingetragen von Boris.B (25)
am 26.03.2009 - 10:09 Uhr

Bekomme keine Ausgabe, wie kann das sein?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Debug

Eingetragen von stBorchert (6003)
am 26.03.2009 - 10:17 Uhr
Boris.B schrieb

Bekomme keine Ausgabe, wie kann das sein?

Wenn keine Ausgabe kommt, wird die Anweisung wohl auch nicht ausgeführt. Soll heissen, dass die if-Anweisung nicht greift.
Hast Du das Modul path aktiviert?
Vielleicht ist $alias == $_GET['q'].

Mach mal in verschiedenen Zeilen Ausgaben, dann siehst Du, was ausgeführt wird und wie die Inhalte der Variablen gesetzt sind.

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Re: Debug

Eingetragen von Boris.B (25)
am 26.03.2009 - 10:34 Uhr

Ja, das path Modul ist aktiviert.

drupal_set_message(''. print_r($_GET['q']) .''); --> gibt mit den Pfad der Seite, ohne Alias Namen also z.B. note/...
drupal_set_message(''. print_r($alias) .''); --> liefert nichts

  • Anmelden oder Registrieren um Kommentare zu schreiben

Alias

Eingetragen von stBorchert (6003)
am 26.03.2009 - 10:45 Uhr
Boris.B schrieb

drupal_set_message(''. print_r($alias) .''); --> liefert nichts

Dann findet Drupal zu diesem Pfad keinen Alias, kann also auch dafür keine Template-Vorschläge zusammenbauen.

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Aliase

Eingetragen von Boris.B (25)
am 26.03.2009 - 11:33 Uhr

Komisch ich hab doch allen Pfaden Aliase vergeben.
Siehe:
Aliase
Kann mir das jemand erklären?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Aliase

Eingetragen von stBorchert (6003)
am 26.03.2009 - 11:38 Uhr

Die Funktion drupal_get_path_alias() arbeitet sprachspezifisch. Soll heissen, dass ohne Angabe der korrekten Sprache kein Alias zu "node/57" gefunden werden kann (nur für node 65-69).

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab den Fehler korrigiert

Eingetragen von Boris.B (25)
am 26.03.2009 - 12:02 Uhr

Hab den Fehler korrigiert und alle Pages auf Sprachneutral gestellt, allerdings liefert
drupal_set_message(''. print_r($alias) .'');
immer noch keine Ausgabe...

  • Anmelden oder Registrieren um Kommentare zu schreiben

common.inc

Eingetragen von Boris.B (25)
am 26.03.2009 - 14:53 Uhr

Muss vielleicht etwas in der common.inc geändert werden? Da stand nämlich ne Menge drin, was rund um den Begriff "Alias" ging?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Änderungen

Eingetragen von stBorchert (6003)
am 26.03.2009 - 14:59 Uhr

Nein, bloss nichts am Drupal-Kern ändern.

Kannst Du mal die Funktion so ändern und dann die Ausgabe posten:

<?php
function phptemplate_preprocess_page(&$vars) {
  if (
module_exists('path')) {
   
drupal_set_message('<pre>'. print_r($_GET['q'], 1) .'<pre>');
   
drupal_set_message('<pre>'. print_r(str_replace('/edit','',$_GET['q']), 1) .'<pre>');

   
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
   
drupal_set_message('<pre>'. var_export($alias, 1) .'<pre>');

    if (
$alias != $_GET['q']) {
...
?>

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ausgabe | Neue Funktion Aliase

Eingetragen von Boris.B (25)
am 26.03.2009 - 15:13 Uhr

Das spuckt er nun aus:

  • Anmelden oder Registrieren um Kommentare zu schreiben

Startseite

Eingetragen von stBorchert (6003)
am 26.03.2009 - 15:20 Uhr

Öhm, Du bist auf der Startseite? Also /node? Da kann das nicht auch nicht funktionieren. Nur auf node/xxx.

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es funzt!

Eingetragen von Boris.B (25)
am 26.03.2009 - 15:25 Uhr

Es funktioniert!
P.S. ich war auf einer Unterseite, habe aber vergessen zu refreshen, als ich den Screenshot gemacht hab.
So jetzt versuche ich mal einzelne Templates zu schreiben!

Schau oben auf den Screenshot, der wurde nun aktualisiert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hb gerade nochmals

Eingetragen von Boris.B (25)
am 26.03.2009 - 15:37 Uhr

Ich hb gerade nochmals versucht

<?php
drupal_set_message
('<pre>'. print_r($suggestions, 1) .'</pre>');
?>

anzeigen zu lassen, doch ich bekomme keine Ausgabe.

Wie gehts nun weiter?

  • Anmelden oder Registrieren um Kommentare zu schreiben

debug

Eingetragen von stBorchert (6003)
am 26.03.2009 - 15:43 Uhr

Weiter debuggen.

<?php
/**
* Different page templates depending on URL aliases
*/
function phptemplate_preprocess_page(&$vars) {
  if (
module_exists('path')) {
   
$alias = drupal_get_path_alias(str_replace('/edit', '', $_GET['q']));
   
drupal_set_message('<pre>'. var_export(($alias != $_GET['q']), 1) .'</pre>');
    if (
$alias != $_GET['q']) {
     
$suggestions = array();
     
$template_filename = 'page';
      foreach (
explode('/', $alias) as $path_part) {
       
drupal_set_message('<pre>'. var_export($path_part, 1) .'</pre>');
       
$template_filename = $template_filename . '-' . $path_part;
       
$suggestions[] = $template_filename;
      }
     
$vars2['template_files'] = $suggestions;
    }
  }
 
 
$vars['tabs2'] = menu_secondary_local_tasks();
 
// Hook into color.module
 
if (module_exists('color')) {
   
_color_page_alter($vars2);
  }
}
?>

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt bekomme ich folgende

Eingetragen von Boris.B (25)
am 27.03.2009 - 10:02 Uhr

Jetzt bekomme ich folgende Ausgabe:

Suggestions klappt nun auch.
Also hab ich doch nun theoretisch die Möglichkeit eine page-testseite-zum-editieren.tpl.php zu schreiben.
Verstehe ich das richtig?

  • Anmelden oder Registrieren um Kommentare zu schreiben

template

Eingetragen von stBorchert (6003)
am 27.03.2009 - 10:13 Uhr
Boris.B schrieb

Also hab ich doch nun theoretisch die Möglichkeit eine page-testseite-zum-editieren.tpl.php zu schreiben.
Verstehe ich das richtig?

Jup.

Btw: schickes Theme

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

page-testseite-zum-editieren.tpl.php geschrieben, doch...

Eingetragen von Boris.B (25)
am 27.03.2009 - 10:23 Uhr

wird nichts verändertes ausgegeben.

Ich könnte doch nun einfach den Klassiker "Hallo Welt" einfügen, allerdings passiert nichts.
Hast du eine Idee, ratschlag?

Btw. Das Theme ist erstmal obligatorisch, mir gefällts :D

  • Anmelden oder Registrieren um Kommentare zu schreiben

theme registry

Eingetragen von stBorchert (6003)
am 27.03.2009 - 10:31 Uhr

Wie auch in Overriding themable output beschrieben, solltest Du nach dem Anlegen eines Templates die ThemeRegistry leeren. Sonst kennt Drupal das Template einfach nicht.

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

re: theme registry

Eingetragen von Boris.B (25)
am 27.03.2009 - 10:36 Uhr

Dank dir dafür! Das wird sicherlich weiterhelfen.
Ich melde mich dann nochmal!

THX4YH!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Cool, endlich klappt's! Auch

Eingetragen von Boris.B (25)
am 30.03.2009 - 08:39 Uhr

Cool, endlich klappt's!

Auch wenn ich die Seiten mit ihren Node-Nr. ansprechen muss, was mir aber total egal ist.

Vielen Dank nochmal für die Hilfe!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Topic
  • Fehlermeldung nach Update auf PHP 7.4 - array offset on value of type null in geocoder_widget...
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • BEF Exposed Filter collapse funktioniert nicht mit Bootstrap Theme
  • Welche Tokens werden bei Images im Feld Dateiverzeichnis erlaubt
  • content und media-files von drupal8 nach drupal9 migrieren
  • Notificationsnicht immer und gesammelt bei Update
  • Meldung zu Token im Statusbericht
  • Fehlermeldung: Deprecated function
  • Warning: call_user_func() expects parameter 1 to be a valid callback, class 'Drupal\node\Entity\Node' does not have a method 'ge
  • Versenden von Anfragen per Webform
  • Goodbye Online Drupal Meetup Germany - Hello Drupal DACH Online Meetup!
Weiter

Neue Kommentare

  • Hallo Jenna, ich habe das
    vor 17 Stunden 56 Minuten
  • Ich hatte gehofft, bis auf
    vor 18 Stunden 7 Minuten
  • Wenn der Provider keine freie
    vor 18 Stunden 19 Minuten
  • Problemeingrenzung
    vor 19 Stunden 34 Minuten
  • Ich habe es bei einigen
    vor 1 Tag 21 Stunden
  • Self-referencing
    vor 3 Tagen 11 Stunden
  • settings.php
    vor 3 Tagen 12 Stunden
  • Kulturmensch schrieb Prima
    vor 3 Tagen 13 Stunden
  • Metatag
    vor 3 Tagen 13 Stunden
  • Links
    vor 3 Tagen 12 Stunden

Statistik

Beiträge im Forum: 245985
Registrierte User: 18832

Neue User:

  • KENIRY2024
  • finnster
  • Damian1802

» Alle User anzeigen

User nach Punkten sortiert:
wla9012
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3829
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 7 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association