Startseite
  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Off Topic ›

Funktionen verbinden (PHP-Frage)

Eingetragen von Genesis (397)
am 17.12.2009 - 10:46 Uhr in
  • Off Topic
  • Drupal 5.x

Hallo zusammen,

ich schreibe dieses Thema extra in OffTopic da es eigentlich nicht hierher gehört, ich hoffe aber trotzdem das mir jemand helfen kann. Ich kenne mich mit PHP nur sehr rudimentär aus und stehe gerade vor einem wahrscheinlich ganz kleinem Problem für jemanden der sich auskennt.

Ich will einer (custom) Node in Drupal eine Region zuweisen. Das funktioniert auch Problemlos, allerdings gibt es schon eine Funktion dieser Art und die beiden kommen sich ins Gehege. Ich müsste die beiden lediglich verbinden. Eventuell kann mir da ja jemand helfen, denn für sich genommen funktionieren die beiden Problemlos.

Erstere ist:

<?php

/**
* Override or insert PHPTemplate variables into the templates.
*/
function _phptemplate_variables($hook, $vars) {
  if (
$hook == 'page') {

    if (
$secondary = menu_secondary_local_tasks()) {
     
$output = '<span class="clear"></span>';
     
$output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
     
$vars['tabs2'] = $output;
    }

// Hook into color.module
   
if (module_exists('color')) {
     
_color_page_alter($vars);
    }

    if (
arg(0) == 'user' && is_numeric(arg(1)) && arg(2) == 'bio') {
     
$vars['template_files'][] = 'page-bio-edit';
    }
    return
$vars;
  }

  return array();
}

?>

Die welche da mit eingearbeitet werden muss ist jene:

<?php
function _phptemplate_variables($hook, $variables) {
 
// Load the node region only if we're not in a teaser view.
 
if ($hook == 'node' && !$vars['teaser']) {
   
// Load region content assigned via blocks.
   
foreach (array('galerie1') as $region) {
     
$variables[$region] = theme('blocks', $region);
    }
  }
  return
$variables;
}
?>

Ich bedanke mich vielmals im Voraus und danke für die Mühen.

Beste Grüße vom,

Genesis

‹ Ich hab' ja schon viel gesehen, aber DAS ist eine Premiere Schöne Drupalseite aus L`don ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ganz einfach: <?php /***

Eingetragen von wla (3809)
am 17.12.2009 - 11:15 Uhr

Ganz einfach:

<?php

/**
* Override or insert PHPTemplate variables into the templates.
*/
function _phptemplate_variables($hook, $vars) {
  if (
$hook == 'page') {

    if (
$secondary = menu_secondary_local_tasks()) {
     
$output = '<span class="clear"></span>';
     
$output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
     
$vars['tabs2'] = $output;
    }

// Hook into color.module
   
if (module_exists('color')) {
     
_color_page_alter($vars);
    }

    if (
arg(0) == 'user' && is_numeric(arg(1)) && arg(2) == 'bio') {
     
$vars['template_files'][] = 'page-bio-edit';
    }
    return
$vars;
  }

 
// Load the node region only if we're not in a teaser view.
 
if ($hook == 'node' && !$vars['teaser']) {
   
// Load region content assigned via blocks.
   
foreach (array('galerie1') as $region) {
     
$variables[$region] = theme('blocks', $region);
    }
    return
$variables;
  }

  return array();
}

?>

Den Code in die bestehende Routine einfügen, aber der Ausdruck "return $variables;" muß mit in die IF-Abfrage, da zum Schluß, wenn keine der IF-Bedingungen zieht, ein leeres Array zurückgegeben werden soll.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin dir recht herzlich

Eingetragen von Genesis (397)
am 17.12.2009 - 11:33 Uhr

Ich bin dir recht herzlich dankbar Werner! Hat wunderbar funktioniert.

In Anbetracht das es bald soweit ist schon mal eine ruhige Zeit und ein paar schöne Tage!

Beste Grüße vom,

Lars

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es ist mir ja peinlich, aber

Eingetragen von Genesis (397)
am 19.12.2009 - 13:32 Uhr

Es ist mir ja peinlich, aber ich bräuchte dann doch noch mal Hilfe. Ich habe es zwar selbst versucht, bekomme aber nur den White Screen of ultimate death and evil... Ich müsste in die obige Funktion noch eine weitere einbauen und verzweifle daran das richtig zu bewerkstelligen.

Das ist wie gehabt die Ausgangsfunktion:

<?php
/**
* Override or insert PHPTemplate variables into the templates.
*/
function _phptemplate_variables($hook, $vars) {
  if (
$hook == 'page') {

    if (
$secondary = menu_secondary_local_tasks()) {
     
$output = '<span class="clear"></span>';
     
$output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
     
$vars['tabs2'] = $output;
    }

// Hook into color.module
   
if (module_exists('color')) {
     
_color_page_alter($vars);
    }

    if (
arg(0) == 'user' && is_numeric(arg(1)) && arg(2) == 'bio') {
     
$vars['template_files'][] = 'page-bio-edit';
    }
    return
$vars;
  }

 
// Load the node region only if we're not in a teaser view.
 
if ($hook == 'node' && !$vars['teaser']) {
   
// Load region content assigned via blocks.
   
foreach (array('galerie1') as $region) {
     
$variables[$region] = theme('blocks', $region);
    }
    return
$variables;
  }

  return array();
}
?>

Dort bräuchte ich nun wiederum diese Funktion eingebaut:

<?php
/**
* Override or insert PHPTemplate variables into the templates.
*/
function _phptemplate_variables($hook, $vars) {
  if (
$hook == 'page') {

   
// This first part was already in the PHPTemplate engine code and gives page.tpl.php variances based on the args.
   
$i = 0;
   
$suggestion = 'page';
   
$suggestions = array($suggestion);
    while (
$arg = arg($i++)) {
     
$suggestions[] = $suggestion . '-' . $arg;
      if (!
is_numeric($arg)) {
       
$suggestion .= '-' . $arg;
      }
    }
   
// This if block was added to give a page-node-node_type.tpl.php that has precedence over the args.
   
if (arg(0) == 'node' && is_numeric(arg(1)) && isset($vars['node'])) {
      if (isset(
$vars['node']->type)) {
       
$suggestions[] = $suggestion . '-' . $vars['node']->type;
      }
    }
   
// This also from PHPTemplate to make sure the front page gets its own template.
   
if (drupal_is_front_page()) {
     
$suggestions[] = 'page-front';
    }
     
   
$vars['template_files'] = $suggestions;
     
    return
$vars;
  }
  return array();
}
?>

Einzeln funktionieren beide problemlos, nur verbunden bekomme ich sie nicht.

Vielen Dank erneut an jeden der sich dafür die Zeit nimmt.

Beste Grüße vom,

Genesis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe ich mir das jetzt

Eingetragen von wla (3809)
am 19.12.2009 - 15:45 Uhr

Ich habe ich mir das jetzt mal in Ruhe angesehen, aber das gefällt mir micht. Die bisherigen Teile sind klar über IF-Bedingungen abgetrennt, aber die neuen Funktionsteile nicht. Der alte und der neue Teil passen ohne weitere Information nicht zusammen, tut mir leid.
Der Zusatz muß ja in den ersten Teil eingebaut werden "if (hook == page) {" und wenn man das einfach so reinklebt, wird der Code immer zusätzlich ausgeführt und vars erst danach zurückgegeben, aber immer vom neuen Teil modifiziert. Da weiß ich nicht, ob das so Sinn macht.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich stelle jetzt doch mal

Eingetragen von wla (3809)
am 19.12.2009 - 16:01 Uhr

Ich stelle jetzt doch mal meinen Versuch rein, aber ohne jede Garantie.

Beste Grüße
Werner

<?php
/**
* Override or insert PHPTemplate variables into the templates.
*/
function _phptemplate_variables($hook, $vars) {
  if (
$hook == 'page') {

    if (
$secondary = menu_secondary_local_tasks()) {
     
$output = '<span class="clear"></span>';
     
$output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
     
$vars['tabs2'] = $output;
    }

// Hook into color.module
   
if (module_exists('color')) {
     
_color_page_alter($vars);
    }

    if (
arg(0) == 'user' && is_numeric(arg(1)) && arg(2) == 'bio') {
     
$vars['template_files'][] = 'page-bio-edit';
    }

// This first part was already in the PHPTemplate engine code and gives page.tpl.php variances based on the args.
   
$i = 0;
   
$suggestion = 'page';
   
$suggestions = array($suggestion);
    while (
$arg = arg($i++)) {
     
$suggestions[] = $suggestion . '-' . $arg;
      if (!
is_numeric($arg)) {
       
$suggestion .= '-' . $arg;
      }
    }
   
// This if block was added to give a page-node-node_type.tpl.php that has precedence over the args.
   
if (arg(0) == 'node' && is_numeric(arg(1)) && isset($vars['node'])) {
      if (isset(
$vars['node']->type)) {
       
$suggestions[] = $suggestion . '-' . $vars['node']->type;
      }
    }
   
// This also from PHPTemplate to make sure the front page gets its own template.
   
if (drupal_is_front_page()) {
     
$suggestions[] = 'page-front';
    }
    
   
$vars['template_files'] = $suggestions;

    return
$vars;
  }


// Load the node region only if we're not in a teaser view.
 
if ($hook == 'node' && !$vars['teaser']) {
   
// Load region content assigned via blocks.
   
foreach (array('galerie1') as $region) {
     
$variables[$region] = theme('blocks', $region);
    }
    return
$variables;
  }

  return array();
    
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Werner, so weit ich

Eingetragen von Genesis (397)
am 19.12.2009 - 16:15 Uhr

Hallo Werner,

so weit ich das beurteilen kann hat das funktioniert. Sowohl die regionen in den Nodes werden angezeigt, als auch die Page-Templates nach Content Type.

Bin dir wirklich mehr als dankbar für deine Mühen. War noch eine ganz große Hürde beim derzeitigen Projekt.

Vielen lieben Dank und eine schönes Wochenende noch,

Lars

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Fataler Fehler nach update auf Drupal 6.24 wg fehlender Funktion in image.inc
  • meine Profilbesucher anzeigen?
  • Computed_Field Node Objekt bzw. nid?
  • URLs: Groß- und Kleinschreibung
  • Rules und Organic Group
  • [erledigt] drupal 7 - read more ausblenden
  • Modul für Absatznummern / Randnummern
  • Path-Based Metatags - wofür sind die gut?
  • Views Field Language (Spracherkennung der Felder) funktiniert nicht
  • [gelöst] Danland: Standard-Startseite formatieren
  • Aggregator Modul lässt sich nicht konfigurieren
  • Views Accordion - Header Elemente nebeneinander
Weiter

Neue Kommentare

  • Problem gelöst
    vor 1 Stunde 24 Minuten
  • ich könnte mir vorstellen
    vor 1 Stunde 25 Minuten
  • Ja und wie greife ich da auf
    vor 1 Stunde 34 Minuten
  • Unser Server kann das. Ich
    vor 1 Stunde 48 Minuten
  • Modul "User Relationships"
    vor 1 Stunde 48 Minuten
  • Ist der Host ein Windows-Host?
    vor 1 Stunde 54 Minuten
  • Du läßt Dir in der Zeile die
    vor 2 Stunden 48 Sekunden
  • Patch aus Issue Queue
    vor 2 Stunden 22 Minuten
  • "Read more"-Link modifizieren
    vor 2 Stunden 26 Minuten
  • CSS mit body-Tag-Klasse präzisieren
    vor 3 Stunden 20 Minuten

Statistik

Beiträge im Forum: 173993
Registrierte User: 15484

Neue User:

  • Spearoth
  • bwvebb
  • drupal4normi

» Alle User anzeigen

User nach Punkten sortiert:
stBorchert5516
quiptime4713
Tobias Bähr3874
wla3809
md3777
bv3700
Thoor3678
Alexander Langer3282
dereine2635
Exterior2571
» User nach Punkten
Zur Zeit sind 6 User und 42 Gäste online.

Benutzer online

  • Spearoth
  • matrex
  • Antonio
  • Miguelito
  • Carsten Logemann
  • StevenB

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Ü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
  • Bücherecke

Quicklinks III

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

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed Drupal Podcast
  • 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