Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] dynamische Views als Blockanzeige

Eingetragen von tomx (771)
am 12.03.2010 - 17:37 Uhr in
  • Views
  • Drupal 6.x

Wie zeigt man einen Block dynamisch an?
Ja, mit Views arguments. Aber es geht nicht für Blocks, oder doch?

Ein Block hat keine URL

Es soll ein Block abhängig von einem Begriff angezeigt werden.
Argument im view ist: Taxonomie: Begriff + filter/% (welcher mit dem pathautopfad für Begriffe entspricht)

Wie kann also ein view als Block angezeigt werden?

‹ Gelöst: CCK Feld - nur einmalig editierbar. views und any ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

...Du kannst...

Eingetragen von friedrich (64)
am 12.03.2010 - 21:51 Uhr

...den View bei der Erstellung bzw. Bearbeitung als Block ausgeben, gehst dann in die Blockverwaltung (...admin/build/block) und setzt ihn an die gewünschte Stelle.

Oder Du kreierst zuerst den Block und schreibst dann (Eingabeformat PHP) hinein:

<?php
print views_embed_view($name, $display_id = 'default')
?>

...wobei "name" der Name Deines Views ist.

Biel Erfolg und viele Grüße,
Friedrich

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es klappt beides nicht. Der

Eingetragen von tomx (771)
am 12.03.2010 - 23:26 Uhr

Es klappt beides nicht. Der Block wird nicht sichtbar...

Nur noch mal zur Klärung:
Ist es denn prinzipiell möglich einen Block trotz fehlender Pfadangabe abhängig von Term ID anzuzeigen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

...nur mal...

Eingetragen von friedrich (64)
am 12.03.2010 - 23:50 Uhr

...zur Sicherheit: als page lässt sich Dein view darstellen, oder?

Viele Grüße,
Friedrich

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja. Aber dieser kann ja nur

Eingetragen von tomx (771)
am 13.03.2010 - 00:05 Uhr

Ja.
Aber dieser kann ja nur als Seite dargestellt werden.

Block geht auch dynamisch trotz fehlendem SeitenURL?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie schon oben gesagt wurde,

Eingetragen von wla (9461)
am 14.03.2010 - 22:20 Uhr

Wie schon oben gesagt wurde, geht es am einfachsten mit einem Block, in den Du mittels PHP-Code den View einsetzt:

  print views_embed_view ('name-des-views', 'display-id', arg1, arg2, ......);

Der Trick liegt in der Diplay-ID. Views nummeriert einfach alle Seiten-Displays durch und alle Block-Displays durch also page-1, page_2, .... und block-1, block_2..... Die Nummern hinter dem Typ hängen nur von der Art des Displays ab. Es kan also für einen View page_1 und block_1 geben.
Die Sichtbarkeit des Blocks kannst Du dann zum Beispiel über den Aufruf-Pfad steuern.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

wla schrieb Wie schon oben

Eingetragen von tomx (771)
am 16.03.2010 - 12:42 Uhr
wla schrieb

Wie schon oben gesagt wurde, geht es am einfachsten mit einem Block, in den Du mittels PHP-Code den View einsetzt:


Zitat:

  print views_embed_view ('name-des-views', 'display-id', arg1, arg2, ......);

Müssen den arg1, arg2... angegeben werden? Sie sind doch im view blog bereits definiert.
Und wie müssten sie aussehen wenn z.B 241 das Argument von taxonomy/term/241 ist?
Muss im view Block das Argument angegeben werden oder im code oder bei beiden?
Und sollte der Block auch angezeigt werden wenn nur die Begriffs-id als Argument definiert ist? Also ohne den php code. Sind obiger phpcode und der viewsblock Alternativen oder bedingen sie einander und in welcher Form?

Ich frage das, weil mir das Prinzip nicht 100% klar ist und in keiner Variante ein Block sichtbar wird.

So sieht der codeblock aus, der ausgegeben werden sollte, aber nicht wird:

<?php
$view
->taxonomie
$view
= stdClass Object (
     [
db_table] => [views_view]
     [
base_table] => [node]
     [
args] => array (
     )
     [
use_ajax] => []
     [
result] => array (
     )
     [
pager] => array (
         [
use_pager] => []
         [
items_per_page] => [10]
         [
element] => [0]
         [
offset] => [0]
         [
current_page] => [0]
     )
     [
old_view] => array (
         [
0] => []
     )
     [
vid] => [38]
     [
name] => [taxonomie]
     [
description] => []
     [
tag] => []
     [
view_php] => []
     [
is_cacheable] => [0]
     [
display] => array (
         [default] =>
stdClass (
         )
         [
page_1] => stdClass (
         )
         [
page_2] => stdClass (
         )
         [
node_content_1] => stdClass (
         )
         [
block_1] => stdClass (
         )
     )
     [
type] => [Normal]
     [
loaded] => [1]
     [
executed] => []
     [
built] => []
     [
build_info] => array (
     )
     [
attachment_before] => []
     [
attachment_after] => []
     [
current_display] => [default]
     [
display_handler] => stdClass (
     )
     [
preview] => [1]
);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

...sorry...

Eingetragen von friedrich (64)
am 16.03.2010 - 12:51 Uhr

...daß ich nochmal simpel nachfrage: Lässt sich dein Block denn generell darstellen (...schieb mal den Code beiseite und schreib irgendwas rein)? Oder ist evtl. irgendwas mit den Blockeinstellungen?

Viele Grüße,
Friedrich

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du über views_embed_view

Eingetragen von wla (9461)
am 16.03.2010 - 13:03 Uhr

Wenn Du über views_embed_view einen View aufrufst, weiß der View nichts von der Stelle, wo er erscheint. Also kann er auch keine Argumente aus der URL beziehen, wie das sonst der Fall ist. Also mußt Du die Argumente beim Aufruf mitgeben. Dafür kannst Du auf diese Weise auch ein Block-Display eines Views aufrufen und die Parameter mitgeben.
Der PHP-Code mit views_embed_view ist der einzige Eintrag in dem neuen Block (den View hast Du ja bereits vorher definiert). Das bewirkt, daß der View in diesem Block aufgerufen wird (egal, ob der als Seiten- oder Block-Display definiert wurde). Das Eingabeformat für den Block muß dann natürlich auf PHP gestellt werden.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

friedrich schrieb

Eingetragen von tomx (771)
am 16.03.2010 - 13:25 Uhr
friedrich schrieb

Lässt sich dein Block denn generell darstellen ?

ja, nur ohne den Inhalt des view blocks

  • Anmelden oder Registrieren um Kommentare zu schreiben

Default Argument

Eingetragen von tiger (415)
am 16.03.2010 - 13:26 Uhr

Du kannst ein Default Argument setzen, wenn keine URL vorhanden ist. Da kannst du dann php Code eingeben oder eine node id auslesen etc.

  • Anmelden oder Registrieren um Kommentare zu schreiben

tiger schrieb Du kannst ein

Eingetragen von tomx (771)
am 16.03.2010 - 15:21 Uhr
tiger schrieb

Du kannst ein Default Argument setzen, wenn keine URL vorhanden ist. Da kannst du dann php Code eingeben oder eine node id auslesen etc.

Wie und wo setz man ein Default Argument?
Im views block als "fester Eintrag" unter Begriffs ID?
Wie sähe das Argument dann aus???

  • Anmelden oder Registrieren um Kommentare zu schreiben

Im View bei Deinem

Eingetragen von wla (9461)
am 16.03.2010 - 15:49 Uhr

Im View bei Deinem Argument
Dort: was tun, wenn kein Argument angegeben ist => Standard Argument bereitstellen, über PHP-Code
Jetzt gibt es verschiedene Möglichkeiten, je nach Argument. Mußt Du hier im Forum mal die Suche bemühen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mühsam ernährt sich das

Eingetragen von tomx (771)
am 16.03.2010 - 18:26 Uhr

Mühsam ernährt sich das Eichhörnchen...

Ich komme der Sache näher.
Wenn ich nur als Standartargument "Festern Eintrag" auswählen und in diesen eine Beispiel Begriffs ID eintrage erscheint der gewünsche Eintrag.
Die Beispiel ID ist die term id von taxonomy/term/241, also 241 als "Fester Eintrag".

Diese soll nun dynamisch sein.
Dann sollte doch 241 als arg(2) übergeben werden.

Ich habe verschiedene Argumente ausprobiert und so über geben:

<?php
$term
= arg(1);
return
$term;
?>

Es wird nicht das richtige Argument übergeben arg(0)-arg(2) und args[0]-args[2] habe ich probiert.
Wie bekomme ich die zahl aus taxonomy/term/241?
Ein Alias dazu besteht auch.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Fast

Eingetragen von wla (9461)
am 16.03.2010 - 19:02 Uhr

Das ist hier eine "path-alias". Da geht das mit dem Argument etwas anders:

$path = drupal_get_path_alias($_GET['q']); //get alias of URL
$path = explode('/', $path); //break path into an array
if ($path[0] == 'taxonomy' && $path[1] == 'term' && is_numeric(path[2])) {
    return $path[2];
}

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den

Eingetragen von tomx (771)
am 16.03.2010 - 19:55 Uhr

Danke für den Beispielcode.

Ich habe ihn als PHP-Argumentcode: eingefügt. Aber das Ergebnis bleibt gleich. Es wird etwas angezeigt was mit dem gewünschten argument nichts zu tun hat.
Wie kann ich kontrollieren was in den Argumenten steht, sprich debuggen, variablen/arrays ausgeben?
Ich verzweifle langsam...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Land in Sicht... Dieser code

Eingetragen von tomx (771)
am 17.03.2010 - 00:12 Uhr

Land in Sicht...

Dieser code erzeugt das gewünschte Ergebnis, eingefügt in einen separaten Block.

<?php
print views_embed_view('taxonomie', $display_id = 'block_1',arg(2));
?>

Der block view "taxonomie", "block_1" wurde vorher erzeugt und als Argument die Begriffs ID ("Ansicht ausblenden") übergeben.

Wie bekommt man den Block nun angezeigt ohne zusätzlichen code im "manuellen" Block, sprich wie kann arg(2) als Standardargument als
PHP-Argumentcode über geben werden?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also nochmals

Eingetragen von tiger (415)
am 17.03.2010 - 08:19 Uhr

Argument bearbeiten, bei was wenn keine Resultate vorhanden sind, 'Standardargument zu Verfügung stellen' auswählen, dann php Code und dort arg(2) eingeben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

tiger schrieb Argument

Eingetragen von tomx (771)
am 17.03.2010 - 11:34 Uhr
tiger schrieb

Argument bearbeiten, bei was wenn keine Resultate vorhanden sind, 'Standardargument zu Verfügung stellen' auswählen, dann php Code und dort arg(2) eingeben.

Ich hatte verschiedenes probiert, daher meine Frage.

Es klappt mit return arg(2); im php Feld als Standardargument.
DANKE für Eure Tipps.

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20460

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

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