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

Blocksichtbarkeit in Abhängigkeit von Taxonomievariable (neuer Versuch)

Eingetragen von draeck (93)
am 17.11.2008 - 21:35 Uhr in
  • Module
  • Drupal 5.x oder neuer

Hallo,

ich versuche nochmal, mein problem zu erläutern.

1. Ich habe Taxonomie
2. Ich habe einen Block
3. Dieser Block soll nur angezeigt werden, wenn in $node->taxonomy bei vid der Wert 3 (z.B) drin steht

Nun habe ich den Block gebaut und bei Anzeigeoptionen gewählt
x nur anzeigen, wenn der folgende Code TRUE zurückgibt

der "folgende Code" sieht so aus.... nun ja, erster Versuch.... sorry! :-)

foreach($node->taxonomy as $el1) {
        if($el1->vid == '3'){
         return TRUE;
        }
        else return FALSE;
       }

Warum geht das nicht!? Heul?

Ich dachte (naja...), dass die foreach Schleife mir die einzelnen Taxonymyarrayobjekte liefert und dann eben kann ich von denen vid testen.....

Hilfe möglich?
Danke und Gruß
Dirk

‹ Und täglich grüßt das Image-Import murmeltier :'( Beitrag melden- Module ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Was ist vid und tid

Eingetragen von quiptime (4972)
am 18.11.2008 - 01:26 Uhr

Du bringst da Einiges durcheinander.

Ein Term hat eine tid - die Term ID
Ein Vocabulary hat eine vid - die Vocabulary ID

Lasse dir mit

<?php
print '<pre>';
print_r($node->taxonomy);
print
'</pre>';
?>

anzeigen. Danach weisst Du etwas genauer was in der foreach Schleife passieren muss um zu einem gewuenschten TRUE zu kommen.

$node->taxonomy

Um zu Ergebnis zu kommen sollte folgendes funktionieren:

<?php
if (count($node->taxonomy) > 0) {
  foreach (
$node->taxonomy as $tid => $term) {
    if (
$node->taxonomy[$tid]->vid == 3) {
      return
TRUE;
    }
  }
}
return
FALSE;
?>

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok, eine dummy-nachfrage

Eingetragen von draeck (93)
am 18.11.2008 - 20:32 Uhr

Hallo Quiptime,

danke erstmal.

Was soll => $term bezwecken?
Warum gibt $node->taxonomy nur ne Zahl zurück und nicht das ganze Objekt (nennen wirs mal taxonomy[n])?
Deine Schleife geht im Übrigen leider nicht.
Der Block ist nun immer weg und kommt niemals zum Vorschein....

...bitte um Erhellung

Danke
Dirk

--++--
draeck
++--++

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast Du print_r($node) und print_r($node->taxonomy) gemacht?

Eingetragen von quiptime (4972)
am 18.11.2008 - 20:50 Uhr
Zitat:

Warum gibt $node->taxonomy nur ne Zahl zurück und nicht das ganze Objekt

Ganz einfach: Weil das Nodeobject so aufgebaut ist.

(In spaeteren Versionen von Drupal, D7, wird mit grosser Wahrscheinlichkeit das Nodeobject etwas anders aufgebaut sein. Das ist der Grund sich mit print_r($node) das Nodeobject anzusehen wenn man seine typische Struktur in der jeweiligen Drupalversion nicht kennt.)

  1. Hast Du mal print_r($node) gemacht?
  2. Hast Du mal print_r($node->taxonomy) gemacht?

Das habe ich im Zusammenhang mit meinem Post gemacht. Deswegen weiss ich das der Code funktioniert.

Das Nodeobject

Die Sache ist allerdings die, das an der Stelle an der man $node->taxonomy verwendet das Nodeobject auch verfuegbar sein muss. Im Block-Kontext ist dies nicht der Fall. Also muss man das Nodeobject erst laden um $node->taxonomy verwenden zu koennen. Das geht beispielsweise dann wenn eine Node angezeigt wird ueber die URL.

Typischer Weise hat bei einer Nodeanzeige die URL die Form /node/x. X ist die Node ID. Mit ihr kann man das Nodeobject laden:

<?php
if (arg(0) == 'node' && is_numeric(arg(1)))
 
$node = node_load(arg(1));
}
?>

Insgesamt wuerde der Code zur Steuereung der Blockanzeige bei Anzeige einer Node so aussehen:

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
 
$node = node_load(arg(1));
 
  if (
count($node->taxonomy) > 0) {
    foreach (
$node->taxonomy as $tid => $term) {
      if (
$node->taxonomy[$tid]->vid == 3) {
        return
TRUE;
      }
    }
  }
  return
FALSE;
 
}
?>

Die Abfrage nach der URL mit if (arg(0) == 'node' && is_numeric(arg(1))) verhindert zum Einen das es Fehler gibt wenn keine Node angezeigt wird und stellt zum Anderen sicher das Der Funktionscode nur ausgefuehrt wird wenn eine Node angezeigt wird.

Die Blocksichtbarkeitsteuerung wuerde mit meinem Code also nur bei der Anzeige einzelner Nodes funktionieren.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

nochmal

Eingetragen von draeck (93)
am 18.11.2008 - 20:57 Uhr

Also: ich habe meinen ursprünglichen Weg mal getestet in der node.tpl testweise

<?php
foreach($node->taxonomy as $el) {
if(
$el->vid==3)print '1';
else print
'0';
}
?>

Das arbeitet genau so wie es soll. Es gibt beim vocabulary 3 eine 1 zurück, bei allen anderen eine 0.
Warum soll das also nicht funktionieren, wenn ich anstelle der printbefehle return TRUE setze?

--++--
draeck
++--++

  • Anmelden oder Registrieren um Kommentare zu schreiben

hey super

Eingetragen von draeck (93)
am 18.11.2008 - 21:00 Uhr

uups

da haben sich deine antwort und mein nachsatz überschnitten....

ok, ich guck mal und melde mich wieder, falls ich es nicht hinkriege...

danke und gruß
dirk

--++--
draeck
++--++

  • Anmelden oder Registrieren um Kommentare zu schreiben

mh

Eingetragen von draeck (93)
am 18.11.2008 - 21:13 Uhr

DEine Erklärungen sind bestens! Danke.

Nur funktioniert der Code nicht.
Der Block wird nie angezeigt..... mal sehen... jedenfalls war die Sache mit dem Node-Laden sehr hilfreich.
Zwei Bemerkungen weiter oben hatte ich ja meine Version nochmal getestet, die ging auch (im node selbst natürlich).
Irgendwie habe ich das Gefühl, das im Argument Handling Code immer False rauskommt!?

...

--++--
draeck
++--++

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modul "Relevant Content"

Eingetragen von Frank Ralf (2135)
am 22.11.2008 - 00:30 Uhr

Hallo Dirk,

hast du dir schon mal das Modul Relevant Content angeschaut (http://drupalmodules.com/module/relevant-content)? Das scheint mir die gewünschte Funktion zu bieten.

Viel Erfolg!
Frank

XING

Gruß
Frank

Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • entity print - pdf template Seitennummern
  • Webform - kleiner Einleitungstext vor dem Formular.
  • migrate: legacy-db-key in settings.php, wie?
  • Konto löschen, wie? (Drupalorg/Drupalcenter)
  • Wie 'saubere' Dateinamen bei Upload erzwingen?
  • Modul lässt Website anstürzen
  • Showroom
  • rename admin paths - Probleme mit Modul - Alterantive?
  • Probleme mit Installation voa COMPOSER
  • Drupal- Vor- und Nachteile
  • Text Editor verschwunden
  • Wie URL Alias für Entity in Drupal 9 erstellen?
Weiter

Neue Kommentare

  • Du könntest einen
    vor 4 Stunden 9 Minuten
  • Das findet man in diesem
    vor 2 Tagen 4 Stunden
  • Hallo, bitte löscht meinen
    vor 4 Tagen 3 Stunden
  • Schau mal hier
    vor 4 Tagen 8 Stunden
  • Das Modul ist ja ganz schön,
    vor 1 Woche 7 Stunden
  • Modul Purge
    vor 1 Woche 1 Tag
  • Nö
    vor 1 Woche 1 Tag
  • Manuell aus der Datenbank löschen
    vor 1 Woche 1 Tag
  • Bots ... auf Abstand
    vor 1 Woche 2 Tagen
  • Cache vs Browser
    vor 1 Woche 2 Tagen

Statistik

Beiträge im Forum: 247807
Registrierte User: 19537

Neue User:

  • Chrisvek
  • RebeccaBeils
  • rogerfk18

» Alle User anzeigen

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