[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Verschachteltes Accordion
Seite 1 von 1

Verschachteltes Accordion

Verfasst: 27. Jul 2016, 10:45
von mmh
Tag zusammen,
für ein Downloadmodul brauche ich ein verschachteltes Accordion.
Es geht um eine große Masse an Daten die vernünftig dargestellt werden soll.
Ebene 1
Ebene 1.1
Ebene 1.2
Ebene 1.2.1
Ebene 1.2.2
Ebene 1.3

Ebene 2
Ebene 2.1
Ebene 2.1.1
Ebene 2.1.2
Ebene 2.2

etc.

Technisch läuft das ganze über verschachtelte Listen. Nur bin ich mir unschlüssig wie ich das ganze als Modul umsetzen soll. Der Kunde möchte frei wählen, welche Bereiche wie tief verschachtelt werden ...

Hat jemand eine Idee für mich?

Danke
Marco

Re: Verschachteltes Accordion

Verfasst: 27. Jul 2016, 13:16
von Ingo
Kategorien

Re: Verschachteltes Accordion

Verfasst: 27. Jul 2016, 14:05
von mmh
Hallo Ingo,
es geht um mehrere hundert Dokumente die zum Download angeboten werden, sortiert nach verschiedenen Gruppen. Ich finde es irgendwie zu umständlich für jedes Dokument einen eigenen Artikel anzulegen oder?

Re: Verschachteltes Accordion

Verfasst: 27. Jul 2016, 14:19
von Ingo
Mach die Hierarchie über Kategorien. Ausgegeben werden die Downloads über ein Modul mit nem Select aller Gruppen drin, der Kunde kann eine oder mehrere Gruppen zur Ausgabe wählen. Ich setze voraus, dass die Downloads über Metainfos oder eine MP Kategorie zu einer Gruppe zugeordnet sind.

Re: Verschachteltes Accordion

Verfasst: 15. Aug 2016, 17:21
von mmh
Hallo Ingo,
nach langem hin und her habe ich mich jetzt dazu entschiedene deinen Ansatz zu verfolgen.
Der Kunde ist damit einverstanden.

Ich lege für jedes Accordion eine Kateogire an. Darin ist ein Artikel in dem für jedes Dokument ein Modul angelegt wird. Außerdem gibt es in der Kategorie eventuell noch weitere Kategorien mit jeweilss einem Artikel.

Das Ausgabemodul sieht dann so aus:
Zeige mir alle Kategorien der aktuellen Kategorie, zeige den Inhalt des Artikels und zeige mir alle Kinder der Kategorie.

Leider verzweifle ich gerade ganz banal an der Ausgabe der Kategorien.

Mit folgendem Code bekomme ich nur die aktuellen Kinder:

Code: Alles auswählen

	$category = rex_category::getCurrent();
	// Kinder auswählen
	$category_childs_1 = $category->getChildren();
Wie kann ich denn die "Kindeskinder" anzeigen lassen ???

Danke für deine Hilfe
Marco

Re: Verschachteltes Accordion

Verfasst: 15. Aug 2016, 21:02
von Ingo
So banal ist das gar nicht :)
Da dein Kunde die Verschachtelungstiefe selbst bestimmen möchte, solltest du dir eine rekursive Funktion schreiben. Vielleicht hilft dir das hier weiter: http://www.redaxo.org/de/download/module/?modul_id=450

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 11:36
von mmh
Die Tiefe ist auf 3 Ebenen begrenzt, hilft das weiter ???

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 11:49
von Oliver.Kreischer
Wenn es nur darum geht Downloads bereit zu stellen würde ich überlegen mit den Kategorien im Medienpool zu arbeiten...

LG
Oliver

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 12:05
von mmh
Hallo Oliver,
danke für den Tip, daran hatte ich auch gedacht.
Problem ist leider, dass viele Formulare in mehreren Sprachen angeobten werden.
Es soll dann also Dokument 1 DE EN FR stehen. Ich denke das lässt sich nur über ein Modul lösen in dem die 3 Dateien verknüpft werden oder?

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 12:38
von Oliver.Kreischer
Hallo,

könntest du evtl. mal eine Skizze hochladen (oder mir schicken?)...

Ich kann mir gerade den gewünschten Output nicht wirklich vorstellen.

LG
Oliver

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 14:08
von mmh
Anbei ein Bild zur Schematischen Darstellung.

Ich bin drauf und dran das ganze Konzept auf Module umzustellen.
Modul: Accordion Start (<dl><dt>REX_VALUE</dt><dd>)
Moudl: Dokument (REX_VALUE + REX_MEDIAs)
Modul: Accordion Ende (</dd></dl>)

Somit kann sich der Kunde seine Struktur in einem Artikel selber zusammenstellen.
Funktioniert es denn 100 Blöcke zu platzieren? Oder gibt es da eine Beschränkung?

DANKE
Marco

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 14:21
von Oliver.Kreischer
Hi,

Blöcke kannst du - soweit ich weiß - unbeschränkt nutzen...

Ich hab nur gerade das Gefühl, dass man hier am besten nochmal über das Konzept nachdenken sollte....

LG
Oliver

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 15:03
von mmh
Hallo Oliver,
ich zerbreche mir schon ewig den Kopf.
Da es manchmal mehrere Sprache gibt und machmal nicht, ist der Medienpool schon mal raus.

Kategorien war eine Alternative die ich im Endeffekt aber zu umständlich finde.

Wenn ich mit Modulen arbeite, hab' ich zwar viele Blöcke, bin aber völlig Flexibel auch was die Teife der Accordions angeht.

Hast du noch einen anderen Ansatz?

LG
Marco

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 15:14
von Oliver.Kreischer
Hallo Marco,

dafür müsste ich mehr über die Seite wissen.

Gibt es die Seite in allen Sprachen?
Dann würde ich auch nur der Sprache entsprechend die Dokumente anbieten.

Wie viele Dokumente gibt es? Irgendwann macht evtl eine gänzlich andere Vorgehensweise wählen...

Evtl. eine Seite pro Hauptkategorie ... Weitere Ebenen als Überschriften
Oder man bietet Selectfelder an wie z.b. hier: http://www.wacom.eu/index4.asp?lang=de&pid=29
oder hier: http://mlz-garching.de/aktuelles-und-medien.html
Oder man nutzt eine DokumentManagmentSystem oder, oder oder...

LG
Oliver

Re: Verschachteltes Accordion

Verfasst: 17. Aug 2016, 15:20
von mmh
Hallo Oliver,
danke dass du dir die Zeit nimmst.

Die Seite existiert zwar in mehreren Sprachen, da aber die Dokumente nicht konsequent in allen Sprachen vorhanden sind, soll der Downloadbereich gesammelt sein. Sonst muss der Franzsoe, erst auf der französischen Seite suchen, dann auf der englischen und ggf. noch auf der deutschen.

Der Optische Aufbau ist leider fix. Das haben Kunde und Agentur sich so gewünscht.

Ich kann ja für die erste Hirachie schon mal verschiedene Artikel verwenden, somit habe ich eine Ebene weniger...

Re: Verschachteltes Accordion

Verfasst: 18. Aug 2016, 08:08
von Fanello
Ich stehe vor einem ganz ähnlichen Problem. Im ersten Ansatz wollte ich es so lösen, dass ich mit dem yform eine Downloadtabelle mache. Jeder Zeile in dieser Tabelle hat einen Text, eine Kategorie (aus einer anderen yform-Tabelle) und natürlich ein File.

Der Ansatz von Oliver mit dem Medienpool ist meiner Meinung nach viel eleganter.

Meine Seite ist in deutsch und englisch, wobei jede Sprache auch die entpsrechende Sprache bei den Download-Files zur Verfügung stellt. Auch mein Kunde wünscht ein verschachteltes Accordion, wobei es nur 2 Ebenen sind.

Ich würde jetzt im Medienpool ein Meta-Selectfeld hinzufügen, mit dem man für jedes File die Sprache auswählen kann. Wenn ich dann mit einem Modul die Files auselsen möchte, könnte ich ja quasi die Sprache noch als zusätzlichen Filter verwenden. Denke das sollte so gehen..

Jetzt aber... gibt es für R5 bereits ein Modul, das Dateien aus dem Medienpool holt?

Ich müsste es halt auch verschachtelt haben. Es soll also den Medienkategorie-Namen auslesen und darunter die dazugehörenden Dateien auflisten.

Wenn es eine Medienkategorie ohne Files ist aber mit weiteren Unterkategorien, dann soll es den Namen der Kategorie ausgeben, darunter dann jeweils den Namen der Unterkategorie und die dazugehörenden Files.

Das wäre mal ein erster Ansatz den ich schon mal eingesetzt habe:

Code: Alles auswählen

<?php
$media = rex_media_category::get("14");
$files = $media->getMedia(); 

if (is_array($files)) { 
  foreach ($files as $file) { 
   $fileName = $file->getFileName();
   echo $fileName;
}
}
?>

Re: Verschachteltes Accordion

Verfasst: 18. Aug 2016, 08:59
von Fanello
Noch etwas.. idealerweise würde ich dem Kunden die Möglichkeite geben, über das Modul zu wählen welche Medienpool-Kategorie (Kategorie-Name und Files) angezeigt werden soll. Falls diese Kategorie dann Unterkategorien hat, sollen diese angezeigt werden.

Re: Verschachteltes Accordion

Verfasst: 18. Aug 2016, 15:52
von mmh
Servus Fanello du Glücklicher ;-)
Bei einer Seite mit einer klaren Struktru und identischen Sprachen finde ich die Medienkategorien auch am elegantesten.

Bei mir funktioniert das leider nicht, weil ich teilweise eine und teilweise bis zu 5 Sprachen habe. Da der Kunde unbedingt ein Accordion mit 3 Ebenen möchte, gibt es nach meinem dafürhalten nur den umständlichen manuellen Weg. Ansonsten geht die Flexibilität verloren.

Ich habe jetzt für jedes Accordion einen Artikel angelegt. Darin gibt es dann ein Modul Dokument Download sowie Module für "Unter Accordions". Nicht schön, aber zweckmäßig und flexibel.

Grüße
Marco

Re: Verschachteltes Accordion

Verfasst: 25. Nov 2016, 13:50
von alexplus
Mittlerweile könnte man für sowas evtl. auch search_it einsetzen als alternativen Ansatz, statt sich durch Kategorien zu klicken.

Ich hätte eine Datenbank in YForm dafür angelegt und die Ebenen gestrichen, zugunsten von Schlagwörtern.

Re: Verschachteltes Accordion

Verfasst: 29. Nov 2016, 15:58
von poing
ich hatte jetzt ein accordion mit Mblock umgesetzt.
basierend auf zurb foundation.

vielleicht ist das ja ein ansatz?
Müsste man nur überlegen wie man das verschachtel.

Eingabe:
<?php
// base ID
$id = 1;

// init mform
$mform = new MForm();

// fieldset
$mform->addFieldset('Accordion Item');

// textinput
$mform->addTextField("$id.0.name", array('label'=>'Titel')); // use string for x.0 json values
$mform->addTextField("$id.0.header", array('label'=>'Überschrift')); // use string for x.0 json values
$mform->addTextAreaField("$id.0.text", array('label'=>'Fliesstext','class'=>'redactorEditor2-textbox'));

// media button
$mform->addMediaField(1, array('label'=>'Bild')); // mblock will auto set the media file as json value

// parse form
echo MBlock::show($id, $mform->show(), array('min'=>2,'max'=>40)); // add settings min and max

?>

------------------------
Ausgabe:

<?php
if (rex::isBackend()) {
echo '<p>Accordion Element</p>';
}
else {
echo '<div class="row"><div class="large-12 columns"><ul class="accordion" data-accordion role="tablist">';
$x = rex_var::toArray("REX_VALUE[1]");
$z = 0;
foreach($x as $v){
// var_dump($v);
if($z==0) $isactive = ' is-active'; else $isactive = '';
$media = $v["REX_INPUT_MEDIA_1"];
echo '
<li class="accordion-item'.$isactive.'">
<a href="#pane'.$z.'" role="tab" class="accordion-title" id="pane'.$z.'-heading" aria-controls="pane'.$z.'"><h4>
<img class="up" src="'.rex_url::base("templating/dist/assets/img/chevronright-red.svg").'">
'.$v["name"].'</h4>
</a>
<!-- The content pane needs an ID that matches the above href, role="tabpanel", data-tab-content, and aria-labelledby. -->
<div id="pane'.$z.'" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="pane'.$z.'-heading">
<div class="row">
<div class="medium-8 columns">
<h3>'.$v["header"].'</h3>
'.$v["text"].'
</div>
<div class="medium-4 columns">
<img class="shadow" alt="'.$v["name"].'" title="'.$v["name"].'" src="index.php?rex_media_type=slider5&rex_media_file=' . $media . '" alt="'.$v["name"].'">
</div>
</div>
</div>
</li>
';
$z++;
}
echo '</ul></div></div>';
}
?>

------------------------