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

[gelöst] Eigene page.tpl.php für node-inhaltstyp (content-type) per .modul

Eingetragen von karl1120 (97)
am 17.02.2010 - 13:48 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Ich habe ein Gallerie modul erstellt mit dem kann man Bilder uploaden und die erscheinen dann in einer flash gallerie.

Jetzt möchte ich ein fullscreen node implementieren. Das heist wenn der content-type flashgallery aufgerufen wird ändert sich die page.tpl.php ($left, $right , usw) werden entfernt es wird auf der
page-simpleplugin.tpl.php nur noch der content->body ausgegeben also die swf datei.

Bis jetzt bin ich so vorgegangen :

<?php

  
function simpleplugin_preprocess_page(&$variables) {
     foreach (
$variables['template_files'] as $file) {
    
$template_files[] = $file;
     if (
$file == 'page-node') {
       
$template_files[] = 'page-'. $variables['node']->type;  
     }
    }
  
$variables['template_files'] = $template_files;
}
?>

Nach dem ich diesen code in mein Modul implementiert habe zeigt mir
das devel Modul folgendes an:

template file aufgerufen
page.tpl.php

welches file benutzt wird :
themes/garland/page.tpl.php

mögliche template files:
page-node-78.tpl.php < page-simpleplugin.tpl.php < page-node.tpl.php

Anhand der möglichen template files habe ich dann die page.tpl.php in meine module ordner kopiert und zu page-simpleplugin.tpl.php umbenannt, dann den cache geleert. Aber drupal ruft nach wie vor die Datei themes/garland/page.tpl.php auf.

Wenn ich die datei page-simpleplugin.tpl.php in den ordner themes/garland kopiere funktioniert es drupal ruft die seite page-simpleplugin.tpl.php auf .

Wie kann ich drupal beibringen das die Datei page-simpleplugin.tpl.php in meinem sites/modules/mymodul/page-simpleplugin.tpl.php liegt?

‹ Menü per .install Datei erstellen [gelöst] Inkrementelle Suche in Form (Suggestion) ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier mal, ohne

Eingetragen von derjochenmeyer@... (591)
am 26.02.2010 - 14:52 Uhr

Probier mal, ohne Garantie:

/**
* Implementation of hook_theme_registry_alter().
*/
function simpleplugin_theme_registry_alter(&$theme_registry) {
  array_unshift($theme_registry['page']['theme paths'], drupal_get_path('module', 'simpleplugin'));
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_theme_registry_alter()

Eingetragen von karl1120 (97)
am 17.02.2010 - 16:01 Uhr

hatte leider nicht den gehoften erfolg

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich würde das in der

Eingetragen von wla (9461)
am 17.02.2010 - 16:15 Uhr

Ich würde das in der page.tpl.php Datei regeln. Du bekommst da doch den Node über die Node-ID geliefert. Dann kannst Du auch den Typ abfragen. Danach über ein if- oder switch-Statement aufspalten in normalen Ablauf oder "Special Handling".
Das geht sicher.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modul der community zur verfügung stellen

Eingetragen von karl1120 (97)
am 17.02.2010 - 18:05 Uhr

Ich würde das modul gerne später mal der community zur verfügung stellen, aber wenn man dann erst mal selbst ein bischen code hinzufügen muss oder eine datei dann ist es unbrauchbar.

Inzwischen hab ich mal ein wenig mit der function hook_theme() gespielt hatte aber auch kein erfolg.

folgenden code habe ich hinzugefügt:

<?php

/**
*  Implements hook_theme().
*/
function simpleplugin_theme($existing, $type, $theme, $path) {
  return array(
   
'page_simpleplugin' => array (
   
'arguments' => array('type' => NULL),
   
'template' => 'page-simpleplugin',
    ),
  );
}

?>

aber leider auch kein erfolg :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_theme_registry_alter

Eingetragen von derjochenmeyer@... (591)
am 26.02.2010 - 14:52 Uhr

Hm, komisch... hook_theme_registry_alter() sollte aber auf jeden Fall der richtige Ansatz sein.

Schau mal hier, das müsste die Lösung enthalten: http://11heavens.com/theming-Drupal-6-from-the-module-layer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen dank derjochenmeyer@

Eingetragen von karl1120 (97)
am 18.02.2010 - 10:16 Uhr

Vielen dank derjochenmeyer@ mit dem link konnte ich mein problem löse. :)

für alle die sich auch für das problem interessieren können meinen code ansehen:

<?php




 
/**
   *
   * Implementation of hook_node_info().
   */
 
function simpleplugin_node_info() {
     
      return array(

         
'simpleplugin_gallery' => array(
           
'name' => t('Simpleplugin Gallery'), // Required.
           
'module' => 'simpleplugin_gallery',  // Required.
           
'description' => t('Create a Fullscreen SWF Gallery'), // Required.
           
'has_title' => TRUE,
           
'title_label' => t('SWF Gallery Name'),
           
'has_body' => TRUE,
                     
'body_label' => t('Text'),
           
'locked' => TRUE
         
)
      );
  }
 
  function
simpleplugin_gallery_form( $node ) {
     
// Title.
     
$type = node_get_types('type', $node);
       
$form['title'] = array(
           
'#type' => 'textfield',
           
'#title' => check_plain($type->title_label),
           
'#required' => TRUE,
           
'#default_value' => $node->title,
           
'#weight' => -10,
           
'#maxlength' => 255,
        );
       
       
$form['body_filter']['body'] = array(
           
'#type' => 'textarea',
           
'#title' => check_plain($type->body_label),
           
'#default_value' => $node->body,
           
'#rows' => 6,
                       
'#weight' => -9,
           
'#required' => TRUE,
        );

      return
$form;
  }


//preprocess

 
function simpleplugin_preprocess_page(&$variables) {
 
// If this is a node page (not a list of nodes page) and
  // the node is shown in 'view' mode rather than 'edit' or whatever.
 
if (isset($variables['node']) && (arg(2) === NULL)) {
   
// If the content type of that one node is 'CONTENT_TYPE_NAME'.
   
if ($variables['node']->type == 'simpleplugin_gallery') {
     
$variables['template_file'] = 'page-simpleplugin_gallery';
    }
  }
}

/*
* Implementing of hook_theme_registry_alter
*/
function simpleplugin_theme_registry_alter(&$theme_registry) {
 
$theme_hook = 'page'; // my hook name
  // Get the path to this module
 
$modulepath = drupal_get_path('module', 'simpleplugin');
 
// Add the module path on top in the array of paths
 
array_unshift($theme_registry[$theme_hook]['theme paths'], $modulepath);
 
// dsm($theme_registry[$theme_hook]['theme paths']);
}


?>

geholfen hat mir dieser link von derjochenmeyer@ :
falls die tpl.php datei in deinem themes ordner liegt
hook_theme_registry_alter

Noch interresante links zum thema :
screencast:
Different 5.x page templates depending on node type
hook_theme and tpl.php files: registering them with drupal, and passing variables

Theming Modules in Drupal 6

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 3 Tagen
  • Hey danke
    vor 1 Woche 4 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 5 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 6 Tagen
  • In der entsprechenden View
    vor 2 Wochen 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 6 Tagen
  • gelöst
    vor 5 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 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