Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

[gelöst] Block-Anzeige per PHP steuern

Eingetragen von mchott (63)
am 24.08.2010 - 13:50 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo,

ich will die Anzeige der Blöcke per PHP steuern, weil ich diese abhängig von Taxonomy und Pfad steuern möchte. Zudem könnte ich mir später vorstellen, einen Block per NodeField oder Keyword anzusteuern.

Mein bisheriger Quellcode sieht wie folgt aus (die vielen echo sind derzeit nur zu Fehlerfindung):

<?php
  $return
= FALSE; // Ausgehend davon, dass der Block NICHT angezeigt wird, setze ich den Wert auf FALSE
 
echo "Ergebnis: ".$return."<br />";
 
// Komma getrennte Liste mit TID´s
 
$desired_terms = array(1, 2, 3);
 
// Pfade, die durch Komme getrennt sind und als Wildcard fungiert der Stern (nur am Ende eines Pfades)
 
$desired_paths = array('startseite', 'portfolio/uebersicht', 'info/*');

 
// auf TID prüfen
 
if ( arg(0) == 'node' and is_numeric(arg(1)) )
    {
   
// geprüft wird, ob es sich um einen NODE handelt
   
   
$node = node_load(arg(1));
   
    foreach (
$node->taxonomy as $term)
    {
      if (
in_array($term->tid, $desired_terms))
      {
       
$return = TRUE; // Der Wert wird auf TRUE gesetzt, wenn etwas gefunden wurde
       
echo "per TID: ".$term->tid."<br />";
      }
    }
  }

 
// auf PFAD prüfen
  // Ermitteln des aktuellen Pfads
 
if ($_GET['q'])
  {
   
$my_drupal_path = $_GET['q'];
  }
  else
  {
   
$my_drupal_path = substr($_SERVER['REQUEST_URI'], 1);
  }

 
// Hier wird der Pfad in ein clean-Pfad umgewandelt, wenn es einen gibt (37-->start)
 
$my_path_alias = drupal_get_path_alias($my_drupal_path);

  echo
$my_path_alias."<br />";

 
Wenn der Pfad mit einem Element im Array übereinstimmt, dass wird TRUE ausgegeben
 
if (in_array($my_path_alias, $desired_paths))
  {
   
$return = TRUE;
    echo
"per Pfad: ".$desired_paths."<br />";
  }
 
 
// auf PFAD mit Wildcard prüfen
 
foreach($desired_paths as $path)
  {
   
// prüfen, ob es ein Pfad mit Wildcard ist
   
if(stristr(substr($path, strlen($path)-1 , strlen($path)),"*"))
    {
      echo
"Pfad mit Wildcard <br />";
      echo
"Pfad mit Wildcard: ".$path."<br />";
     
$path = substr($path, 0, strlen($path)-1); // Die Wildcard wird abgeschnitten
     
echo "Pfad ohne Wildcard: ".$path."<br />";

     
$my_path = substr($my_path_alias, 0 , strlen($path) );
      echo
"MyPfad ohne Rest: ".$my_path."<br />";

      if(
stristr($my_path,$path))
      {
       
$return = TRUE;
        echo
"per Pfad (Wildcard): ".$desired_paths."<br />";
      }
    }
  }

  echo
"Ergebnis: ".$return."<br />";
 
// Ergebnis wird ausgegeben
 
return $return;
?>

DAS PROBLEM: Wenn ich den Code in eine Node eingebe, dann funktioniert er und gibt auch das korrekte Ergebnis aus. Nicht so, wenn ich den Code als Filter für einen Block angebe (ja ich habe PHP als Format gewählt). Dann wird er komischer Weise auch als TRUE aufgefasst (Block wird angezeigt), wenn er nicht TRUE ausgibt. Ist der Code falsch oder habe ich was übersehen?

‹ Kommentare werden nicht angezeigt Wenn Mobile Browser dann Weiterleitung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich würde das Ganze mit dem

Eingetragen von Sense (1559)
am 24.08.2010 - 14:09 Uhr

Ich würde das Ganze mit dem Devel Modul debuggen und nicht die ganzen Echos verwenden, dazu kannst Du die Funktion dpm($variable) aus dem Devel Modul besser benutzen.
Vielleicht löst sich hiermit der Fehler schon schneller auf.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Lösung

Eingetragen von mchott (63)
am 25.08.2010 - 13:01 Uhr

Die Lösung für das Problem ist so einfach wie ärgerlich:

Also der Skript arbeitet fehlerfrei und kann fast bedenkenlos genutzt werden...ABER
Der Skript wartet nicht auf ein Rückgabewert TRUE, sondern auf irgend etwas.

statt
return TRUE;
kann auch
echo "X";
oder was auch immer stehen

Wenn man also alle Ausgaben raus nimmt, dann funktioniert der Skript. So wie er da oben steht, erzeugt er einen Fehler.

Viel Erfolg beim Verwenden des Skripts (ohne echo).

  • 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 2 Wochen 3 Tagen
  • Hey danke
    vor 2 Wochen 3 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 4 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 6 Tagen
  • In der entsprechenden View
    vor 3 Wochen 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 6 Tagen
  • gelöst
    vor 6 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20459

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» 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 26 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