Abfragen-Indizes
am 14.10.2010 - 12:34 Uhr in
Hallo nochmal,
ich komme damit einfach nicht weiter: Mein Ziel ist es aus einer Views Abfrage (die nur Titel und Textkörper) abfragt einen Block zu generieren, der als Blocktitel den entsprechenden Titel der abgefragten Node anzeigt. Jetzt bin ich schon soweit, dass ich dafür ein neues Template generieren muss. Der Name dessen muss lauten: 'block-views.tpl.php' - wenn ich eine Datei an dem entsprechenden Platz auf dem Server so nenne, greift er auch auf diese zu. Das funktioniert also.
Jetzt brauche ich im Prinzip nur noch den Inhalt dieser 'block-views.tpl.php'. Wenn ich mir den Inhalt der 'block.tpl.php' anschaue, sehe ich folgendes (Auszug des wie ich denke relevanten Teils):
<?php if($block->subject) : ?>
<div class="block_title">
<?php print $block->subject ?>
</div>
<?php endif; ?>
<div class="block_content">
<?php print $block->content ?>
</div>
Nun möchte ich, dass dort statt <?php
print $block->subject
?>
Und statt <?php
print $block->content
?>
Ich habe schon den Hinweis bekommen, dass ich unter View ->bearbeiten->Theme:Information alle wichtigen Daten bekomme. Aber ich muss leider sagen, dass ich mich da nicht so recht zurecht finde. Das einzige was ich rausgefunden habe, ist, dass $rows die ganze Views abfrage enthält. Aber welche Indizes werden verwendet? Oder wo genau kann ich die finden? Und was konkret muss ich im Template schreiben, um diese verwenden zu können?
Sachen wie $rows[title] hab ich schon versucht - passiert nichts
Ich hoffe, ihr könnt mir helfen. So langsam verzweifle ich.
Liebe Grüße,
y149
- Anmelden oder Registrieren um Kommentare zu schreiben
Du bist schon mal auf einem
am 18.10.2010 - 19:14 Uhr
Du bist schon mal auf einem guten Weg. Die Views Theme Information gibt dir die Möglichkeit entsprechende Views Templates für jeden Teil deiner View - angefangen vom Header/Footer bis zu den einzelnen Feldern zu erstellen.
Je nach "Tiefe" - sprich Theme Ebene im View gibt es neben der normalen Contentausgabe dann auch ein Array mit allen Werten des Views.
Die Inhalte ( deine gesuchten Indizes ) des $rows-Arrays kannst du dir mithilfe des PHP-Befehls print_r anzeigen lassen:
<?php
print_r($rows);
?>
SteffenR
Wo muss ich diesen Befehl
am 18.10.2010 - 20:53 Uhr
Wo muss ich diesen Befehl eingeben? In welche Datei? Oder soll ich eine erstellen und wo muss die dann hin?
Wenn ich den in eine block-views.tpl.php eingeben, bekomme ich einen Fehler.
Du müsstest den Befehl in
am 18.10.2010 - 21:23 Uhr
Du müsstest den Befehl in dein entsprechendes Views Template eingeben. Im Bereich Theme Information kannst du dir den Aufbau der entsprechenden Templates anzeigen lassen - inkl. einer Dokumentation der Variablen, die verwendet werden können ( hier würdest du auch Informationen zu $rows Array finden )..
Was für einen Fehler bekommst du denn ?
Zitat: syntax error,
am 18.10.2010 - 21:34 Uhr
syntax error, unexpected T_VARIABLE
Nochmal ganz von Anfang: Muss ich insgesamt MEHR ALS EINE Datei erstellen? Oder reicht es aus, wenn ich im Ordner themes/mein-aktuell-gewaehltes-template/ eine Datei mit block-views.tpl.php erstelle? Und was muss in so eine Datei rein außer:
<div>
Abfrage titel
</div>
<div>
Abfrage textkörper
</div>
Diesen Thread hier jetzt um
am 18.10.2010 - 21:48 Uhr
Diesen Thread hier jetzt um eine komplette Beschreibung zum Thema "Wie theme ich Views 2" halte ich gerade für wenig sinnvoll.
Hier ein paar Quellen, die dir auf jeden Fall weiterhelfen:
http://www.group42.ca/theming_views_2_the_basics
http://www.drupalcenter.de/handbuch/views
Views-Theming kann manchmal dazu ausarten recht viele Dateien fürs Theming anzulegen - dies hängt ganz vom Anwendungsfall ab bzw. von deinem Bedürfnis nach Kontrolle über den erzeugten HTML Code.
SteffenR
Danke für die Tipps, ich hab
am 19.10.2010 - 08:48 Uhr
Danke für die Tipps,
ich hab grad die alte Datei gefunden, die ich im Prinzip ja einfach nur "einsetzen" muss.
Der Code ist folgender:
<?php
// $Id: block.tpl.php,v 1.1 2008/10/01 03:26:19 jwolf Exp $
$llCustomList = false;
if(strpos($block->content,"CustomNewsList")!==false){
$llCustomList = true;
for($i=0;$i<3;$i++){
print_block($block_zebra,$block->subject,$block->content);
}
}else{
print_block($block_zebra,$block->subject,$block->content);
}
if(!function_exists("print_block")){
}
function print_block($zebra,$subject,$content){
$text = "";
$text = trim('
<div class="block_wrapper '.$zebra.'">
<div class="block_title">'.$subject.'</div>
<div class="block_content">
'.$content.'
</div>
</div>
');
print $text;
}
?>
<!-- start block.tpl.php -->
<!-- /end block.tpl.php -->
Fehler:
Fatal error: Cannot redeclare print_block() (previously declared in block-views.tpl.php:16) in /block-views.tpl.php on line 30
was hat das zu bedeuten?
Die schließende geschweifte
am 19.10.2010 - 09:52 Uhr
Die schließende geschweifte Klammer nach der Abfrage
if(!function_exists("print_block")){
steht falsch. Sie steht direkt in der nächsten Zeile, muß aber vor das schließende ?>.Beste Grüße
Werner
Du kannst nicht einfach eine
am 19.10.2010 - 09:57 Uhr
Du kannst nicht einfach eine "normale" block.tpl.php für die Darstellung in einem View verwenden. Schau dir mal die Templates an, die dir unter dem Punkt Theme Information zur Verfügung gestellt werden.
Hier kannst du auch ganz einfach über einen Klick auf den Link vor den Templatevorschlägen dir den Aufbau des entsprechenden Views-Templates anzeigen lassen.
Screenshots der entsprechenden Views Einstellungen:
mögliche Templates
Quellcode der Views Templatedatei
Sinnvoll wäre vlt. auch einmal ein Blick ins Handbuch - vom reinen Rumprobieren kommt man da nicht wirklich weiter..
SteffenR