[Gelöst] blog-node.tpl stylen und auf einzelne Elemte zugreifen (ebenso für andere Darstellungen)
am 07.02.2009 - 13:43 Uhr in
Da bin ich wieder, hehe.
Ich bin gerade dabei die Blogansicht zu designen. Dafür habe ich die node.tpl.php kopiert und in node-blog.tpl.php umbenannt. Klappt auch.
Das Problem was ich jetzt habe ist, dass ich nicht auf die einzelnen Elemente zugreifen kann bzw. nicht weiß wie ich darauf zugreifen. Alles wichtige steht z. B. im content. Den kann ich ja ausgeben lassen aber ich komme darüber nicht an den Inhalt dran.
Die Ausgabe im Quelltext schaut so aus:
<p>Ich bin nur ein kleiner Text, der zeigen soll wie die Seite mit Inhalt aussieht. Habe ich schon gesagt, dass ich nur ein Anrisstext bin?</p>
<div class="field field-type-image field-field-newspics">
<div class="field-items">
<div class="field-item odd">
<a href="/auto/linkname" class="imagefield imagefield-nodelink imagefield-field_newspics"><img src="http://localhost/auto/sites/default/files/newsbilder/autonewsbild.jpg" alt="Bildname" title="Bildname" width="109" height="68" class="imagefield imagefield-field_newspics" /></a>
</div>
</div>
</div>
<div class="meta">
<ul class="links inline"><li class="blog_usernames_blog first"><a href="/auto/blog/1" title="Neueste Blogeinträge von mir lesen.">Weblog von mir</a></li>
<li class="comment_add"><a href="/auto/comment/reply/11#comment-form" title="Dieser Seite einen neuen Kommentar hinzufügen.">Neuen Kommentar schreiben</a></li>
<li class="node_read_more last"><a href="/auto/linkname" title="Titletaginhalt">Weiterlesen</a></li>
</ul>
<span class="clear"></span>
</div>
Dazu sei gesagt, dass ich mit CCK nen FileField Image hinzugefügt habe. Die Ausgabe möchte ich jetzt eigentlich so gestalten wie ich will und nicht wie die vorgegeben ist, inkl. des unnötigen Quellcodes bei der Bildausgabe.
Das steckt aber alles in <?php
print $content
?>
Bloß wie kann ich geziehlt auf die einzelnen Elemente zugreifen oder muss das separat programmiert werden und wenn ja, direkt in der Datei? Ich kann es mir nicht so recht vorstellen, da die Funktionalität ja schon vorgegeben ist, ich möchte die halt nur ins Template übernehmen und dann anpassen.
Optimal wäre, wenn ich die einzelnen Elemente so ansprechen könnte:
$title "Ausgabe des Titels"
$text = "Ausgabe des reinen Textes der geschrieben wurde"
$pic = "Bildpfadangabe bzw. direkte Ausgabe des Bildes, so wie es jetzt ist"
$linkcomment = "Link zu den Kommentaren"
usw.
Das wäre halt eine gute Möglichkeit, geht sowas? Wenn ja, geht das für alle Bereiche? Jetzt bin ich ja am Blog dran, danach kommt aber bestimmt wieder was anderes usw.
Ich wüsste sonst jetzt nicht, wie ich es "ohne die Core-Dateien anzufassen" so machen kann, dass ich das beliebig positioniere (links das Bild, rechts die News, dann da wo ich will der Link zu den Kommentaren usw.)
Ich habe z. B. rechts auch die Blognews in einem Block, da ist ja nur eine UL-Liste mit dem Titel als Link. Ich möchte es aber so ändern, dass das Thumbnail-Bild dort dargestellt wird und ich zudem noch eine Kurzbeschreibung dort habe. Könnte ich auf einzelne Elemnte zugreifen, wäre das flux gemacht und wenn es nur darum geht ein paar Queries nachzubearbeiten um das zusätzliche auszulesen, auch kein Thema (solange ich finde, wo die Daten stecken :D).
Schon mal danke für Tipps und Hinweise
Gruß
- Anmelden oder Registrieren um Kommentare zu schreiben
Auf keinen Fall in den Core!
am 07.02.2009 - 15:15 Uhr
Auf keinen Fall in den Core! Du musst jetzt eben nur in Deine node-blog.tpl.php einen DIV Container um "content" legen ... schon kannst du explizit per CSS auf die Elemente und Felder zugreifen ...
Für einzelne Felder ... die kannst Du auch in die node-blog.tpl.php einfügen und stellst eben bei den Feldeinstellungen des Blog-Inhaltstypes "exclude" in den Teaser- oder / und Vollansichten ein ...
Ein tolles englisches Video zu dem Thema habe ich erst in meinem "Spielplatz" eingebunden ...
Drupal 7 Screencasts in deutsch!
Das mit dem Core
am 07.02.2009 - 19:36 Uhr
habe ich verstanden, davon lass ich die Finger :-D.
Ok, ich bin jetzt die ganze Zeit schon am testen und eigentlich sollte das, was ich vorhabe klappen. Sogar der Zugriff auf die einzelnen Variablen (da ich den Quelltextwust, der da erzeugt wird, nur um ein Bild auszugeben, gerne umgehen möchte).
In stdClass Object {
steht ja wirklich alles, was ich brauche um mir das selbst zusammen zu basteln. Nur einen kleinen PHP-Tipp bräuchte ich. So sieht die Ausgabe aus:
<?php
stdClass Object
(
[nid] => 11
[type] => blog
[language] => de
[uid] => 1
[status] => 1
[created] => 1233995223
[changed] => 1233997270
[comment] => 2
[promote] => 0
[moderate] => 0
[sticky] => 0
[tnid] => 0
[translate] => 0
[vid] => 11
[revision_uid] => 1
[title] => Ich bin die tolle Überschrift
[teaser] => Hier steht der Teaser drin
[log] =>
[revision_timestamp] => 1233997270
[format] => 1
[name] => sausi
[picture] =>
[data] => a:4:{s:14:"picture_delete";s:0:"";s:14:"picture_upload";s:0:"";s:7:"contact";i:0;s:13:"form_build_id";s:37:"form-652a2bec7e16c3a26289009ad122a8c3";}
[path] => pfadzumcontent
[field_newspics] => Array
(
[0] => Array
(
[fid] => 4
[list] => 1
[data] => Array
(
[description] => bildbeschreibung
[alt] => altbeschreibung
[title] => Titlevondemding
)
[uid] => 1
<strong>[filename]</strong> => autonewsbild.jpg
[filepath] => sites/default/files/newsbilder/autonewsbild.jpg
[filemime] => image/jpeg
[filesize] => 3334
...
?>
Wie kann ich auf den Inhalt von [filename] zugreifen?
Das "field_newspics" bekomm ich ja noch so hin
<?php
print $node->field_newspics;
?>
Aber tiefer komme ich nicht, da stecken danach ja auch zwei Arrays drin.
<?php
[field_newspics] => Array
(
[0] => Array
(
?>
Also wenn ich da so die ganzen einzelnen Daten immer rausziehen kann, dann sollten sich meine Fragen erübrigt haben (für heute, hehe).
Schon einmal danke für die Antwort.
Gruß
installiere dir irgendwo mal
am 07.02.2009 - 20:17 Uhr
installiere dir irgendwo mal das modul contemplate - du mußt es nicht verwenden, um variablen einzeln anzusprechen, aber es verschafft dir einen hervorragenden überblick über variablen und syntax ...
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Jetzt gehts
am 07.02.2009 - 21:39 Uhr
mit folgendem Code:
<?php
print $node->field_newspics[0][filename];
?>
Hat es irgend einen Nachteil, wenn ich das so mache und so Stück für Stück alles damit gestalte?
Bsp, nen Pic mach ich dann so:
<img src="<?php print $node->field_newspics[0][filepath]; ?>" />
So kann ich Div-Suppe sparen und alles 100%ig so anordnen wie ich möchte. Aber das Wichtigste, ich pfusche nicht an Core-Files rum, hehe.
@Sachbearbeiter
danke für den Hinweis zum Modul
Zitat: Hat es irgend einen
am 07.02.2009 - 22:51 Uhr
Hat es irgend einen Nachteil, wenn ich das so mache und so Stück für Stück alles damit gestalte?
nein :) aber du kannst zusätzlich diese seite für infos zu sicherem code http://drupal.org/node/28984 noch durchlesen ...
und ...
<?php if ($node->field_text_example[0]['view'] > ''): ?>
<?php print $node->field_text_example[0]['view']; ?>
<?php endif; ?>
wenn du ['view'] verwendest, kannst du die ausgabe auf fieldebene schon mit einstellungen unter
http://domain.de/admin/content/node-type/example-nodetype/display steuern ...
häufig reicht das, um die aufrufe nicht unnötig fragmentieren zu müssen und eine sichere ausgabe zu erreichen ...
sg ds
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Dankeschön
am 07.02.2009 - 23:29 Uhr
das hilft mir weiter.
Dann mal sehen, wann das nächste Prob auftaucht, hehe.
Gruß