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

Block Inhalt

Eingetragen von MattenMad@drupal.org (21)
am 23.04.2008 - 13:57 Uhr in
  • Themes & Theming
  • Drupal 5.x oder neuer

Ich habe einen Block erstellt, der eine View beinhaltet. Für den Block habe ich ein Template erstellt und das funktioniert soweit. Ich kann aber nur den gesamten Inhalt des Blocks formatieren $block->content. Ist es möglich auf die einzelnen Teile des Contents separat zuzugreifen? Als Beispiel: Mein Content besteht aus Name, Bild, Titel, ... . Ich möchte diese Elemente einzeln formatieren. Bitte um Hilfe!

‹ Hilfe wo bin ich Wie arbeitet die Funktion theme(...) (in der page.tpl.php)?? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja das geht, nutze am Besten

Eingetragen von Genesis (597)
am 23.04.2008 - 14:15 Uhr

Ja das geht, nutze am Besten den mitgelieferten Wizard von Views (rechts unten bei den Ansichten). Darüber wählst du dann deinen Block aus, wählst z.B. Listenansicht, und lässt dir das Ganze anzeigen. Danach erhälst du einen Codeteil der in die template.php gehört, danach einen der als neue Datei erstellt gehört, meist in dieser Form: views-list-Deinblockname.tpl.php, zudem eine CSS-Datei bei der dir überlassen bleibt ob du sie nutzt, oder nicht.

In der views-list-Deinblockname.tpl.php findest du dann in aller Regel auch alle Felder die du dem View zugewiesen hast, und kannst sie themen und platzieren wie du willst.

Der Wizard erlaubt zudem nur Listenansichten, das kannst du aber umgehen indem zuvor erwähnten template-Teil folgendes ersetzt:

Suche:

  if ($items) {
    return theme('item_list', $items);
  }
}

Ersetze durch:

  if ($items) {
    return implode(" ",$items);
  }
}

Habe recht lange gebraucht das zu finden. :) Wenn du dazu noch Fragen hast melde dich ruhig, ist ein recht verworrenes Thema. :)

Grüße vom,

Genesis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke erstmal für die ...

Eingetragen von MattenMad@drupal.org (21)
am 23.04.2008 - 14:26 Uhr

Danke erstmal für die Hilfe, aber mein Block ist leer sobald ich die von dir angegebene Änderung mache. Muss ich da in meinem Template was ändern?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Normalerweise nicht.

Eingetragen von Genesis (597)
am 23.04.2008 - 14:54 Uhr

Normalerweise nicht. Zumindest der Titel sollte z.B. ausgegeben werden, da dieser Standard ist, geauso wie der Content als solches. Für Felder die du in CCK erstellt hast musst du noch weitere template-Dateien erstellen. Und zwar haben diese folgenden Dateinamen: field-field_deinname.tpl.php

Du musst dazu mal schauen wie genau deine Feldbezeichnungen sind. Für jedes Feld musst du eine Datei erstellen, welche folgenden Inhalt hat, und das immer den Gleichen:

<?php if (!$field_empty) : ?>
  <?php if ($label_display == 'hidden') : ?>
<?php print $label ?>:&nbsp;
  <?php endif;?>
    <?php foreach ($items as $delta => $item) :
            if (!empty(
$item['view']) || $item['view'] === "0") : ?>


                <?php if ($label_display == 'hidden') { ?>

                    <?php print $label ?>:&nbsp;
                <?php } ?>
                <?php print $item['view'] ?>

      <?php endif;
          endforeach;
?>


<?php endif; ?>

Wird dein Block denn angezeigt wenn du nichts änderst? Wo genau lässt du ihn anzeigen? Hast du die Änderungen an der template.php vorgenommen, und liegt alles im Stammverzeichnis deines Themes?

Grüße vom,

Genesis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hier mein source

Eingetragen von MattenMad@drupal.org (21)
am 23.04.2008 - 14:55 Uhr

Hier mein source von template.php:

<?php
function phptemplate_views_view_list_sidebar_view($view, $nodes, $type) {
 
$fields = _views_get_fields();

 
$taken = array();

 
// Set up the fields in nicely named chunks.
 
foreach ($view->field as $id => $field) {
   
$field_name = $field['field'];
    if (isset(
$taken[$field_name])) {
     
$field_name = $field['queryname'];
    }
   
$taken[$field_name] = true;
   
$field_names[$id] = $field_name;
  }

 
// Set up some variables that won't change.
 
$base_vars = array(
   
'view' => $view,
   
'view_type' => $type,
  );

  foreach (
$nodes as $i => $node) {
   
$vars = $base_vars;
   
$vars['node'] = $node;
   
$vars['count'] = $i;
   
$vars['stripe'] = $i % 2 ? 'even' : 'odd';
    foreach (
$view->field as $id => $field) {
     
$name = $field_names[$id];
     
$vars[$name] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
      if (isset(
$field['label'])) {
       
$vars[$name . '_label'] = $field['label'];
      }
    }
   
$items[] = _phptemplate_callback('views-list-sidebar_view', $vars);
  }
  if (
$items) {
    return
theme(" ", $items);
  }
}
?>

views-list-sidebar_view.tpl.php:

<?php
drupal_add_css
(path_to_theme() .'/views-list-sidebar_view.css');
 
?>

<?php
print $field_name_value_label
?>
<?php
print $field_name_value
?>
<?php
print $field_degree_value_label
?>
<?php
print $field_degree_value
?>
<?php
print $field_expert_image_fid_label
?>
<?php
print $field_expert_image_fid
?>

Wie gesagt, ich habe deine Änderung in Template.php durchgeführt: return theme(" ", $items);
und bekomme nur mehr einen leeren Block!

Bitte um weitere Hilfe!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mein Block wird in der

Eingetragen von MattenMad@drupal.org (21)
am 23.04.2008 - 15:02 Uhr

Mein Block wird in der rechten Sidebar angezeigt und die Änderungen habe ich in der Template.php vorgenommen. Alles liegt im Verzeichnis meines Themes.

Wie muss ich die Template Dateien benennen? block-FELDNAME.tpl.php? view-FELDNAME.tpl.php?

Ach ja, die Files habe ich mit dem Theme Designer der Views erstellt (template.php, views-list-sidebar_view.tpl.php und views-list-sidebar_view.css.

Thx

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Tempaltedateien für die

Eingetragen von Genesis (597)
am 23.04.2008 - 15:21 Uhr

Die Tempaltedateien für die Felder musst du deinen Feldern anpassen, nehmen wir mal eines als Beispiel:

field-field_degree.tpl.php

Das ist aber nur für die CCK-Felder!

Ansonsten stimmt da alles, bis auf eine Sache die ich nun erkennen würde. Der Code in der template.php wird mit

<?php
geöffnet
, und mit
?>
geschlossen, das darf aber in der template.php nicht sein, oder hast du das jetzt nur hier im Forum gemacht? Die template.php wird ganz oben mit <?php geöffnet, darf aber nicht geschlossen werden,d as passiert an anderer Stelle, also deinen Code nciht in php-tags packen.

Also gehört es so in die template.php:

function phptemplate_views_view_list_sidebar_view($view, $nodes, $type) {
  $fields = _views_get_fields();


$taken = array();


// Set up the fields in nicely named chunks.
  foreach ($view->field as $id => $field) {
    $field_name = $field['field'];
    if (isset($taken[$field_name])) {
      $field_name = $field['queryname'];
    }
    $taken[$field_name] = true;
    $field_names[$id] = $field_name;
  }


// Set up some variables that won't change.
  $base_vars = array(
    'view' => $view,
    'view_type' => $type,
  );

  foreach (
$nodes as $i => $node) {
    $vars = $base_vars;
    $vars['node'] = $node;
    $vars['count'] = $i;
    $vars['stripe'] = $i % 2 ? 'even' : 'odd';
    foreach ($view->field as $id => $field) {
      $name = $field_names[$id];
      $vars[$name] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
      if (isset($field['label'])) {
        $vars[$name . '_label'] = $field['label'];
      }
    }
    $items[] = _phptemplate_callback('views-list-sidebar_view', $vars);
  }
  if ($items) {
    return theme(" ", $items);
  }
}

Die Dateien als solches sind absolut richtig benannt!

Grüße vom,

Genesis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Den php-Code habe ich nur

Eingetragen von MattenMad@drupal.org (21)
am 23.04.2008 - 15:59 Uhr

Den php-Code habe ich nur fürs Forum mit

<?php

?>
versehen, in der Template Datei ist das ganz oben bzw. unten. Ich habe jetzt das Template field-field_degree.tpl.php mit folgendem Inhalt erstellt:

<?php
if (!$field_empty) :
?>

<?php
if ($label_display == 'hidden') :
?>

<?php
print $label
?>
: 
<?php
endif;
?>

<?php
foreach ($items as $delta => $item) :
            if (!empty(
$item['view']) || $item['view'] === "0") :
?>

<?php
if ($label_display == 'hidden') {
?>

<?php
print $label
?>
: 
<?php
}
?>

<?php
print $item['view']
?>

<?php
endif;
          endforeach;
?>

<?php
endif;
?>

die obrig beschriebenen Templates, CSS Dokumente gibts noch immer. Weiters habe ich die View auf Listenansicht (sonst klappt das mit dem Template ja nicht), aber ich bekomme nach wie vor nur den Titel des Blocks und keinen Inhalt. Das ist seit der Änderung auf return theme(" ", $items); so!

Danke für die Hilfe!

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

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 20 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