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

aktuelle seite im code festlegen

Eingetragen von fatamorgana764 (3)
am 02.04.2008 - 10:25 Uhr in
  • Themes & Theming
  • Drupal 5.x

Hallo zusammen,
ich habe mich soeben auf dieser Seite angemeldet, weil ich zum ersten Mal seit ich Drupal benutze, ein Problem habe, für das ich partout keine Lösung finde. Alles Nachdenken, Dateien lesen und googeln hilft nicht ... :-(( Ich bin mit meinem Latein echt am Ende.
Mein Problem - von dem ich eigentlich nicht dachte, dass es eines werden würde - gestaltet sich wie folgt:
Ich habe einen "Pseudo-Breadcrumb" erstellt, der so aussieht:

Startseite   |   Inhalt 1   |   Inhalt 2   |   Inhalt 3   |   Inhalt 4   |   Inhalt 5

Dieser Pseudo-Breadcrumb wird über einen Block in der Region content-top auf der Startseite ausgegeben, sowie auf den jeweiligen Seiten von Inhalt 1 - 5 ANSTELLE des normalen Drupal-Breadcrumbs (kleine Änderung in der page.tpl.php ;-) ).
Die Links von Inhalt 1 - 5 sind mit stinknormalem Seiteninhalt (node-type-page) hinterlegt.
"Gestylt" wird der Pseudo-Breadcrumb über (eigene) css(-Klassen). So kann ich z.B. auch erreichen, dass die einzelnen Links beim Drüberhovern bold werden.
Was ich jedoch nicht (bzw. nur für die Startseite) hinbekomme, ist, dass wenn ich auf einen Inhalt klicke und die entsprechende Seite aufgeht, dass dieser angeklickte Breadcrumb-Punkt dann bold BLEIBT.
Wie es vom Prinzip her (und wie gesagt für die Startseite) funktioniert, weiß ich, nämlich: Ich muss in der Verlinkung (a href) zusätzlich class=active einfügen, für den Fall, dass ich mich auf der entsprechenden Seite befinde. NUR: Wie lautet der (korrekte) code für die aktuell betrachtete Seite ??

Ich dachte zunächst, dass sei recht easy - und zwar über arg(0) und arg(1). Das funzt jedoch leider nicht (Fatal error). Nach zig anderen Versuchen habe ich mir dann überlegt, dass der Block ja "weiß", auf welchen Seiten er sich zeigen soll (nur auf den aufgelisteten Seiten - die habe ich ihm ja eingegeben), also muss er diese Informationen ja irgendwoher bekommen. Ich habe die entsprechende Stelle in der block-module-Datei auch gefunden (denke ich zumindest), nur leider verstehe ich sie nicht so, dass ich sie nutzen könnte. Ich weiß echt nicht mehr weiter.
Anbei nun mein code - vielleicht weiß jemand von euch, wie man es richtig macht.

<?php
print '<div class=pseudobread>';
  if (
drupal_is_front_page ()) { // ich befinde mich auf der Startseite
   
print '<div class=pseudobread-inhalt><a class=active href="http://localhost/bms">Startseite</a></div>';
  }
  else {
    print
'<div class=pseudobread-inhalt><a href="http://localhost/bms">Startseite</a></div>';
  }
print
'<div class=trennstrich>|</div>';
  if ( -- ?? -- ) {
// ich befinde mich auf der Seite von node/17
   
print '<div class=pseudobread-inhalt><a class=active href="http://localhost/bms/node/17">Inhalt 1</a></div>';
  }
  else {
    print
'<div class=pseudobread-inhalt><a href="http://localhost/bms/node/17">Inhalt 1</a></div>';
  }
print
'<div class=trennstrich>|</div>';
  if ( -- ?? -- ) {
// ich befinde mich auf der Seite von node/18
   
print '<div class=pseudobread-inhalt><a class=active href="http://localhost/bms/node/18">Inhalt 2</a></div>';
  }
  else {
    print
'<div class=pseudobread-inhalt><a href="http://localhost/bms/node/18">Inhalt 2</a></div>';
  }
...
usw.
...
print
'</div>';
?>

Viele Grüße
fatamorgana764

‹ Neue Kommentare im Block kennzeichnen Newbee >> Nodes-Template und Datenbeschaffung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Um interne Links

Eingetragen von ugerhard (60)
am 02.04.2008 - 10:42 Uhr

Um interne Links programmatisch auszugeben, benutzt Du am einfachsten die l()-Funktion: http://api.drupal.org/api/function/l/5

Die erzeugt dann auch automatisch einen a-Tag mit der CSS-Klasse "active", wenn sie auf der aktiven Seite aufgerufen wird und kuemmert sich auch um die Ausgabe von Clean URLs und URL-Aliases, wenn die aktiviert sind.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für die schnelle Antwort

Eingetragen von fatamorgana764 (3)
am 02.04.2008 - 11:50 Uhr

Hallo ugerhard,
vielen Dank für Deine schnelle Antwort. Leider hilft sie mir nicht weiter. Ich habe nämlich erst vor ca. 1/2 Jahr angefangen, mir php beizubringen und hab davon nicht wirklich ´ne Ahnung. Ich kann zwar viele vorhandene Dinge ändern, nur selbst z.B. functions erstellen, dazu bin ich leider nicht fähig.
Die Stelle in der common.inc, auf die Du verweist, an dieser bin ich stundenlang "hängengeblieben" - eben weil da ja auch das "active" vergeben wird. Ich hatte in einer älteren Drupal-Version, in der die Startseite noch nicht die active-Funktion hatte, diese dort eingefügt. Natürlich nach vorgefertigten Angaben in einem Drupal-Forum. DASS da Links "produziert werden, das war/ist mir klar, aber das ist auch schon alles. Was da genau passiert, wie es funzt ... null Ahnung. Absolut NULL.
Magst Du mir vielleicht auf die Sprünge helfen und mir einen Link erstellen bzw. einen Mustercode, für einen der Inhalt-Links?? Wenn ich das fertige Produkt sehe, dann begreife ich vielleicht auch das Prinzip (was mir sehr wichtig ist!).
Viele Grüße
fatamorgana764

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dein Beispiel von oben

Eingetragen von ugerhard (60)
am 02.04.2008 - 12:10 Uhr

Dein Beispiel von oben umgeschrieben, so dass die l()-Funktion verwendet wird, sähe so aus:

<?php
print '<div class=pseudobread>';
print
'<div class=pseudobread-inhalt>' . l('Startseite', '<front>') . '</div>';
print
'<div class=trennstrich>|</div>';
print
'<div class=pseudobread-inhalt>' . l('Inhalt 1', 'node/17') . '</div>';
print
'<div class=trennstrich>|</div>';
print
'<div class=pseudobread-inhalt>' . l('Inhalt 2', 'node/18') . '</div>';

...
usw.
...

print
'</div>';
?>

Die l()-Funktion übernimmt, wie gesagt, für Dich das komplette Erzeugen des Link-HTMLs inklusive Setzen der active-Klasse.

Lesbarer finde ich es übrigens (und so wird's auch normalerweise in den Drupal-Templates gehandhabt), wenn man das "statische" HTML aus dem PHP rauszieht, also folgendermaßen vorgeht:

<div class=pseudobread>
  <div class=pseudobread-inhalt><?php print l('Startseite', '<front>'); ?></div>
  <div class=trennstrich>|</div>
  <div class=pseudobread-inhalt><?php print l('Inhalt 1', 'node/17'); ?></div>
  <div class=trennstrich>|</div>
  <div class=pseudobread-inhalt><?php print l('Inhalt 2', 'node/18'); ?></div>

  ...
  usw.
  ...

</div>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Whow !!!

Eingetragen von fatamorgana764 (3)
am 02.04.2008 - 12:54 Uhr

Danke, danke, danke !!! SO einfach ist das ??? Ich bin echt baff. Irgendwie hab ich da wohl doch was Grundlegendes noch nicht kapiert. Wenn nur die Tutorials, die es im Netz so gibt, ein wenig mehr auf meine Art zu Verstehen zugeschnitten wären ...
Die Schreibweise, das "statische" HTML aus dem PHP rauszuziehen, ist für mich sehr verwirrend, weil ich es anders "gelernt" habe. Ich tue mich extrem schwer mit dem Lesen eines solchen Codes, aber wenn das Standard ist, dann werde ich mich umgewöhnen. Danke auch für diesen Tipp.
Liebe Grüße
fatamorgana764

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

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