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

[gelöst] Umsetzungsproblem: Block-Anzeige

Eingetragen von Ionit (1802)
am 02.09.2010 - 12:20 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo,

ich habe gerade ein Denkproblem.

Um Blöcke anzuzeigen, setze ich bei mir unter "Sichtbarkeits-Einstellungen"

Diesen Block nur auf den aufgelisteten Seiten anzeigen:

users/*

Damit wird der Block unter z.B. users/benny angezeigt.

Ich möchte aber erreichen, dass der Block auf dem Sub-Pfad users/benny/bewertungen oder users/benny/gaestebuch nicht zu sehen ist. Im Moment wird er dort auch angezeigt.

Wie kann man das am besten machen/angeben?

Zeige auf users/benny aber nicht auf users/benny/wasauchimmer !

Danke und Gruß

Matthias

‹ [gelöst] Site von Xampp auf 1und1 ziehen Sprachumschalter.... ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmmm .... ich habs mit PHP

Eingetragen von Ionit (1802)
am 02.09.2010 - 13:01 Uhr

Hmmm ....

ich habs mit PHP versucht

<?php
global $user;
if (
arg(0) == 'user' && arg(1) == $user->uid) && arg(2) != 'bewertungen' {
  return
TRUE;
} else return
FALSE;
?>

Damit will ich sagen: "Wenn der Pfad anders als users/name/bewertungen ist, ist TRUE" -> "Wenn der Pfad users/name/bewertungen ist = FALSE"! != ist ja ungleich!

Leider scheint Drupal den Code aber zu ignorieren.

Grübelnde Grüße

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP

Eingetragen von stBorchert (6003)
am 02.09.2010 - 13:05 Uhr

Hallo.
Aktiviere das Modul "PHP" und wähle dann bei den Sichtbarkeitseinstellungen "Show if the following PHP code returns TRUE" aus.
Dann kannst Du im Eingabefeld abfragen, ob der erste Teil des Pfades "users" ist, ein 2. Teil existiert und ein 3. Teil nicht existiert:

<?php
return (arg(0) == 'users' && isset(arg(1)) && !isset(arg(2)));
?>

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, PHP hab ich

Eingetragen von Ionit (1802)
am 02.09.2010 - 13:13 Uhr

Hallo Stefan,

PHP hab ich natürlich aktiviert.

Wenn ich aber

<?php
return (arg(0) == 'users' && isset(arg(1)) && !isset(arg(2)));
?>

eingebe, gibts ne Fehlermeldung. Fatal error: eval()'d code on line 2

Edit: da war ein ! zu viel in !isset(arg(2)))

Oha - ich kann jetzt aber nicht mehr auf meien Drupalinstallation zugreifen. Egal was ich aufrufe -> Fatal Error.

Gibt es eine Möglichkeit den eingegebenen Block-Code wieder zu löschen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok - kann mir die Frage

Eingetragen von Ionit (1802)
am 02.09.2010 - 13:18 Uhr

Ok - kann mir die Frage selbst beantworten. Über PHPMyAdmin konnte ich den Code löschen
Leider ergibt

<?php
return (arg(0) == 'users' && isset(arg(1)) && isset(arg(2)));
?>

trotzdem ne Fehlermeldung.

Mein PHP/Drupal kommt scheinbar mit dem isset nicht klar - das Problem hatte ich schonmal.

Grübel!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sehr eigenartig! Wenn ich

Eingetragen von Ionit (1802)
am 02.09.2010 - 13:30 Uhr

Sehr eigenartig! Wenn ich

<?php
global $user;
if (
arg(0) == 'users' && arg(1) == $user->uid) {
  return
TRUE;
}
if (
arg(0) == 'users' && arg(1) == $user->uid && arg(2) == 'bewertungen' )  {
  return
FALSE;
}
?>

verwende, wird der Block nirgends mehr angezeigt obwohl arg(0) == 'users' && arg(1) == $user->uid TRUE ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

eval

Eingetragen von stBorchert (6003)
am 02.09.2010 - 13:32 Uhr

Wieder ein Beispiel, warum eval() böse ist :)
Das "!" ist übrigens nicht zuviel gewesen, das verneint nur die Aussage "isset(arg(2))". Das Problem an der Geschichte ist die Verwendung einer Funktion als Wert einer anderen Funktion in eval() (arg() innerhalb von isset()).
Umgehen lässt sich das mit

<?php
$arg0
= arg(0);
$arg1 = arg(1);
$arguments = arg();
return (
arg0 == 'users' && isset($arg1) && count($arguments) <= 2);
?>

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin sehr verwirrt. Ich

Eingetragen von Ionit (1802)
am 02.09.2010 - 13:47 Uhr

Ich bin sehr verwirrt.

Ich habe den obigen Code im Block angegeben - es erfolgt nun keine Ausgabe des Blocks mehr weder auf users/benny noch auf users/benny/sowieso

Allerdings wird auch sonst nichts ausgegeben - ich sehe zumindest nichts - ich dachte nun werden an der Stelle des Blocks die args als text ausgegeben.

Oder was sollte passieren?

Stehe momentan wie der berühmte Ochs vrom Tor.

Völlig verwirrte Grüße

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also mit <?phpglobal $user;if

Eingetragen von Ionit (1802)
am 02.09.2010 - 14:13 Uhr

Also mit

<?php
global $user;
if (
arg(0) == 'user' && arg(1) == $user->uid) {
  return
TRUE;
}
if (
arg(0) == 'user' && arg(1) == $user->uid && arg(2) == 'bewertungen' )  {
  return
FALSE;
}
?>

funktioniert es nun - allerdings ausschließlich für mich als Profil-Inhaber/Autor - sprich - wenn ich mein eigenes Profil anschaue bzw. users/mein_eigener_name/bewertungen

Wenn ich mir ein anderes Fremd-Profil anschaue, wird aber kein Block ausgegeben. Auch für Gäste wird der Block nirgends mehr angezeigt bzw. die PHP-Anweisung arbeitet nicht.

Das wird sicherlich an $user->uid liegen oder an global $user (für mch als PHP-Laie) ... ujuijui ... mal gucken wie man das umschreiben muss.

Das ist ja schon wieder was hier.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich dachte nun, dass man im

Eingetragen von Ionit (1802)
am 02.09.2010 - 14:59 Uhr

Ich dachte nun, dass man im Code arg(1) == $user->uid durch is_numeric(arg(1) ersetzen muss ....

if (arg(0) == 'user' && is_numeric(arg(1)

und

if (arg(0) == 'user' && is_numeric(arg(1) && arg(2) == 'bewertungen' )

aber wenn ich das so schreibe, wird der Block wieder überall angezeigt - unter users/benny aber auch unter users/benny/berwertungen/name_der_bewertung also wird die PHP-Anweisung ignoriert und/oder ist falsch.

<?php
global $user;
if (
arg(0) == 'user' && is_numeric(arg(1) {
  return
TRUE;
}
if (
arg(0) == 'user' && is_numeric(arg(1) && arg(2) == 'bewertungen' )  {
  return
FALSE;
}
?>

Wo liegt der Fehler?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok - habs selbst heraus

Eingetragen von Ionit (1802)
am 02.09.2010 - 16:51 Uhr

Ok - habs selbst heraus gefunden.

So muss der Code lauten.

<?php
global $user;
if (
arg(0) == 'user' && is_numeric(arg(1)))
   {
return
TRUE;
   }
if (
arg(0) == 'node' && is_numeric(arg(1)))
      {
return
FALSE;
   }
?>

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20456

Neue User:

  • Znogsnernoimb
  • ByteScrapers
  • Mroppoofpaync

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