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

block Sichtbarkeit abhängig von Wert eines fields in content-type

Eingetragen von thombuck (9)
am 12.07.2016 - 10:24 Uhr in
  • Module
  • Drupal 7.x oder neuer

Hallo zusammen,

ich stehe gerade vor einem Problem, für das ich keine Lösung finden kann. Dazu muss man sagen, dass dies meine erste Drupal-Page ist und ich nicht der PHP-Profi vor dem Herrn bin :-)

Ich habe ein webform-block erstellt, der auf ganz bestimmten Seitentypen angezeigt werden soll. Eigentlich kein Problem, aber die Schwierigkeit liegt darin, dass die Sichtbarkeit des blocks an einem field innerhalb des content-types abhängt.

Also: Es gibt einen block mit einem webform. Dann gibt es einen content-type "contenttype". In diesem gibt es ein spezifisches Feld "status" mit den möglichen Werten "active", "paused" oder "hidden". Den content-type mit dem jew. status lasse ich über views als Liste auf einer übersichtsseite ausgeben (für jeden status eine). Das Webform soll nun nur bei artikeln erscheinen, die den status "active" besitzen und bei "closed" und "hidden" nicht.

Ich habe es schon geschafft, dass das webform generell beim content-type "contenttype" angezeigt wird:

<?php
$nodeType
= "contenttype";

// valid node id in view mode
if ( arg(0) == 'node' AND is_numeric(arg(1)) AND arg(2) == FALSE ) {

   
$node = node_load(arg(1)); // cached

   
if ($node->type == $nodeType) {
        return
true;
    }
}

return
FALSE;
?>

Wie kann ich diesen Code erweitern, so dass er in diesem content-type zusätzlich noch den status des fields "status" abfragt und nur true zurückgibt, wenn "status" auf "active" steht?

Vielen Dank schonmal vorab für eure Hilfe.

‹ CCK Pflichtfeld für Node Author aufheben Leere Seite nach Colorbox installation ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo,ich würde in der

Eingetragen von Hyp1 (1463)
am 12.07.2016 - 11:28 Uhr

Hallo,

ich würde in der unteren if Abfrage folgendes hinzufügen:

if ($node->type == $nodeType && $node->status == 1) {
        return true;
    }

MfG

Robert

PS: Der node status sollte nach Deinem node_load als Integer Variable in $node vorhanden sein.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Robert, vielen Dank für

Eingetragen von thombuck (9)
am 12.07.2016 - 12:44 Uhr

Hi Robert,

vielen Dank für deine schnelle Rückmeldung. Habs eben ausprobiert - so hat es leider noch nicht funktioniert. Der webform block wird trotzdem bei allen artikeln des content-types angezeigt und ignoriert weiter die variable "status"

<?php


$nodeType
= "contenttype";

// valid node id in view mode
if ( arg(0) == 'node' AND is_numeric(arg(1)) AND arg(2) == FALSE ) {

   
$node = node_load(arg(1)); // cached

   
if ($node->type == $nodeType && $node->field_status == 1) {
     return
true;
    }
}

return
FALSE;


?>

Der Maschinenlesbare Name der content-type Variable ist "field_status" und der Wert "active" steht in der Auswahlliste als 1.

VG Thom

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Thom, sorry ich dachte Du

Eingetragen von Hyp1 (1463)
am 12.07.2016 - 13:16 Uhr

Hi Thom,

sorry ich dachte Du meinst den Orginalen Node Status, ob veröffentlicht oder nicht:
0: published
1: not published
und nicht ein Feld mit eigenen Werten.

Mach mal einen

var_dump($node->field_satus[LANGUAGE_NONE]);
die();

Um zu sehen wie Du an den Wert in field_status kommst.
Das kann ja auch sprachabhängig sein.

In dem Fall müsste der Code mit einem String Value verglichen werden:

if ($node->type == $nodeType && $node->field_status[LANGUAGE_NONE][0]['value'] == 'active')

Gruss

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genial

Eingetragen von thombuck (9)
am 12.07.2016 - 17:52 Uhr

Hey Robert - Du bist genial! :-) Vielen Dank. Der Value war statt 'active' ein integer. Jetzt funktioniert es genau wie es soll. Vielen Dank!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Mysql Ver 8.0.41 zu MariaDB 10.11.11
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Doppelte Einträge verhindern
  • [abgeschlosen] PHP Composer von Plesk + .bashrc nicht vorhanden
  • Drupal 7 Focal Point – Bild auf Desktop vollständig anzeigen, nur in Responsive zuschneiden
  • ECA validiere Felder mit unlimitierter Eingabe
  • Zugriff auf Webform beschränken/gewähren
  • Drupal 10.4.5 und Bootstrap 3.x.
  • Probleme mit Drupal 10 - HTTP Statuscode 403 (gelöst)
  • View mit mehreren Ansichten, übersteuert nicht
  • [gelöst] Wiederherstellen mit backup&migrate
  • [gelöst] ID eines Webformulars ermitteln?
Weiter

Neue Kommentare

  • V-Server ..
    vor 4 Tagen 20 Stunden
  • ... generelle
    vor 4 Tagen 20 Stunden
  • oder..
    vor 1 Woche 5 Tagen
  • Also ich will dich ja nicht
    vor 1 Woche 6 Tagen
  • nochmal MariaDB vs Mysql
    vor 1 Woche 6 Tagen
  • Vielen Dank - feedback zu den Videos
    vor 3 Wochen 3 Tagen
  • Falls dieses Thema noch mal
    vor 3 Wochen 6 Tagen
  • Prima, dann schreib bitte
    vor 4 Wochen 4 Stunden
  • Ah perfekt. Es hat an der
    vor 4 Wochen 5 Stunden
  • Davon gibt es sogar zwei
    vor 4 Wochen 6 Stunden

Statistik

Beiträge im Forum: 249987
Registrierte User: 20268

Neue User:

  • CharlestydaY
  • Darrenwem
  • DavidSeero

» Alle User anzeigen

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