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 - 20: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 - 00: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok, eine dummy-nachfrage

Eingetragen von draeck (93)
am 18.11.2008 - 19: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

  • 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 - 19: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

nochmal

Eingetragen von draeck (93)
am 18.11.2008 - 19: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?

  • Anmelden oder Registrieren um Kommentare zu schreiben

hey super

Eingetragen von draeck (93)
am 18.11.2008 - 20: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

mh

Eingetragen von draeck (93)
am 18.11.2008 - 20: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!?

...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modul "Relevant Content"

Eingetragen von Frank Ralf (2135)
am 21.11.2008 - 23: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

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

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 34 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