Text Zweispaltig rendern (mit Quickedit)
am 09.02.2015 - 17:26 Uhr in
Hallo,
also seit letzter Woche muss ich mich das erste Mal mit Drupal auseinander setzen - habe bis dato noch gar nicht mit Drupal gearbeitet.
Nun bin ich leider an einem Problem angekommen, das mir schon den ganzen Tag Kopfschmerzen bereitet.
Die Seite soll nachher von oben bis unten Resonsive sein - dafür benutze ich das Bootstrap-Grid.
Nun hatte ich erstmal das Problem, dass ich einen Block gerne zweispaltig anzeigen wollte.
Dazu muss der Text erstmal irgendwie gesplittet und dann in zwei <div class="span6"> ... </div> gepackt werden.
Also habe ich mir eine Funktion geschrieben, die das kann und sie einfach mal ins Template eingebaut - da kam dann
schon das große Problem: Wie krieg ich Drupal dazu meine Funktion auf den Content (im Array #markup) anzuwenden und das dann zu rendern?
Da ich das nicht ordentlich hinbekommen habe war mein Ansatz nun:
<?php print makeTwoColumns(render($page['content_col2-1']['block_6']['#markup'])); ?>
Das ist ja aber irgendwie totaler Quatsch... Wie würde man das in Drupal denn besser lösen?
Größtes Problem an der Sache: Mir fehlen ja nun die contextual_links die ich eigentlich verwenden möchte, damit
er mir direkt inline das Bearbeiten-Icon anzeigt.
Ich möchte also aus einem Drupal-Block gerne ca. folgendes erzeugen:
<div contextual_links-zeug und wrapper-box>
<div class="row"><div class="span12">title</div></div>
<div class="row">
<div class="span6">erste haelfte text</div>
<div class="span6">zweite haelfte text</div>
</div>
</div>Tut mir Leid, wenn ich wesentliches vergessen oder schlecht formuliert habe. Einfach nachfragen. Bin seit Stunden nur mit diesem Problem beschäftigt und
bin jetzt langsam im Kopf total kaputt. ;-)
Liebe Grüße,
Andy
Kurzfassung
Was ich konkret brauche ist:
Die Möglichkeit den Content aus dem Drupal-Block mit einer PHP-Funktion zu verändern, sowie die Möglichkeit ein anderes als Normales Template auszuwählen, in dem ich zwei Variablen für die Textteile definiert habe.
Das Template würde dann ungefähr so aussehen:
<div class="row"><div class="span12"><?php print $title; ?></div></div>
<div class="row"><div class="span12">
<div class="span6"><?php print $text[0]; ?></div>
<div class="span6"><?php print $text[1]; ?></div>
</div></div>Da ich mich nun mit der Entwicklung in Drupal noch nicht so gut auskenne wäre ich sehr dankbar, wenn mir jemand sagen könnte, wie ich das umsetzen kann.
- Anmelden oder Registrieren um Kommentare zu schreiben

Geht es dir um einen Block
am 09.02.2015 - 19:22 Uhr
Geht es dir um einen Block den du händisch füllst oder ein Views Block der automatisch 2 zeilig angezeigt werden soll, also mit Inhalten aus vorhandenen Nodes?
Falls einfacher Block mit 2 Spalten im Block kannst du direkt das Grid in den Block einbauen, hier sind alle Gridcontainer genau bezeichnet, das klappt bestens, zeige so meinen Footer innerhalb eines Blocks in 4 Spalten nebeneinander an, bzw. mobil dann natürlich untereinander.
Die Beispiele sind ja direkt vorgegeben, brauchst du dir eigentlich nur in den Block kopieren und per CSS anpassen und im Block Full HTML wählen.
http://getbootstrap.com/css/#grid
Grüße Jenna
Mir geht es nicht um den
am 09.02.2015 - 19:30 Uhr
Mir geht es nicht um den Bootstrap-Grid oder CSS Teil. Damit kenne ich mich aus. Es geht mir um die Drupal-Implementierung.
Es soll ein Block sein, den mein Kunde dann später bearbeiten können soll. Also Titel und Text. Der Text soll auf der Seite dann
in zwei gleich großen Spalten dargestellt werden. Um den Text so aufzuteilen habe ich eine Funktion in PHP geschrieben. Die soll
jetzt auf den Content beim darstellen angewendet werden und dann soll der Content halt in diesem Bootstrap-Div-Konstrukt eingefügt werden.
Auf der Seite selbst soll der Block dann die Möglichkeit bieten per Quickedit den Inhalt zu ändern.
Ich hoffe das hilft, die Problemstellung etwas besser zu verstehen.
LG,
Andy
Das kannst du mit dem
am 09.02.2015 - 22:08 Uhr
Das kannst du mit dem Original Block und https://www.drupal.org/project/block_class lösen.
Damit kannst du jedem Block eine eigene Klasse zuweisen und behälst die Contextual Links.
Hier das Beispiel mit .newspaper, dieses ist ein dreispaltiges Beispiel, dementsprechend dann auf 2 Spalten anpassen.
http://www.w3schools.com/css/css3_multiple_columns.asp
Grüße Jenna
Damit kann ich doch aber
am 09.02.2015 - 22:30 Uhr
Damit kann ich doch aber trotzdem nicht bei der Darstellung aus einem Div-Block 2 Div-Blöcke machen ohne das als HTML im Content in den Drupal-Block zu schreiben.
Außerdem kann ich column-count nicht benutzen, da die Seite responsive sein soll und auch im Internet Explorer 9 korrekt dargestellt werden muss.
Was ich konkret brauche
am 09.02.2015 - 22:37 Uhr
Was ich konkret brauche ist:
Die Möglichkeit den Content aus dem Drupal-Block mit einer PHP-Funktion zu verändern, sowie die Möglichkeit ein anderes als Normales Template auszuwählen, in dem ich zwei Variablen für die Textteile definiert habe.
Das Template würde dann ungefähr so aussehen:
<div class="row"><div class="span12"><?php print $title; ?></div></div><div class="row"><div class="span12">
<div class="span6"><?php print $text[0]; ?></div>
<div class="span6"><?php print $text[1]; ?></div>
</div></div>
Da ich mich nun mit der Entwicklung in Drupal noch nicht so gut auskenne wäre ich sehr dankbar, wenn mir jemand sagen könnte, wie ich das umsetzen kann.
Alternativ könntest du zwei
am 09.02.2015 - 22:46 Uhr
Alternativ könntest du zwei Textfelder in deinem Content Type erstellen und diese als Blöcke rendern.
Mit einem Modul wie z.B. CCK Blocks geht so etwas.
In deinem Template definierst du einfach zwei neue Regions für deine Blöcke.
https://www.drupal.org/project/cck_blocks
Den Bootstrap Code kann man schnell einfügen, indem man z.B. das Block Template (block.tpl.php) in sein Theme einfügt und diese durch eigene Versionen überschreibt:
block--fieldname1.tpl
block--fieldname2.tpl
Damit müsste man doch die
am 09.02.2015 - 23:01 Uhr
Damit müsste man doch die zwei Textteile selbst in zwei Felder aufteilen oder nicht?
Ja, macht ja auch irgendwie
am 09.02.2015 - 23:44 Uhr
Ja, macht ja auch irgendwie Sinn wenn es zwei Textblöcke sind.
Noch eine andere Möglichkeit:
In einem Editor (wie zB CKEditor) hinterlegst du einfach zwei CSS Klassen. Eine für den linken Block und eine für den zweiten Block.
Du könntest so die Bootstrap Klassen hinterlegen. Der Kunde müsste einfach nur den Abschnitt markieren und die richtige Klasse wählen.
Ich persönlich würde CCK Blocks verwenden. Zwei unabhängige Felder die als Blöcke wiedergegeben werden.
Das ist aber nicht das was
am 09.02.2015 - 23:53 Uhr
Das ist aber nicht das was ich möchte.
Also ich hab mir eben erstmal gegen den Kopf gehauen, den Inhalt kann ich ganz leicht durch meine Funktion parsen indem ich (Pseudocode:)
#markup = meine_funktion (#markup)schreibe.Jetzt müsste ich nur noch rausbekommen, wie ich für diesen Block ein anderes Template nutzen kann. Das müsste doch über den Dateinamen des Templates machbar sein oder?
Es sollen übrigens nur in der Ausgabe zwei Div-Blöcke sein. In Drupal soll es nur ein Block sein, in welchen man nachher einen Fließtext schreibt, der dann in zwei Texte gesplittet wird (gleich große Texte),
die dann in den zwei Div-Blöcken ausgegeben werden.
Hätte ich zwei Blöcke gewollt würde ich gar nichts von alledem brauchen, da ich dafür auch einfach zwei Blöcke anlegen kann die ich in zwei Regionen auf meinem Template platziere.
Das ist aber nicht das was ich möchte. Siehe oben.
Zitat:Damit kann ich doch
am 10.02.2015 - 00:06 Uhr
Damit kann ich doch aber trotzdem nicht bei der Darstellung aus einem Div-Block 2 Div-Blöcke machen ohne das als HTML im Content in den Drupal-Block zu schreiben.
Doch, genau das geht, hab es selbst getestet. Der Nutzer/ Kunde gibt lediglich Fließtext ein, den Rest übernimmt das CSS.
Grüße Jenna
edit:
Außerdem kann ich column-count nicht benutzen, da die Seite responsive sein soll und auch im Internet Explorer 9 korrekt dargestellt werden muss.
Das ließe sich ja regeln indem du die CSS Anweisung in Media Queries packst und dementsprechend ein oder zweispaltig ausgibst.
Ich bin sicher, auch der IE9 kann schon Media Queries lesen.
Zitat: Es sollen übrigens nur
am 10.02.2015 - 12:25 Uhr
Es sollen übrigens nur in der Ausgabe zwei Div-Blöcke sein.
Ich sehe gerade das ich deinen Wunsch nach 2 Div Blöcken überlesen habe.
Reicht es dir nicht aus das der Text mit der CSS in 2 Spalten ausgegeben wird, warum müssen es 2 Div Blöcke sein für Fließtext, würde mich interessieren, da mir der Hintergrund /Zweck nicht klar ist? Geht es dir um gesonderte Formatierung?
Grüße Jenna