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

Funktionen verbinden (PHP-Frage)

Eingetragen von Genesis (597)
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 (9461)
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 (597)
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 (597)
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 (9461)
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 (9461)
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 (597)
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

  • 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 3 Wochen 1 Minute
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Minute
  • 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 11 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