Kontext Taxonomie Begriff

6

Ich habe einen Kontext eingerichtet:

Condition > taxonomy term > vocabulary.

Reaction > some blocks displayed somewhere

Dies funktioniert gut für Pfad wie, taxonomy/term/term_idaber es funktioniert nicht für so etwastaxonomy/term/term_id_1+term_id_2

Irgendwelche Ideen? Vielen Dank

Marius Ilie
quelle
2
Ich denke, Sie könnten eine Ansicht mit Kontextfiltern verwenden.
Jantimon
Dies hat nichts mit Ansichten zu tun. Ich möchte, dass einige statische Blöcke auf einigen Seiten angezeigt werden, einschließlich so etwas wie taxonomy/term/term_id_1+term_id_2. Es ist eine Art Fehler mit dem Kontextmodul
Marius Ilie
Auf meiner Testseite gibt eine URL wie tero.local / dr72 / taxonomy / term / 20 + 21 einen 404-Fehler zurück, selbst wenn tero.local / dr72 / taxonomy / term / 20 und tero.local / dr72 / taxonomy / term / 21 gibt keinen Fehler zurück. Könnte das sein, dass es bei Ihnen nicht funktioniert?
Kiamlaluno

Antworten:

1

Dies ist ein bisschen Code kann Ihnen helfen, hoffe ich,

 <?php
   check_vocabulary = FALSE;
     $path = drupal_get_path_alias($_GET['q']); 
     $pathnew = explode('/', $path);
     if ($pathnew[2]) {
        $vocabulary = explode('+', $pathnew[2]);
     }
    if ($vocabulary[0] == "your taxonomy") {
       check_vocabulary = TRUE;
    }
  return check_vocabulary;
?>

Sie sollten es in den Block unter der Registerkarte setzen Page specificy visibility setting, klicken Sie aufShow if the following PHP code returns TRUE (PHP-mode, experts only).

Jetzt bin ich mir nicht sicher, ob es mit Ihrer Einstellung und Ihrem Namen funktionieren wird, aber es könnte ein Weg für eine Lösung sein.

 check_vocabulary = FALSE;

Wie wir wissen, möchte das System, dass Sie TRUE zurückgeben , um den Block zu drucken, sodass wir ihn am Anfang auf false setzen, damit er nicht gedruckt und dann entfernt wird.

$path = drupal_get_path_alias($_GET['q']); 
$pathnew = explode('/', $path);

In diesem Teil nehmen wir den Pfad und explodieren ihn, damit wir ein Array wie dieses erhalten.

$pathnew[0]; Taxonomy
$pathnew[1]; Term
$pathnew[2]; Term_id_1+term_id_2

if ($pathnew[2]) {
    $vocabulary = explode('+', $pathnew[2]);
  }

Wir überprüfen zuerst, ob es $pathnew[2]existiert, und explodieren dann, um alle Vokabulare zu erhalten (wenn Sie möchten, dass es getrennt wird). Wir teilen es durch +, damit Sie erhalten

$vocabulary[0]; Term_id_1
$vocabulary[1]; term_id_2

Jetzt schaffen wir die Bedingung;

if ($vocabulary[0] == "your taxonomy") {
   check_vocabulary = TRUE;
}

Sie können vergleichen, was Sie wollen, das ist nur ein Beispiel.

check_vocabulary = TRUE;

Dies ist, was das System den Block drucken möchte.

return check_vocabulary;

Dies gibt die Variable FALSE oder TRUE zurück .

Lass mich wissen ob es funktioniert.

Tyler Durden
quelle
Ich weiß, wie man es selbst mit benutzerdefiniertem Code macht, aber ich muss es mit dem Kontextmodul machen.
Marius Ilie
0

Können Sie die Bedingung nicht so ändern, dass sie nur das Vokabular und nicht der Begriff ist? Auf diese Weise funktioniert es mit jedem Begriff in diesem Vokabular?

Sie können den Pfad auch als Bedingung verwenden:

taxonomy/term/*
Kevin Howbrook
quelle