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

[gelöst] Blocksichtbarkeit im Artikel auswählen.

Eingetragen von sklausing (288)
am 19.05.2009 - 11:47 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Ich habe mehrere Blöcke erstellt die nur auf bestimmten Seiten sichtbar sein sollen.
Wenn ich nun einen neuen Artikel erstelle, dann könnte ich natürlich jedesmal in die jeweilige Konfiguration des Blockes gehen und die Seite eintragen.
Schöner wäre es natürlich wenn ich schon bei der Erstellung eines Artikels eine tickbox hätte welche die Sichtbarkeit des Blockes regeln könnte.
So haben zum Beispiel alle Unterseiten eines Buches die gleichen Blöcke sichtbar, aber jedes Buch eben einen anderen Block.

Hat jemand einen Ansatz für mich wie ich das regeln könnte? Oder gibt es dafür gar ein Modul was dies regeln kann?

Mein theme basiert auf Garland. Kann ich das in irgendeiner *.tpl.php regeln und wenn ja mit welchen Variablen.

‹ session.use_trans_sid bei abgeschalteten Cookies [gelöst] eingestellte Startseite wird nicht angezeigt, stattdessen wird user/x angezeigt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Regelung über Taxomy möglich?

Eingetragen von sklausing (288)
am 19.05.2009 - 12:29 Uhr

Ich hab da noch eine Idee, weiß aber nicth ob sich das umsetzen lässt.
Kann man die Sichtbarkeit eines Blockes auch von Taxomy abhängig machen? Dann könnte ich ja eine eigene Taxomie für die Blöcke erstellen. Wird also ein Artikel mit Taxomy "Block1" aufgerufen, dann wird der Block1 auch angezeigt. Sonst nicht.

Allerdings ist mir nicht ganz klar was passiert wenn eine Seite mehrere Artikel enthält deren Taxomy sich widersprechen. Es ist halt nur so ein Ansatz für eine Idee.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bordmittel verwenden.

Eingetragen von quiptime (4972)
am 19.05.2009 - 12:52 Uhr

Bordmittel verwenden.

Meine Idee geht davon aus das Drupal standardmaessig Bloecke nicht anzeigt wenn sie keinen Inhalt haben.

Wenn ein View einen Block generiert kann man diesem View als Filter ein Feld geben: Das Feld heisst beispielsweise "Block anzeigen"

Mit CCK erstellst Du ein Select-Feld: 1|Block anzeigen, 0|Block nicht anzeigen

Dieses Feld (in CCK) unter "Felder anzeigen" komplett sperren (Hidden) damit es nicht mit Nodeinhalten angezeigt wird!

Dieses Feld wird als zusaetzlicher Filter des View verwendet. Der Filter Operator:

"ist gleich mit" 1

steuert ob der Block Inhalt bekommt oder nicht.

Diesen Filter kann man in allen Block-Ansichten aller Views intergrieren.

Zusaetzlich kann man in der Sichtbarkeits-Steuerung der Blockanzeige (PHP Code) festlegen das ein Bloeck nur bei der Anzeige von Nodes angezeigt wird. Dies verhindert generell die Blockanzeige bei allen URL's die nicht dem Schema node/x entsprechen.

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

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke, das ist ein schöner

Eingetragen von sklausing (288)
am 19.05.2009 - 13:21 Uhr

Danke, das ist ein schöner Ansatz

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich habe mich jetzt mal ein

Eingetragen von sklausing (288)
am 19.05.2009 - 14:17 Uhr

ich habe mich jetzt mal ein wenig daran versucht und bei Deinem Ansatz ist mir eines unklar. Wie bringe ich views dazu nur den derzeit angezeigten Artikel abzufragen?

Einen View zu erstellen der mir eine Liste von Artikel/Seiten ausgibt die den Block angezeigt bekommmen bekomm ich ja hin. Mir fehlt nur irgendwie die Verbindung zur aktuell angezeigten Seite.

Noch einmal kurz zur Verdeutlichung:
Artikel 1 --> Block A
Artikel 2 --> Block B
usw.

Im Artikel habe ich nun ein Feld erstellt über welches ich den Block auswählen kann. Über dieses Feld kann ich mir in View auch eine Liste erstellen lassen. Nur wie bringe ich jetzt den Block A und B dazu nachzuschauen ob der gerade aufgerufene Artikel auch in der Liste stehen also die dort aufgelistete Nid ?

Mein View liefert mir mit folgender Abfrage alle Nids welche den gewünschten Block anzeigen sollen.

SELECT node.nid AS nid
FROM drupal_node node
LEFT JOIN drupal_content_type_story node_data_field_logoauswahl ON node.vid = node_data_field_logoauswahl.vid
WHERE (node_data_field_logoauswahl.field_logoauswahl_value) = ('logo_startseite')

Mein PHP ist allerdings nicht gut genug um das in eine Form zu bringen die dem Block sagt, dass er nur angezeigt werden darf wenn die Nid des Artikels der dieser Abfrage entspricht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

View Argument fuer Block-Ansicht + Views 2 Bug

Eingetragen von quiptime (4972)
am 19.05.2009 - 14:45 Uhr

Du definierst im View ein Argument.

Argumente -> Node: Beitrags-ID

In der Argument Konfiguration:

Die auszuführende Aktion, wenn das Argument nicht vorhanden ist -> Leerer Text anzeigen

Das ist wichtig. Alles andere so lassen.

In der View Live- Vorschau kann man nun testen in dem man einer Block-Ansicht die ID einer existierenden Node mit dem zusaetzlichen Feld angibt.

PS
Ja ja, das mit dem Argument funktioniert auch bei einer View Block-Ansicht - obwohl ein Block im Gegensatz zu einer Seiten-Ansicht nichts mit einer URL zu tun hat.

PS 2

Eben einen Bug entdeckt in der aktuellen Views-Version.

Den Block-Ansichten fehlt die CSS Klasse "clear-block" in der DIV die den View Block umschliesst.

Dadurch wird das Layout untereinander stehender Bloecke zerstoert.
Sprich, ein View Block "schmeisst" den Block-Titel des nachfolgenden Block.

Beseitigen kann man dies selbst in dem man der CSS Klasse "view-block-display" die Eigenschaft

.view-block-display {
  clear: both;
}

gibt.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin mal jetzt nach

Eingetragen von sklausing (288)
am 19.05.2009 - 16:07 Uhr

Ich bin mal jetzt nach Deiner Anleitung vorgegangen.
In der Datenbank habe ich 2 nodes welche den Kriterien entsprechen. Das sind die Nid 17 und Nid 65. In der Vorschau bekomme ich wenn ich diese Argumente dem Block mitgebe das gewünschte Ergebnis. Der Block wird nur angezeigt wenn eine dieser beiden IDs mitgegeben wird oder und das ist das schlimme, wenn kein Argument mitgegeben wurde. Dann zeigt er mir 65 und 17 als Ergebnis.

Wenn ich aber diesen Block nun in die Seite einbaue, funktioniert das nicht. Der Block zeigt mir als Ergebnis 65 und 17 an egal auf welcher Seite ich bin. Genauso wie wenn ich in der Vorschau keine Argumente mitgebe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Richtig lesen:

Eingetragen von quiptime (4972)
am 19.05.2009 - 16:41 Uhr

Richtig lesen:

quiptime schrieb

In der Argument Konfiguration:

Die auszuführende Aktion, wenn das Argument nicht vorhanden ist -> Leerer Text anzeigen

Das ist wichtig. Alles andere so lassen.

Wenn Du das nicht machst passiert genau das was gerade Dein Problem ist.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

genau das scheint ja das

Eingetragen von sklausing (288)
am 19.05.2009 - 17:05 Uhr

genau das scheint ja das Problem zu sein. Irgendwie erfährt der Block nicht von dem Argument oder findet es nicht vor!
In der Vorschau mit übergebenen Argument im Views funktioniert alles einwandfrei nur wenn ich den Block in einen Bereich einfüge um ihn anzeigen zu lassen funktioniert es nicht.
Auf allen Seiten wird das gleiche Ergebnis angezeigt.
Es liegt auch nicht an meinem abgewandelten Garland theme. Wenn ich Garland als Original einstelle, dann geht es auch nicht, bzw habe ich das gleiche Ergebnis.

  • Anmelden oder Registrieren um Kommentare zu schreiben

views_embed_view() - viele Wege führen nach Rom

Eingetragen von quiptime (4972)
am 19.05.2009 - 17:38 Uhr

Ich habe eben ein geaendertes Szenario fuer den Block in der Block-Admistration getestet. Es funktioniert.

Neuen Block erstellen. Keinen Blocktitel festlegen. Als Inhalt, auf PHP Code umschalten, folgendes eingeben:

<?php
print views_embed_view('Testblock', 'block_1', array(arg(1)));
?>

  • Testblock <- Der Name des View
  • block_1 <- Das ist die Block-Ansicht des View
  • array(arg(1)) <- das Argument der URL an den View uebergeben.

Nun noch im View den Titel fuer den Block bereitstellen.

In der View-Ansicht -> Kopfbereich -> Eingabeformat -> Full HTML

Als Inhalt:

<h2 class="title">Test Node-Block</h2>

Nun den neu erstellten Block in einer Sidebar aktivieren.

Edit

Warum der normal verwendete Views-Block nicht das macht was er soll (nichts anzeigen wenn Argument leer) weiss ich nicht. Erstaunlich ist, das die Live-Vorschau im View dies aber macht.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auf diese Art und Weise

Eingetragen von sklausing (288)
am 19.05.2009 - 18:06 Uhr

Auf diese Art und Weise klappt es!
Super, Du hast mir ein langes WE gerettet.

Sollte ich diese Argumente nun in den durch Views erstellten Block eintragen oder muss ich immer dieses Block in Block Gebilde nutzen?

Wenn ich wüßte wo ich ansetzen könnte würde ich den Entwicklern von Views ja mal ne Info zukommen lassen. Vielleicht ist es ja auch eine Wechselwirkung mit einem anderen Modul.
Ging es bei Dir auch nicht, oder war dies nur eine Erscheinung auf meiner Seite?

  • Anmelden oder Registrieren um Kommentare zu schreiben

so viel ich weiß sollte das

Eingetragen von dawehner (2639)
am 19.05.2009 - 18:36 Uhr

so viel ich weiß sollte das auf jeden fall per argument validation code gehen, aber eigentlich auch so
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie? Was meinst Du mit dieser Frage?

Eingetragen von quiptime (4972)
am 19.05.2009 - 18:59 Uhr
Zitat:

Sollte ich diese Argumente nun in den durch Views erstellten Block eintragen oder muss ich immer dieses Block in Block Gebilde nutzen?

Wie? Was meinst Du mit dieser Frage?

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe mir überlegt wenn

Eingetragen von sklausing (288)
am 19.05.2009 - 20:38 Uhr

Ich habe mir überlegt wenn ich

<?php
print views_embed_view('Testblock', 'block_1', array(arg(1)));
?>

Bei dem Block der durch Views erstellt wird extra noch einmal unter Blockinhalt eintrage sollte doch auch dieser Block gehen. Aber ich hab grad gesehen, dass dort das Feld Blockinhalt fehlt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?phpprint

Eingetragen von sklausing (288)
am 21.05.2009 - 14:09 Uhr

<?php
print views_embed_view('Testblock', 'block_1', array(arg(1)));
?>
Kann ich auch mehrere Views in einen Block einfügen?
Also:
<?php
print views_embed_view('Testblock', 'block_1', 'block_2' ,'block_3' array(arg(1)));
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

nein, wenn dann musste

Eingetragen von dawehner (2639)
am 21.05.2009 - 15:00 Uhr

nein, wenn dann musste mehrmals

<?php
print views_embed_view('Testblock', 'block_1', array(arg(1)));
print
views_embed_view('Testblock', 'block_2', array(arg(1)));
print
views_embed_view('Testblock', 'block_3', array(arg(1)));
?>

Oder alternativ verwendest du mal Views attachments
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für Deine Hilfe beim

Eingetragen von sklausing (288)
am 21.05.2009 - 16:13 Uhr

Danke für Deine Hilfe beim Code. Hier lernt man wirklich ständig dazu!

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