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

Nicht auf Frontpage bei unregistrierten Benutzer

Eingetragen von Schnittmenge@dr... (288)
am 05.12.2009 - 07:18 Uhr in
  • Themes & Theming
  • Drupal 5.x

Ich möchte ein Block auf allen Seiten anzeigen lassen, nur nicht auf der Startseite für nicht registrierte Benutzer: http://de.consenser.org/

Wie lautet der php Befehl: if (Frontpage) mit if (drupal_is_front_page()) hat es nicht funktioniert?

‹ Aktuellen Title im Blockview nutzen Suche gutes Template ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Frontpage

Eingetragen von fh (153)
am 05.12.2009 - 15:33 Uhr

Hallo,

Wenn du es für PHPTemplate (tpl.php) schreibst ginge das in etwas so:

<?php if($is_front && !$logged_in): ?>
  // Anweisungen ...
<?php endif; ?>

Möchtest du normales PHP benutzen, so geht das so:

<?php
if($is_front && !$logged_in) {
 
// Anweisungen ...
}
?>

Gruss

Fredi

EDIT: '<' Zeichen vor dem if-Statement entfernt

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wird immer noch angezeigt!

Eingetragen von Schnittmenge@dr... (288)
am 05.12.2009 - 13:58 Uhr

Also dieser Code sollte einen Block nicht auf der Startseite für nicht registrierte Benutzer nicht anzeigen.
Kurz: false (PHP-Modus für die Sichtbarkeitseinstellung)

<?php
<if($is_front && !$logged_in) {
  return
false;
}
?>

Doch ich sehe Ihn weiterhin diesen Block auf der Startseite, obwohl ich nicht eingeloggt bin. Wo kann der Fehler liegen? Muss ich noch irgend etwas zuvor laden, wie bei

global $user;
if ( $user->uid == 0)

  • Anmelden oder Registrieren um Kommentare zu schreiben

sorry ...

Eingetragen von fh (153)
am 05.12.2009 - 15:06 Uhr

Hallo,

entschuldige, ich habe dir das falsch ausgesagt.
wie es oben geschrieben war, wird der Artikel nur auf der Frontseite und nicht eingeloggt angezeigt.

Möchtest du es anzeigen, aber nur für registrierte User:

<?php
if($is_front && $logged_in) {
 
// wird auf der Frontpage angezeigt, aber nur wenn eingeloggt
}
?>

Den User brauchst du nicht anzugeben...
Jetzt sollte es stimmen :-)

Gruss

Fredi

  • Anmelden oder Registrieren um Kommentare zu schreiben

if alleine sagt nichts aus ...

Eingetragen von Schnittmenge@dr... (288)
am 05.12.2009 - 15:01 Uhr

Es geht darum, ob die PHP Funktion "false" oder "true" zurück gibt. Womit die if Bedingung nur im Zusammenspiel mit der Anweisung einen Sinn macht. Bei "FALSE" dürfte ich den Block nicht sehen, tue es aber.

Irgend etwas stimmt da noch nicht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo,Also wenn du jetzt in

Eingetragen von fh (153)
am 05.12.2009 - 15:31 Uhr

Hallo,

Also wenn du jetzt in "$is_front"(auf der Frontseite) bist und "$logged_in"(eingeloggt), so bekommst du TRUE zurück, besser gesagt, if bekommt das TRUE.

Bist du nicht auf der Frontpage == FALSE
Bist du nicht eingeloggt == FALSE

Den Code den du ausführen möchtest, könntest du nun in die Anweisung selber stellen:

<?php
if ($is_front && $logged_in) {
// Frontseite und eingeloggt, dann wird das hier ausgeführt
} else {
// ansonsten wird das hier ausgeführt...
}
?>

Du könntest ja auch in dem ersten Block eine Variable setzen, wenn du das Ergebnis woanders benötigst:

<?php
if ($is_front && $logged_in) {
$reultat = TRUE; 
} else {
$resultat = FALSE;
}
return
$resultat; // gäbe auf Frontseite und eingeloggt TRUE aus, ansonsten FALSE
?>

Jetzt kannst du einfach $resultat abfragen, welches nun entweder TRUE oder FALSE ist. Jetzt muss ich aber doch noch nachfragen, dieses Statement stellst du aber schon in eine tpl.php Datei? Und wenn ja, warum setzt du nicht einfach den Code der "angesehen / nicht angesehen" werden darf auch in die das if? Du könntest so auch ganze Dateien nicht ausgeben lassen, oder halt nur Teile davon.

Vielleicht hilft das jetzt weiter

Gruss

Fredi

EDIT: Ich sehe gerade, dass sich in den ersten Beispielen ein Fehler eingeschlichen hat, darum ev. dass es nicht geht?!

<?php
<if
?>

das < vor dem if muss unbedingt weg!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sind das variablen für

Eingetragen von Schnittmenge@dr... (288)
am 05.12.2009 - 22:27 Uhr

Sind das variablen für Drupal 5?

Also ich habe jetzt verschiedene Versuche gemacht mit negativen Ergebnissen:

Bei diesen Code wird der Block auf allen Seiten angezeigt, auch auf der Startseite!:

<?php
if ($is_front) {
return =
FALSE;
} else {
return =
TRUE;
}
?>

Auch dieser Code lässt den Block auf allen Seiten erscheinen, egal, ob eingeloggt oder nicht!:

<?php
if ($logged_in) {
return =
FALSE;
} else {
return =
TRUE;
}
?>

Wo könnte das Problem liegen. Entweder entsprechen die $... D5 nicht, oder der Fehler liegt ganz wo anders.

Dank für Deine Geduld!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Drupal 5, kenn ich kaum ...

Eingetragen von fh (153)
am 06.12.2009 - 12:28 Uhr

Hallo,

leider kenne ich mich nicht mit Drupal 5 grossartig aus. Darauf hatte ich auch gar nicht geachtet...
Du könntest ja mal das error_reporting hochsetzen, wenn die Variablen nicht existieren sollten, so bekommst du eine Fehlermeldung.
Das ginge so, wenn du folgenden Code in die verwendete tpl.php reinstellst, oben am Anfang der Seite:

<?php
error_reporting
(E_ALL);
?>

Jetzt solltest du einen Fehler angezeigt bekommen, wenn die Variablen nicht existieren, oder sonst etwas nicht stimmt. Wenn diese Variablen keine Fehler verursachen(also vorhanden sind), würde ich auch mal die Ausgabe testen, ev. wird eine andere tpl.php aufgerufen als erwartet. Du könntest hier ja einfach mal so was angeben, am besten direkt über der Ausgabe ...$content...:

<?php
echo "<h2>Dateiname.tpl.php</h2>";
?>

Villeicht geht es damit, denn meines Wissens ist $is_front auch immer eine page...

<?php
if ($page) {
  echo
"Wir sind in einer Pageausgabe";
}
?>

Wie du den User abfragen kannst, bin ich nun auch nicht ganz sicher.
Ich habe dir hier mal die Liste von den möglichen Variablen in der page.tpl.php, aber für Drupal 6.

/**
* @file page.tpl.php
*
* Theme implementation to display a single Drupal page.
*
* Available variables:
*
* General utility variables:
* - $base_path: The base URL path of the Drupal installation. At the very
*   least, this will always default to /.
* - $css: An array of CSS files for the current page.
* - $directory: The directory the theme is located in, e.g. themes/garland or
*   themes/garland/minelli.
* - $is_front: TRUE if the current page is the front page. Used to toggle the mission statement.
* - $logged_in: TRUE if the user is registered and signed in.
* - $is_admin: TRUE if the user has permission to access administration pages.
*
* Page metadata:
* - $language: (object) The language the site is being displayed in.
*   $language->language contains its textual representation.
*   $language->dir contains the language direction. It will either be 'ltr' or 'rtl'.
* - $head_title: A modified version of the page title, for use in the TITLE tag.
* - $head: Markup for the HEAD section (including meta tags, keyword tags, and
*   so on).
* - $styles: Style tags necessary to import all CSS files for the page.
* - $scripts: Script tags necessary to load the JavaScript files and settings
*   for the page.
* - $body_classes: A set of CSS classes for the BODY tag. This contains flags
*   indicating the current layout (multiple columns, single column), the current
*   path, whether the user is logged in, and so on.
* - $body_classes_array: An array of the body classes. This is easier to
*   manipulate then the string in $body_classes.
*
* Site identity:
* - $front_page: The URL of the front page. Use this instead of $base_path,
*   when linking to the front page. This includes the language domain or prefix.
* - $logo: The path to the logo image, as defined in theme configuration.
* - $site_name: The name of the site, empty when display has been disabled
*   in theme settings.
* - $site_slogan: The slogan of the site, empty when display has been disabled
*   in theme settings.
* - $mission: The text of the site mission, empty when display has been disabled
*   in theme settings.
*
* Navigation:
* - $search_box: HTML to display the search box, empty if search has been disabled.
* - $primary_links (array): An array containing primary navigation links for the
*   site, if they have been configured.
* - $secondary_links (array): An array containing secondary navigation links for
*   the site, if they have been configured.
*
* Page content (in order of occurrance in the default page.tpl.php):
* - $left: The HTML for the left sidebar.
*
* - $breadcrumb: The breadcrumb trail for the current page.
* - $title: The page title, for use in the actual HTML content.
* - $help: Dynamic help text, mostly for admin pages.
* - $messages: HTML for status and error messages. Should be displayed prominently.
* - $tabs: Tabs linking to any sub-pages beneath the current page (e.g., the view
*   and edit tabs when displaying a node).
*
* - $content: The main content of the current Drupal page.
*
* - $right: The HTML for the right sidebar.
*
* Footer/closing data:
* - $feed_icons: A string of all feed icons for the current page.
* - $footer_message: The footer message as defined in the admin settings.
* - $footer : The footer region.
* - $closure: Final closing markup from any modules that have altered the page.
*   This variable should always be output last, after all other dynamic content.
*
* @see template_preprocess()
* @see template_preprocess_page()
*/

Leider kann ich nicht mehr dazu sagen, in Drupal 5 bin ich nicht so bewandert.

Noch als Anmerkung; wenn du diese Ausgaben für ein Modul benötigst, warum machst du diese Abfragen nicht im Modul selber und könntest mit den Rechten(hook_perm()) arbeiten? Dort könntest du dann wirklich auch den $user in der Funktion direkt erfragen.
Übrigens: das return funktioniert natürlich nur, wenn du dieses if-Statement durch eine Funktion aufrufst, dann erhält diese den Inhalt von return. Ansonsten kannst du das einfach so setzen, oder es mit echo ausgeben.

<?php
if ($is_front && $logged_in) {
 
// $resultat bekommt jetzt den Wert
 
$resultat = "ein Wert";
}
?>

Wenn du den Code nicht direkt in dieses if einbindest, so müsste der auszugebende Code so umschlossen werden.

<?php
if (isset($resultat) && ($resultat == "ein Wert") {
// $resultat ist gesetzt und hat den Wert "ein Wert";
} elseif (isset($resultat)) {
 
// $resultat ist gesetzt
} elseif ($resultat == "ein Wert") {  // hier ginge auch -- elseif ($resultat != '') {}
  // $resultat hat "ein Wert" zugewiesen bekommen
} else {
 
// es wurde weder Variable noch ein Wert erkannt.
 
echo "keine Übereinstimmung:"

}
?>

So, vielleicht nutzt dir das was. Wenn ich mehr über den Kontext wüsste, könnte ich dir vielleicht eher helfen. Vielleicht weiss jemand gut in Drupal 5 Bescheid...

Gruss, hätte gerne mehr geholfen

Fredi

P.S. du hast doch auch für deinen Block eine Rechtemöglichkeit! Wenn du in admin - Strukturierung - Blöcke gehst, kannst du deinen Block doch bearbeiten.
Du solltest diesen Block "bearbeiten" können (hoffe das gibt es in D5) und da kannst du doch angeben, auf welchen Seiten dieser sichtbar sein soll. Hier könntest du ja einfach den zugelassenen Pfad angeben, ev. gibt es auch schon in D5 das "frontpage", oder wenigstens <front>. Dazu kannst du angeben, dass Drupal für anonyme User diesen Block nicht anzeigt.
Jedenfalls ginge das in D6 auf diese Weise...

EDIT:
Hier der Link zu D5 Template-Variablen, ich habe einfach eine Seite davon genommen, ev. blättern.
http://drupal.org/node/39891

Das $is_front und das $page kannst du so anwenden wie aufgezeigt, aber das $logged_in gibt es anscheinend noch nicht. Vielleicht findest du eine Lösung auf der angegebenen Seite.
Kann mir höchstens deinen Vorschlag vorstellen, dass du wirklich mal "global $user" versuchtst und dann auch wie die anderen Werte abfragst.


<?php
global $user;
if(
$is_front && $user != 0) {
 
// ausführen wenn auf Frontseite und nur wenn eingeloggt...
}
?>

ob er das $user annimmt, kannst du ja einfach prüfen:
if(isset($user)) {
  echo "User ist gesetzt mit Nummer: $user";
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

GELÖST

Eingetragen von Schnittmenge@dr... (288)
am 09.12.2009 - 12:58 Uhr

Was kann man daraus lernen:
1. Die Befehle für php.tpl können anders sein, als die für die Block Aktivierung: drupal_is_front_page()war von Anfang an richtig. Denn Fehler den ich gemacht habe, war dass ich false UND right returnen musste.

2. Die Befehle für Drupal 5 und 6 unterscheiden sich:
D6: §logged_in D5: global $user; if ( $user->uid == 0)

Mein Code für D5, der einen Block auf allen Seiten anzeigt, nur nicht, auf der Startseite für nicht registrierte Benutzer lautet:

<?php
 
global $user;
  if (
drupal_is_front_page() && $user->uid == 0) {
          return
false;
  }
else {return
true;
}
?>

Fredi, danke für Deine Geduld.

Saludos,
Schnittmenge

  • Anmelden oder Registrieren um Kommentare zu schreiben

gut zu wissen

Eingetragen von fh (153)
am 09.12.2009 - 13:23 Uhr

Hallo Schnittmenge,

ich glaube, das ich mich zu wenig genau erkundigte, m.W. ist das $is_front tatsächlich nur für die page...-
und die node...tpl.php verfügbar - habe das nicht bedacht. :-(
Danke für die Rückmeldung, an dem return ... UND "$block" hätte ich mir vielleicht auch mal Probleme eingefangen. Feedback ist immer gut, auch wenn ich nicht helfen konnte.

Gruss

Fredi

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Das ist für mich das typische
    vor 2 Stunden 42 Minuten
  • Ok es scheint zu laufen
    vor 4 Stunden 41 Minuten
  • Danke. Es scheint jetzt
    vor 5 Stunden 35 Minuten
  • Der Fehler kann in der
    vor 19 Stunden 56 Minuten
  • Ja, das mit Mühselig hab ich
    vor 21 Stunden 49 Minuten
  • composer nutezn
    vor 1 Tag 5 Stunden
  • Sorry ich sehe gerade ich
    vor 2 Tagen 6 Stunden
  • Hallo, mittlerweile habe ich
    vor 2 Tagen 6 Stunden
  • fehlende Module
    vor 2 Tagen 9 Stunden
  • Keiner der mir weiterhelfen
    vor 4 Tagen 6 Stunden

Statistik

Beiträge im Forum: 250248
Registrierte User: 20469

Neue User:

  • Germanrom
  • StevenEness
  • ocvk2810

» Alle User anzeigen

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