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

[gelöst] Umsetzungsproblem: Block-Anzeige

Eingetragen von Ionit (995)
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 (995)
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

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP

Eingetragen von stBorchert (5516)
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

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, PHP hab ich

Eingetragen von Ionit (995)
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?

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok - kann mir die Frage

Eingetragen von Ionit (995)
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!

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sehr eigenartig! Wenn ich

Eingetragen von Ionit (995)
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.

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

eval

Eingetragen von stBorchert (5516)
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

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin sehr verwirrt. Ich

Eingetragen von Ionit (995)
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

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also mit <?phpglobal $user;if

Eingetragen von Ionit (995)
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.

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich dachte nun, dass man im

Eingetragen von Ionit (995)
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?

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok - habs selbst heraus

Eingetragen von Ionit (995)
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;
   }
?>

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • [gelöst] Drupal7.10 Fehlermeldungen ohne Site-Änderungen
  • Blockregionen per CCK Feld ausblenden
  • [erledigt] drupal 7 - read more ausblenden
  • Drupal7 für eine Produktvergleich Seite
  • Marinelli 3, Admin-Layer
  • #ajax Funktionalität in einem Field Widget
  • Image: Bildupload erst beim Speichern des Nodes
  • Views Accordion - Header Elemente nebeneinander
  • Wie kann ich Theme AUTOMATISCH umstellen, wenn sich Benutzer einlogen?
  • Überprüfung von Artikeln, die Benutzer geschrieben haben
  • Target des Weiterlesen-Links ändern?
  • CCK Auswahlfelder während des Betriebes ändern/erweitern oder in Textfeld umwandeln
Weiter

Neue Kommentare

  • Danke!
    vor 1 Stunde 58 Minuten
  • in die template.php im
    vor 3 Stunden 4 Minuten
  • da es bisher keine etablierte
    vor 3 Stunden 14 Minuten
  • Also die lösung ist einfach
    vor 6 Stunden 33 Minuten
  • Und warum schreibst Du die
    vor 9 Stunden 31 Minuten
  • Jep, so hab ich eine View
    vor 9 Stunden 59 Minuten
  • Nimm dazu doch das Modul
    vor 10 Stunden 24 Minuten
  • okay, vielen dank :)
    vor 10 Stunden 34 Minuten
  • _target-Attribut für Links in node.tpl.php einfügen
    vor 10 Stunden 49 Minuten
  • Hallo Jonny und willkommen
    vor 11 Stunden 22 Minuten

Statistik

Beiträge im Forum: 173956
Registrierte User: 15480

Neue User:

  • ghs2f1efs
  • Neoskop
  • habicht09

» Alle User anzeigen

User nach Punkten sortiert:
stBorchert5516
quiptime4713
Tobias Bähr3874
wla3805
md3777
bv3700
Thoor3678
Alexander Langer3282
dereine2635
Exterior2571
» User nach Punkten
Zur Zeit sind 1 Benutzer und 9 Gäste online.

Benutzer online

  • kahta

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Ü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
  • Bücherecke

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed Drupal Podcast
  • 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