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

Ein Menü (als Block) auch dann sichtbar machen, wenn keine Links zugeordnet sind

Eingetragen von braun (40)
am 14.09.2009 - 18:14 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Wo finde ich den Source, wo er die Menüs als Block erstellt?.

Ich erzeuge ein Menü, was ein Block ist und die Blöcke werden aber erst angezeigt, wenn min. 1 Links dort einsortiert wurde.
Ich möchte aber gerne bei count == 0 einen Text anzeigen

‹ node comments Ubercart und Mwst anzeigen lassen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Erstelle doch einfach einen

Eingetragen von TobiasR (134)
am 14.09.2009 - 23:27 Uhr

Erstelle doch einfach einen Text-Block.

Dort kannst Du Deinen Text reinschreiben. Wenn Dein Menu irgendwie dynamisch erzeugt wird (und später Einträge hinzukommen), könntest Du diesen Block wieder deaktivieren oder über PHP-Code ausblenden, wenn das Menü angezeigt wird.

Tobias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Block themen

Eingetragen von Nicolai Schwarz (1071)
am 15.09.2009 - 02:00 Uhr

Oder du schreibst ein Theme für diesen Block. Mit php schaust du dir an, was drin steht. Entweder gibst du dann das Menü aus oder einen Alternativtext.

--
textformer mediendesign | Webkrauts

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke fuer die ansaetze. Ich

Eingetragen von braun (40)
am 15.09.2009 - 06:35 Uhr

Danke fuer die ansaetze. Ich moechte jedoch die methode ueberschreiben. Wo finde ich die methode?

  • Anmelden oder Registrieren um Kommentare zu schreiben

theme_menu_tree

Eingetragen von traxer (1009)
am 15.09.2009 - 09:59 Uhr

Der Block wird offensichtlich durch menu_block erzeugt. Wenn du dich durch den Quelltext durchklickst, dann landest du irgendwann bei der Funktion menu_tree_output, die dann theme('menu_tree', $output) aufruft. Am nächsten reicht also theme_menu_tree heran.

Allerdings weiß ich nicht ob theme_menu_tree wirklich nur für Blöcke aufgerufen wird. Ich schließe mich deshalb dem Ratschlag von Nicolei an: schreibe ein Template für den Block.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit dem Theme für den Block

Eingetragen von braun (40)
am 15.09.2009 - 10:32 Uhr

Mit dem Theme für den Block steh ich gerade auf dem Schlauch weil die Ausgabe erfolgt doch nur mittels node->content.
Was meint ihr genau, sollte ich tun?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Re: Mit dem Theme für den Block

Eingetragen von traxer (1009)
am 15.09.2009 - 11:07 Uhr
  1. Packe einen Dummy-Link in das Menü, damit der Block angezeigt wird.
  2. Schau dir mit dem Theme-Developer an, wie du das Template benennen musst. Du suchst nach block-[irgendwas].tpl.php.
  3. Falls in deinem Theme noch keine block.tpl.php vorhanden ist, dann kopiere eine dort hin. Falls dein Theme auf ein Basis-Theme aufbaut, dann kopiere die block.tpl.php des Basis-Themes, ansonsten kopiere modules/system/block.tpl.php.
  4. Kopiere die block.tpl.php deines Themes in eine Datei mit dem Namen, den du durch den Theme-Developer herausgefunden hast.
  5. Passe diese Kopie deinen Bedürfnissen an.
  6. Entferne den Dummy-Link aus dem Menü.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

traxer schrieb Packe einen

Eingetragen von braun (40)
am 15.09.2009 - 11:07 Uhr
traxer schrieb
  1. Packe einen Dummy-Link in das Menü, damit der Block angezeigt wird.
  2. Schau dir mit dem Theme-Developer an, wie du das Template benennen musst. Du suchst nach block-[irgendwas].tpl.php.
  3. Falls in deinem Theme noch keine block.tpl.php vorhanden ist, dann kopiere eine dort hin. Falls dein Theme auf ein Basis-Theme aufbaut, dann nimm die block.tpl.php des Basis-Themes, ansonsten modules/system/block.tpl.php.
  4. Kopiere die block.tpl.php deines Themes in eine Datei mit dem Namen, den du durch den Theme-Developer herausgefunden hast.
  5. Passe diese Kopie deinen Bedürfnissen an.
  6. Entferne den Dummy-Link aus dem Menü.

Danke für deine Mühe. Das meine ich aber nicht. Klar ich muss einen neuen Block machen. Mir geht es aber um das Innere. Hier wird halt der Block-Content durch $block->content gebildet. Und genau dies muss ich eben ersetzen. Deshalb hatte ich nach den Methoden gefragt, die da aufgerufen werden :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Methoden?

Eingetragen von Nicolai Schwarz (1071)
am 15.09.2009 - 12:27 Uhr

Sind die Methoden nicht egal? Ich gehe da immer recht simpel vor. Abfragen, ob im Content ein <li> steht. Wenn ja, ist es eine Liste, dann den Content ausgeben. Wenn nein, eben den alternativen Text statt des Content ausgeben.
Ich weiß nicht, ob <li> ausreicht, um es zu prüfen. Kommt eben darauf an, was der Block an sich ausgibt. Vielleicht reicht es prüfen, ob der Content leer ist oder nicht.

--
textformer mediendesign | Webkrauts

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nicolai Schwarz

Eingetragen von braun (40)
am 15.09.2009 - 14:45 Uhr
Nicolai Schwarz schrieb

Sind die Methoden nicht egal? Ich gehe da immer recht simpel vor. Abfragen, ob im Content ein <li> steht. Wenn ja, ist es eine Liste, dann den Content ausgeben. Wenn nein, eben den alternativen Text statt des Content ausgeben.
Ich weiß nicht, ob <li> ausreicht, um es zu prüfen. Kommt eben darauf an, was der Block an sich ausgibt. Vielleicht reicht es prüfen, ob der Content leer ist oder nicht.

--
textformer mediendesign | Webkrauts

Ich stimme dir zu, warum lange Wege gehen. Aber ich bin dann nicht mehr serverseitig, sondern eben clientseitig unterwegs, was ich so gut es geht, immer vermeiden möchte. du meinst ich soll so etwas in etwa machen:
http://www.drupalcenter.de/node/21398

  • Anmelden oder Registrieren um Kommentare zu schreiben

P.S.

Eingetragen von braun (40)
am 15.09.2009 - 14:53 Uhr

Nervig ist auch, dass Drupal die Links ständig alphabetisch sortiert. Man kann es zwar nachträglich verschieben, nur der Sinn von CMS ist die Automation. So wie es jetzt ist, muss ich nach Anlegen eines Produktes noch viel Handarbeit machen. Gefällt mir noch nicht so ganz. Aber es gibt auch viel schlimmeres auf der Welt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nix clientseitig

Eingetragen von Nicolai Schwarz (1071)
am 15.09.2009 - 15:00 Uhr

Nö. Bzw: Vielleicht reden wir aneinander vorbei? Ich meine, du änderst den Block per php bei der Ausgabe. Das passiert rein auf dem Server. Ich rede nicht davon, den Block per JavaScript zu analysieren. Das ginge natürlich auch, ist aber Blödsinn (weil es beim Client läuft, weil dort JS evlt. abgeschaltet ist).

--
textformer mediendesign | Webkrauts

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nicolai Schwarz

Eingetragen von braun (40)
am 15.09.2009 - 15:09 Uhr
Nicolai Schwarz schrieb

Nö. Bzw: Vielleicht reden wir aneinander vorbei? Ich meine, du änderst den Block per php bei der Ausgabe. Das passiert rein auf dem Server. Ich rede nicht davon, den Block per JavaScript zu analysieren. Das ginge natürlich auch, ist aber Blödsinn (weil es beim Client läuft, weil dort JS evlt. abgeschaltet ist).

--
textformer mediendesign | Webkrauts

Ich denke auch wir reden aneinander vorbei. Du hast geschrieben zum Beispiel den Tag li abzufragen. Nur mittels php (serverseitig) kann man keine Ausgabe nach li durchsuchen, weil Sie noch nicht beim Client ist. Wenn es jetzt eine Methode wie $block-Content gibt, kann man natürlich die Rückgabe (also die String-Literale) durchsuchen. Aber wieso so umständlich. Drupal muss doch irgendwo eine Methode haben, wo es die Links aus der DB holt, nach Alphabet sortiert und dann mittels Tags und print ausgibt. Und genau diese suche ich, damit ich Sie überschreiben kann.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sicher doch

Eingetragen von Nicolai Schwarz (1071)
am 15.09.2009 - 15:28 Uhr

Natürlich kannst du mit php prüfen, ob ein li ausgegeben wird. Einfach den Content im Block auf den String prüfen.
if(strpos($string,"String")!==false) echo "String ist enthalten";

Dauert nur ein paar Millisekunden, und ist zumindest für mich sehr viel einfacher als die entsprechende Drupal-Methode zu suchen und zu überschreiben. Du brauchst es doch nur an der einen Stelle, oder?

Wenn du es unbedingt per Funktion überschreiben willst, geht es vermutlich hiermit: http://api.drupal.org/api/function/theme_blocks

--
textformer mediendesign | Webkrauts

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nicolai Schwarz

Eingetragen von braun (40)
am 15.09.2009 - 16:07 Uhr
Nicolai Schwarz schrieb

Natürlich kannst du mit php prüfen, ob ein li ausgegeben wird. Einfach den Content im Block auf den String prüfen.
if(strpos($string,"String")!==false) echo "String ist enthalten";

Dauert nur ein paar Millisekunden, und ist zumindest für mich sehr viel einfacher als die entsprechende Drupal-Methode zu suchen und zu überschreiben. Du brauchst es doch nur an der einen Stelle, oder?

Wenn du es unbedingt per Funktion überschreiben willst, geht es vermutlich hiermit: http://api.drupal.org/api/function/theme_blocks

--
textformer mediendesign | Webkrauts

Ah, ok die Funktion hatte ich nicht auf dem Schirm. Kalr, hast Recht, dass ist deutlich einfacher.

  • Anmelden oder Registrieren um Kommentare zu schreiben

block.tpl.php überschreiben funktioniert nicht

Eingetragen von traxer (1009)
am 15.09.2009 - 16:33 Uhr

Das mit dem eigenen Block-Template wird nicht funktionieren. Die Funktion block_list, die von theme_blocks aufgerufen wird, überspringt bereits leere Blöcke, so daß theme('block', $block) auf leeren Blöcken überhaupt nicht ausgeführt wird.

Es bleiben wohl wirklich nur die Möglichkeiten, theme_blocks unter Umgehung von block_list zu überschreiben, oder theme_menu_tree zu überschreiben.

Sorry für die Unannehmlichkeiten.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

traxer schrieb Das mit dem

Eingetragen von braun (40)
am 15.09.2009 - 16:41 Uhr
traxer schrieb

Das mit dem eigenen Block-Template wird nicht funktionieren. Die Funktion block_list, die von theme_blocks aufgerufen wird, überspringt bereits leere Blöcke, so daß theme('block', $block) auf leeren Blöcken überhaupt nicht ausgeführt wird.

Es bleiben wohl wirklich nur die Möglichkeiten, theme_blocks unter Umgehung von block_list zu überschreiben, oder theme_menu_tree zu überschreiben.

Sorry für die Unannehmlichkeiten.

--
XING

Kein Problem. Habe ich auch eben festgestellt, dass Block-Content nix lieferte. Ich zweifelte schon :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Whoops

Eingetragen von Nicolai Schwarz (1071)
am 15.09.2009 - 17:04 Uhr
Zitat:

Das mit dem eigenen Block-Template wird nicht funktionieren. Die Funktion block_list, die von theme_blocks aufgerufen wird, überspringt bereits leere Blöcke, so daß theme('block', $block) auf leeren Blöcken überhaupt nicht ausgeführt wird.

Whoops. Dann sorry für die falsche Fährte.

--
textformer mediendesign | Webkrauts

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

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