Author Topic: Einfache Möglichkeit, einen zweiten Block auf allen Seiten hinzuzufügen?  (Read 191 times)

Offline VSG

  • Posts: 254
Hallo zusammen,

ich hätte mal wieder eine etwas seltsame Anfrage. Nach langer Zeit habe ich es endlich geschafft, ein responsives Template für meine Seite zu finden und soweit anzupassen. Bislang war es allerdings so, dass ich auf der Seite innerhalb des Templates eine Section am rechten Rand eingefügt habe (Seitenleiste).
Das neue Template sieht für so etwas einen rechten Block vor. Das ist auch gut so, denn auf diese Weise funktioniert das Template auch auf Mobilgeräten ordentlich. Und nur, wenn es als Block erkannt wird, funktioniert auch die Positionierung.

Das würde jedoch bedeuten, dass ich bei jeder einzelnen Seite einen neuen Abschnitt (Section Picker) einfügen und dort die Seitenleiste als Section einfügen müsste.
Bei über 2.000 Unterseiten ist das ne Menge Klickarbeit.

Darum meine Frage: Gibt es dafür eine einfache, schnelle Möglichkeit? (Immer "Block Right", immer mit derselben Section.)
Ich fürchte fast, dass dem nicht so ist, denn für jeden Abschnitt wird ja eine laufende Nummer vergeben. Aber bevor ich mich dransetze, dachte ich, frag ich lieber nach.
Wichtig wäre noch, dass die Struktur der Seite nicht geändert wird. Ich hatte es bei den Tests wieder, dass die mehrfachen Bindestriche in Datei- und Ordnernamen korrigiert wurden – auf Grund von Verlinkungen von anderen Seiten soll das ausdrücklich nicht geschehen und die mehrfachen Bindestriche, auch wenn sie SEO-technischen nachteilig sind, erhalten bleiben.

Herzlichen Dank im Voraus für die Unterstützung.
Beste Grüße
VSG

Offline dbs

  • Betatester
  • **
  • Posts: 8337
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Hi, schau mal hier, vielleicht hilft das weiter.
https://forum.WebsiteBaker.org/index.php/topic,25357.0/nowap.html

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3048
  • Gender: Female
Yep, solange der einzubindende Block WYSIWYG-Sections enthält, hab ich für einen solchen Fall vor gut 5 Jahren ein Droplet geschrieben.
Einfach den Block im niedrigst möglichen Level mit Content füllen. In allen Unterseiten nur das Droplet in den Block einfügen.
Das Droplet sucht dann rückwärts durch die Parentseiten, bis es einen Content findet und übernimmt diesen.

[[iParentBlock?block=2]]  ist der Aufruf des Droplets, die Nummer ist die Nummer des Blocks aus dem der Content geholt werden soll.
« Last Edit: August 24, 2020, 07:07:10 PM by DarkViper »
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline VSG

  • Posts: 254
Hallo, ihr beiden!

Danke für die Antworten. Auf den ersten Blick würde ich sagen, dass GlobalBlocks vielleicht zielführende wäre. Aber ob das dann mit dem Template klappt, oder weitere große Anpassungen nötig wären, kann ich nicht sagen. Und wenn man sich im Programmieren nicht auskennt, ist’s nicht einfacher. :wink:

Das Droplet hab ich nur kurz angeschaut, aber ich glaube, da reden wir aneinander vorbei.

Situation jetzt:
Ein Template (nicht responsiv), keine Blöcke. Im Template selbst wird per SectionPicker-Droplet eine Seite, nur WYSIWYG-Content, eingebunden. Das ist die Seitenleiste.

Künftig:
Responsives Template mit Blöcken. Hauptblock mit dem Inhalt, rechter Block mit der Seitenleiste. Je nach Auflösung, wird der rechte Block unter den Hauptblock geschoben. Das funktioniert auch. Nur, wenn ich für die Seite keinen zweiten Block definiert habe, funktioniert auch das Verschieben dieses Elements bei geringeren Auflösungen verständlicherweise nicht.

Darum war meine Frage, ob man in einem Batchvorgang allen Seiten einen zweiten Block zuweisen und diesen automatisch mit einem SectionPicker auf eine bestimmte Seite versehen kann.
Da das Template selbst funktioniert, würde ich daran nicht weiterbasteln wollen. Aber solange die einzelne WB-Seite keinen zweiten Block hat, gehts eben nicht.

Beste Grüße
VSG

Offline dbs

  • Betatester
  • **
  • Posts: 8337
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Wie sieht das denn aus in deinem Template mit der Seitenleiste?
Da müsste doch ein div nit page_content(3) oder so ähnlich sein um den block zu laden falls vorhanden.
Darunter, immer noch im div, würde ich das droplet sectionpicker setzen, dass dann das hiolt was überall zu sehen sein soll.

Das responsive bezieht sich also auf das div und nicht den block darin, also ist es egal ob es den block auf den seiten gibt.
Droplet ist immer da, also gibt es immer Inhalt für das div.
Vielleicht verstehe ich es falsch.

Offline hgs

  • Betatester
  • **
  • Posts: 1261
    • EFG MG
Hast du mal eine "Beispielseite / Beispielbild" für uns?

In meinem Template habe ich das so realisiert:
Code: [Select]
<div class="leftbox"><?php
echo '<div class="inner">';
echo '<div class="box">';
include(WB_PATH.'/losungphp2.inc')

?>

</div>
</div>

<div class="inner">
<div class="box">
<h3>Aktuelle Termine</h3>
                [[eventlist?section_id=55&flags=5&days=14]]
</div>
</div>

<div class="inner">
<div class="box">
<h3>Welt aktuell</h3>
                [[SectionPicker?sid=158]]
</div>
</div>

</div><!--end leftbox-->

Damit werden 3 verschiedene Ausgaben auf der linken Seite erzeugt und zwar für alle Seiten/Subseiten.
Oben eine php-Anweisung, dann kommen zwei Droplets zum Einsatz.
Beispielbild im Anhang
LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

Offline VSG

  • Posts: 254
Hallo zusammen,

nochmal Danke für Euren Input – ohne ihn wär ich nicht auf die Lösung gekommen. Ich hab wohl schlicht zu kompliziert gedacht.

Der Abschnitt im Template sieht so aus:
Code: [Select]
<div id="bigcontent">


<?php if ($page_content_2 != '') {
//There is a right block:
echo '<div id="beginContent" class="contentbox"><div role="main" class="inner">'.$page_content_1.'</div></div><!-- end contentbox -->
<div class="rightbox"><div role="complementary" class="inner">'
.$page_content_2.'</div></div><!-- end rightbox -->
'
;
} else {
//There is NO right block:
echo '<div id="beginContent" class="contentbox bigcontent"><div role="main" class="inner">'.$page_content_1.'</div></div><!-- end contentbox -->
              '
;


if ($page_content_4 != '') {
//There is a right block:
echo '<div style="clear:both;">'.$page_content_4.'</div>';
}
?>

</div><!-- end bigcontent -->

Ich hab folgenden Teil angepasst und so funktioniert es nun auch:
Code: [Select]
       } else {
//There is NO right block:
echo '<div id="beginContent" class="contentbox"><div role="main" class="inner">'.$page_content_1.'</div></div><!-- end contentbox -->
<div class="rightbox"><div role="complementary" class="inner">[[SectionPicker?sid=941]]</div></div><!-- end rightbox -->';
}

Auf die Idee, das so direkt im Template umzusetzen, bin ich erst Dank Eurer Hinweise gekommen.
Dankeschön dafür!

Besten Dank und viele Grüße
VSG

 

postern-length