Abschnitte verschieben

In der Nutzer-Umfrage und auch im Forum wird oft nach einer Möglichkeit gefragt, einzelne Abschnitte zwischen Seiten zu verschieben. Leider ist das nicht ganz einfach.
Etwas technischer Hintergrund.

In WBCE hat jede Seite eine eindeutige Nummer, diese wird laufend hochgezählt. Die page_id.
In der Tabelle pages stehen zu jeder page_id die Daten der Seite an sich: Titel, Menüpunkt, URL, Metatags uvm.

Die Anschnitte (section_id) werden über die Tabelle sections mit pages verknüpft:
section_id 12 mit Modul wysiwyg auf page_id 2
section_id 13 mit Modul topics auf page_id 3
section_id 14 mit Modul wysiwyg  auf page_id 3,…

Bis hier her wäre es noch einfach, die Abschnitte zu verschieben: Ich ändere einfach die page_id von section 12 von 2 auf 3 und schon ist der Abschnitt auf Seite 3 verschoben.
Leider: So läuft das nicht.

Der Haken: Die Module

Aus vielen Gründen ist es ratsam, die zugeordnete section_id auch innerhalb eines Modules zu verwenden, vor allem deswegen, damit ein Modul selbst seinen Bezug zu WBCE nicht verliert.
Beim Speichern braucht es eine eindeutige Nummer, um in die richtige Datenbank-Zeile zu schreiben und diese zu lesen. Aus Sicherheitsgründen muss diese ID auch der Core kennen – also eben die section_id.
Ähnlich verhält es sich mit der page_id: Ein Modul muss manchmal auf Seiten-Attribute zugreifen, etwa den Seitentitel und -bescheibung auslesen. Der Umweg über die section_id ist schwieriger und außerdem: Doppelt hält eben besser.

Wie aber ein Modul section_id und page_id verwendet, ist Sache des Moduls. Die Werte müssen nicht einmal so heißen. Und sie können auch auf vielfältige Weise im Modul verwendet sein, etwa mit weiteren Ids verbunden sein.

In Teufels Küche

Will man einen Abschnitt verschieben, sind also genaue Kenntnis des Moduls nötig; wie es diese Werte nutzt und verwaltet. Das ist bei jedem Modul anders, es gibt keine einheitlichen Regeln.

Sehr einfache Module wie WYSIWYG, Code(2) oder Wrapper würden sich mit einem Tool wohl noch leicht verschieben lassen, bei anderen Modulen wie Topics, Bakery, rFG.. ist das sehr sehr schwierig bis unmöglich.
Wie erklärt man, was geht und was nicht? Und wie stellt man die Möglichkeit bereit, ohne zu verwirren?

Alternative Varianten

Bei einfachen Modulen wie WYSIWYG oder Code(2) lässt sich auch der Inhalt sehr leicht kopieren; bei WYSIWYG über QuellCode zu Quellcode; das geht sehr schnell.
Hier kann man auch auf den PageCloner zurückgreifen – der das im Stück macht (Hinweis: Der PageCloner kopiert ebenfalls nur einfache Module vollständig)

Wenn man einen Abschnitt mit Topics verschieben will, ist es einfacher, wenn man zuerst den Rest der Seite kopiert, dann die ganze Seite mit Topics verschiebt und „alles zuviel“ löscht.

Kleiner Nachtrag zu den IDs

Manchmal spürt man im Forum eine gewisse Scheu, eine Seite, einen Abschnitt einfach neu anzulegen und dafür andere zu löschen. "Da bleiben doch Lücken in den Nummern.."
Ja, das ist so - und es ist völlig egal. Du kannst über 60 Jahre lang jede Sekunde einen Abschnitt anlegen und die Zahlen gehen nicht aus ;-)
 

 

Zurück