Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Beim Klick auf Überschrift/Link soll sich Text darunter öffnen

Eingetragen von michi1983 (73)
am 06.09.2011 - 14:02 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hi Leute,

wie würdet ihr das am einfachsten lösen wenn ihr eine Seite habt die z.B. grob so aussehen könnte:

Überschrift 1
text 1

Überschrift 2
text 2

Link1
Link2
Link3

Was ich gerne möchte ist, dass wenn ich auf Link1 klicke, dass sich darunter der Text (der dazu gehört) quasi "öffnet".
Sobald ich auf Link2 klicke, sollte der Text von Link1 (bis auf die Überschrift "Link1") verschwinden und sich der Text unter Link2 "öffnen".

Mache ich das mit einer View?

Wenn ja, wie sage ich meiner Seite nachher, dass nur bestimmte "Links" wie (z.B. Link1) diese View anwenden sollen?

Oder geht das ganze auch noch simpler zu lösen?

MfG
Michael

‹ Möchte im Backend beliebig viele Überschriften angeben können. Per Knopfdruck ein neues Feld erstellen? Eigene Rule sprengt das Memory Limit ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Views Zusatzmodul

Eingetragen von Kirsten1965 (703)
am 06.09.2011 - 14:38 Uhr

Hallo,

da gibt es ein Zusatzmodul, dass Dir die Möglichkeit gibt so etwas anzeigen zu lassen. Heißt irgendwas mit Accordeon - mußt Du mal auf Drupal.org suchen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kirsten1965 schriebHallo,da

Eingetragen von michi1983 (73)
am 06.09.2011 - 14:45 Uhr
Kirsten1965 schrieb

Hallo,

da gibt es ein Zusatzmodul, dass Dir die Möglichkeit gibt so etwas anzeigen zu lassen. Heißt irgendwas mit Accordeon - mußt Du mal auf Drupal.org suchen...

Hallo Kirsten,

danke für den Hinweis. Ich bin jetzt nur mal schnell drübergeflogen. Das Modul wird speziell für Menüs beschrieben.
Kann ich das denn auch einfach mitten im Text auf einer Seite verwenden?

MfG
Michael

Edit://
Ich scheine vorhin ein "anderes" Accordion Modul gesehen zu haben.
Meinst du das hier?
http://drupal.org/project/views_accordion

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genau

Eingetragen von Kirsten1965 (703)
am 06.09.2011 - 15:44 Uhr

Hallo Michael,

ja, das meinte ich. Hatte es selber einmal in Betracht gezogen, dann aber doch auf Tabs zurückgegriffen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das heißt, ich muss also doch

Eingetragen von michi1983 (73)
am 06.09.2011 - 22:59 Uhr

Ich würde das ganze ja wie oben schon gesagt gerne mitten im Text verwenden. Sprich nicht extra einen Inhaltstypen erstellen.
Ich steh leider grad etwas auf der Leitung.
Kannst du mir etwas auf die Sprünge helfen was ich zu tun habe?
View erstellen, bei Darstellung den "accordion" auswählen?
Soll ich vielleicht eine Block-View erstellen und dann einfach Blöcke in den Inhalt packen und mit CSS formatieren als ob sie zum Text gehören?

Sorry für die vielen Fragen

MfG
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich denke, daß Du ein

Eingetragen von Thoor (3678)
am 07.09.2011 - 08:53 Uhr

Ich denke, daß Du ein derartiges Modul suchst: http://drupal.org/project/collapse_text

Damit schreibst Du nach der Installation einfach [collapse] und [/collapse] in Deinen Text. Und schon hast Du die gewünschte Ergänzung.
PS: Achte auf die Beschreibung auf der Projektseite mit den Filtern! Und natürlich wie immer auf die readme.txt

Edit: SORRY - FALSCHE EMPFEHLUNG ... ist doch eher ne Sache für ein Accordion Modul!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, aber erst am Wochenende

Eingetragen von Kirsten1965 (703)
am 07.09.2011 - 09:29 Uhr
michi1983 schrieb

Kannst du mir etwas auf die Sprünge helfen was ich zu tun habe?

Hallo Michael,

mache ich gerne, aber dazu muss ich das erst auf einer Testinstallation installieren und dann die einzelnen Schritte hier posten. Haben aber morgen und übermorgen eine große Veranstaltung, die ich stemmen muss. Komme erst am Wochenende dazu. Ich hoffe, das reicht Dir.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Kirsten, vielen lieben

Eingetragen von michi1983 (73)
am 07.09.2011 - 09:47 Uhr

Hallo Kirsten,

vielen lieben Dank! Natürlich reicht das :)
Ich wünsch dir viel Erfolg bei deiner Veranstaltung.

Mfg
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

So, ich versuchs jetzt anders

Eingetragen von michi1983 (73)
am 14.09.2011 - 15:24 Uhr

So, ich versuchs jetzt anders zu lösen und bin schon "fast" an meinem Ziel. Allerdings bräuchte ich Hilfe von jemandem der sich mit jquery auskennt.

Ich hab folgendes gemacht:
Ich hab die default.js meines WYSIWYG Profiles des CKEditors abgeändert und hab dort zwei p hingebastelt.
Einmal ein p mit der class:"hidden_paragraph" und ein p mit der class:"visible_paragraph".
Somit kann ich dem Text, den ich verstecken möchte im Editor diese class zuweisen.

Weiters habe ich eine .js Datei in mein Theme gepackt und die .info Datei des Themes auch darauf hingewiesen, dass es diese gibt.
Und in der steht jetzt folgendes:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   $('p.hidden_paragraph').show("slow");
                  
                   return false;
               });
           }
   )
}

Somit öffnet sich automatisch wenn ich auf eine h2 in einem Node klicke der p mit der class:"hidden_paragraph"

Das Problem:
Es öffnen sich ALLE p's mit diesers Klasse.

Was ich jetzt also noch bräuchte ist ein Argument für jquery welches mir nur das child Element des jeweils angeklickten h2 öffnet.

Kann mir da wer helfen?

Mfg
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also so auf die schnelle kann

Eingetragen von wla (9461)
am 14.09.2011 - 15:50 Uhr

Also so auf die schnelle kann ich Dir die Lösung nicht geben, denn damit müßte ich mich auch erst befassen und die Zeit habe ich gerade nicht. Der Weg ist so:

  • Du klebst an alle Paragraphen p.hidden_paragraph einen Eventhandler für onclick.
  • Die Eventfunktion macht dann den show().
  • Du mußt Dir allerdings auch Gedanken machen, wie ein auszuführender hide() einzubauen ist.
  • Du könntest dazu den onclick-Event ändern, damit beim erneuten Klick ein hide() ausgeführt wird.
  • Beim Hide dann aber daran denken den Event wieder auf Show umzuswitchen.

Ist eine nette Bastelaufgabe.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Werner, danke für die

Eingetragen von michi1983 (73)
am 14.09.2011 - 17:09 Uhr

Hallo Werner,

danke für die Tipps.
Ich bin leider ein kompletter noob was JavaScript/Jquery angeht deshalb werd ich wohl einige Zeit brauchen das hier alles richtig umzusetzen.
Ich melde mich dann wieder wenn ichs hinbekommen hab bzw. auch nicht :)

Mfg
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Könntest du mal den

Eingetragen von Exterior (2903)
am 14.09.2011 - 17:17 Uhr

Könntest du mal den HTML-Aufbau der einzelnen Nodes geben? Denn ich vermute mal, dass es einen Div gibt, der sowohl die h2-Überschrift als auch den hidden_paragraph umschließt. In dem Fall könntest du dich mit .parent() bis zu diesem Div durchhangeln, darauf ein .find() anwenden und das ganze dann mittels .show() einblenden. Ich vermute mal aufgrund deines Codes, dass es einen umschließenden Div mit der Klasse node gibt.

Kleines Beispiel:

Mal angenommen, dein HTML-Code würde so aussehen:

<div class="node-inner-1">
  <div class="node">
    <h2>Überschrift 1</h2>

    <p class="hidden_paragraph">Mein erster Inhalt</p>
  </div>
</div>

<div class="node-inner-2">
  <div class="node">
    <h2>Überschrift 2</h2>

    <p class="hidden_paragraph">Mein zweiter Inhalt</p>
  </div>
</div>

In dem Fall hast du also zwei Nodes in ihren "Containern" aber es soll natürlich nur der zugehörige hidden_paragraph geöffnet werden, wenn man ein h2 anklickt.

Also könnte man das ganze so machen:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   // in $(this) steht das Element, auf das du geklickt hast - KEINE Quotes um das this machen!
                   // mit .parent() kommt man zum darüberliegenden Element - wir würden also beim Div mit der Klasse "node" landen
                   // allerdings kommen wir genau bei diesem Div heraus, nicht etwa bei allen mit der Klasse "node"
                   // .find() findet alle "Kind-Elemente" eines vorgegebenen Elements, die auf den Selektor passen
                   $(this).parent().find('p.hidden_paragraph').show('slow');
                  
                   //theoretisch dürfte auch sowas funktionieren, müsste man ausprobieren:
                   // das blendet die Text ein oder aus, je nachdem, ob sie bereits sichtbar sind
                   // dann muss natürlich der Code oben (also der die hidden_paragraphs anzeigt) durch den hier ersetzt werden - beide gleichzeitig ist sinnfrei
                   var hidden_ps = $(this).parent().find('p.hidden_paragraph');
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       hidden_ps.show('slow');
                     }
                   else 
                     {
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

http://drupal.org/project/spr

Eingetragen von caw (2762)
am 14.09.2011 - 18:08 Uhr

http://drupal.org/project/spry
und heir die erläuterungen dazu http://labs.adobe.com/technologies/spry/samples/accordion/AccordionSampl...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Modul gibt's aber nur für

Eingetragen von Exterior (2903)
am 14.09.2011 - 18:16 Uhr

Das Modul gibt's aber nur für Drupal 5 ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

oh, na denn per hand einbauen

Eingetragen von caw (2762)
am 14.09.2011 - 20:46 Uhr

oh, na denn per hand einbauen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Für Drupal7 habe ich gerade

Eingetragen von hurgl (127)
am 14.09.2011 - 21:14 Uhr

Für Drupal7 habe ich gerade heute eine tolle Lösung gefunden, die auf jquery basiert:
http://www.chrisherberte.com/blog/drupal-7-and-jquery-ui-accordion

Gruss, hurgl

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: oh, na denn per hand

Eingetragen von Exterior (2903)
am 14.09.2011 - 21:23 Uhr
Zitat:

oh, na denn per hand einbauen

Für die Kleinigkeit ein extra Framework einbauen, wenn man kaum Ahnung von JS hat?

Zitat:

Für Drupal7 habe ich gerade heute eine tolle Lösung gefunden, die auf jquery basiert:

Er verwendet aber Drupal 6 ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Für die

Eingetragen von caw (2762)
am 15.09.2011 - 05:14 Uhr
Exterior schrieb

Für die Kleinigkeit ein extra Framework einbauen, wenn man kaum Ahnung von JS hat?

das sind zwei dateien...

  • Anmelden oder Registrieren um Kommentare zu schreiben

michi1983 schriebWas ich

Eingetragen von Anton (288)
am 15.09.2011 - 06:21 Uhr
michi1983 schrieb

Was ich jetzt also noch bräuchte ist ein Argument für jquery welches mir nur das child Element des jeweils angeklickten h2 öffnet.

In diesem Screencast von Berthold Lausch ist die Vorgehensweise sehr gut erklärt: klick (ab 5:10 min)
Und wie Exterior oben schon sagte, um dir wirklich helfen zu können, braucht man den HTML-Code, auf den du den Ausklappeffekt anwenden willst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

caw schrieb das sind zwei

Eingetragen von Exterior (2903)
am 15.09.2011 - 08:05 Uhr
caw schrieb

das sind zwei dateien...

Auch wieder wahr

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Leute, Danke für eure

Eingetragen von michi1983 (73)
am 15.09.2011 - 09:51 Uhr

Hallo Leute,

Danke für eure Antworten.
Sobald ich im Büro bin, poste ich den HTML Code, schau mir den Podcast an und werd etwas herumprobieren.
Ich editiere diesen Beitrag in ca einer Stunde mit den Ergebnissen.

MfG
Michael

Edit://

So hier ist mal der Quelltext, ich hoffe das reicht aus, sonst einfach sagen, dann poste ich noch mehr.

<div class="node">
<div class="taxonomy"></div>
<div class="content">
<h2>Punkt1:</h2>
<p class="hidden_paragraph">
Hier ist der Text zu Punkt1
<br>
</p>
<h2>Punkt2:</h2>
<p class="hidden_paragraph">Hier ist der Text zu Punkt2</p>
</div>
</div>

MfG
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Könntest du

Eingetragen von michi1983 (73)
am 15.09.2011 - 09:55 Uhr
Exterior schrieb

Könntest du mal den HTML-Aufbau der einzelnen Nodes geben? Denn ich vermute mal, dass es einen Div gibt, der sowohl die h2-Überschrift als auch den hidden_paragraph umschließt. In dem Fall könntest du dich mit .parent() bis zu diesem Div durchhangeln, darauf ein .find() anwenden und das ganze dann mittels .show() einblenden. Ich vermute mal aufgrund deines Codes, dass es einen umschließenden Div mit der Klasse node gibt.

Kleines Beispiel:

Mal angenommen, dein HTML-Code würde so aussehen:

<div class="node-inner-1">
  <div class="node">
    <h2>Überschrift 1</h2>

    <p class="hidden_paragraph">Mein erster Inhalt</p>
  </div>
</div>

<div class="node-inner-2">
  <div class="node">
    <h2>Überschrift 2</h2>

    <p class="hidden_paragraph">Mein zweiter Inhalt</p>
  </div>
</div>

In dem Fall hast du also zwei Nodes in ihren "Containern" aber es soll natürlich nur der zugehörige hidden_paragraph geöffnet werden, wenn man ein h2 anklickt.

Also könnte man das ganze so machen:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   // in $(this) steht das Element, auf das du geklickt hast - KEINE Quotes um das this machen!
                   // mit .parent() kommt man zum darüberliegenden Element - wir würden also beim Div mit der Klasse "node" landen
                   // allerdings kommen wir genau bei diesem Div heraus, nicht etwa bei allen mit der Klasse "node"
                   // .find() findet alle "Kind-Elemente" eines vorgegebenen Elements, die auf den Selektor passen
                   $(this).parent().find('p.hidden_paragraph').show('slow');
                  
                   //theoretisch dürfte auch sowas funktionieren, müsste man ausprobieren:
                   // das blendet die Text ein oder aus, je nachdem, ob sie bereits sichtbar sind
                   // dann muss natürlich der Code oben (also der die hidden_paragraphs anzeigt) durch den hier ersetzt werden - beide gleichzeitig ist sinnfrei
                   var hidden_ps = $(this).parent().find('p.hidden_paragraph');
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       hidden_ps.show('slow');
                     }
                   else 
                     {
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

Das funktioniert insofern, dass sich beim Klick auf eine h2 der Text darunter öffnet, und bei einem weiteren Klick auf eine h2 sich der Text wieder verbirgt.
Jedoch habe ich noch das selbe Problem wie vorhin, dass sich ALLE Texte mit der class "hidden_paragraph" öffnen und schließen.

Ich werd mir jetzt mal den Podcast anschauen der 2-3 Posts früher geposted wurde.

MfG
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schriebKönntest du

Eingetragen von michi1983 (73)
am 15.09.2011 - 09:56 Uhr

Sorry, die Antwort wurde doppelt abgespeichert, bitte löschen!
Thx,
Gruß,
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Achso, das ändert die

Eingetragen von Exterior (2903)
am 15.09.2011 - 10:05 Uhr

Achso, das ändert die Sachlage ein wenig, hatte mir das ganze anders vorgestellt.
Du könntest, wie von caw vorgeschlagen, das Framework einbinden oder du probierst mal dieses Javascript:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   $(this).next().show('slow');
                  
                   //Alternative mit ein- und ausblenden:
                   var hidden_ps = $(this).next();
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       hidden_ps.show('slow');
                     }
                   else 
                     {
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

Das funktioniert aber nur, wenn der hidden_paragraph direkt auf das h2 folgt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Exterior, danke für die

Eingetragen von michi1983 (73)
am 15.09.2011 - 10:08 Uhr

Hi Exterior,

danke für die Antwort. Ich werd das gleich probieren.
Jetzt muss ich aber kurz zum Verständnis (und bitte geduldig sein mit mir, ich bin wie gesagt absoluter JS Anfänger) eine Frage stellen:
Javascript = jquery?

Würde ja bedeuten, dass wenn jemand im Browser Javascript deaktiviert hat, das ganze aus- und einklappen gar nicht funktioniert, richtig?

Gruß,
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Achso, das

Eingetragen von michi1983 (73)
am 15.09.2011 - 10:10 Uhr
Exterior schrieb

Achso, das ändert die Sachlage ein wenig, hatte mir das ganze anders vorgestellt.
Du könntest, wie von caw vorgeschlagen, das Framework einbinden oder du probierst mal dieses Javascript:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   $(this).next().show('slow');
                  
                   //Alternative mit ein- und ausblenden:
                   var hidden_ps = $(this).next();
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       hidden_ps.show('slow');
                     }
                   else 
                     {
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

Das funktioniert aber nur, wenn der hidden_paragraph direkt auf das h2 folgt.

Hier wird zwar der "richtige" Text ausgeklappt, der wird aber nach 1 Sekunde ohne Aktion sofort wieder eingeklappt.

Gruß,
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du mußt Dir darüber im Klaren

Eingetragen von wla (9461)
am 15.09.2011 - 10:52 Uhr

Du mußt Dir darüber im Klaren sein, daß aktive Änderungen auf der Client-Seite (der Server ist dabei ja nicht involviert) wie das Auf- und Zuklappen von Text, ohne JavaScript nicht gehen kann. Man sollte nur dafür sorgen, daß die Seite auch ohne JavaScript (jQuery ist eine JavaScript Library) funktioniert bzw, der Text dann ausgeklappt gezeigt wird.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du solltest auch die

Eingetragen von Exterior (2903)
am 15.09.2011 - 12:23 Uhr

Du solltest auch die Kommentare im Code lesen ;) das untere ist eine Alternative. Da kommt erst eine Zeile, die nur einblendet und danach ein Block, der ein- und ausblenden kann, du musst dich also eintscheiden, welchen der Code-Blöcke du verwendest, beide gleichzeitig zu verwenden resultiert natürlich in dem Problem, dass du beschrieben hast (aufklappen und direkt danach wieder zuklappen). Aber um dich nicht noch weiter zu verwirren, mach ich das mal für dich ;)

Verwende also statt des oben geposteten Blocks das hier:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {

                   var hidden_ps = $(this).next();
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       hidden_ps.show('slow');
                     }
                   else 
                     {
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Achso, das

Eingetragen von michi1983 (73)
am 16.09.2011 - 09:00 Uhr
Exterior schrieb

Achso, das ändert die Sachlage ein wenig, hatte mir das ganze anders vorgestellt.
Du könntest, wie von caw vorgeschlagen, das Framework einbinden oder du probierst mal dieses Javascript:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   $(this).next().show('slow');
                  
                   //Alternative mit ein- und ausblenden:
                   var hidden_ps = $(this).next();
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       hidden_ps.show('slow');
                     }
                   else 
                     {
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

Das funktioniert aber nur, wenn der hidden_paragraph direkt auf das h2 folgt.

So, das hier funktioniert schon mal so wie ichs gern hätte, nur, dass ich gern hätte, dass beim klick auf z.B. den 2. Punkt der 1. wieder einklappt.
Ich hoff, dass krieg ich auch noch irgendwie gebacken. Falls es nur eine Kleinigkeit für euch ist, würds mich freuen wenn ihr mir helft :)
Danke!

MfG
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier mal das

Eingetragen von Exterior (2903)
am 16.09.2011 - 09:54 Uhr

Probier mal das hier:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   var hidden_ps = $(this).next();
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       $('.opened_hidden_ps').hide('slow').removeClass('opened_hidden_ps');
                       hidden_ps.show('slow');
                       hidden_ps.addClass('opened_hidden_ps');
                     }
                   else 
                     {
                       hidden_ps.removeClass('opened_hidden_ps');
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Probier mal

Eingetragen von michi1983 (73)
am 16.09.2011 - 10:22 Uhr
Exterior schrieb

Probier mal das hier:

if(Drupal.jsEnabled){
   $(document).ready(
           function(){
               $('.node h2').click(function () {
                  
                   var hidden_ps = $(this).next();
                  
                   if (hidden_ps.css('display') == 'none')
                     {
                       $('.opened_hidden_ps').hide('slow').removeClass('opened_hidden_ps');
                       hidden_ps.show('slow');
                       hidden_ps.addClass('opened_hidden_ps');
                     }
                   else 
                     {
                       hidden_ps.removeClass('opened_hidden_ps');
                       hidden_ps.hide('slow');
                     }
                  
                   return false;
               });
           }
   )
}

Du bist ein Genie! :)
Danke vielmals!

Gruß
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, ich hab mich ein klein

Eingetragen von michi1983 (73)
am 16.09.2011 - 11:57 Uhr

Okay, ich hab mich ein klein wenig zu früh gefreut.

Es funktioniert natürlich genau so wie du gesagt hast, allerdings hab ich das Problem (welches ich zugegebener Maßen vorher nicht bedacht und erläutert habe), dass ich ja unter einer h2 auch mehrere Absätze haben kann, die versteckt werden sollen. Versteckt werden auch alle, jedoch wird nur immer das erste p Element wieder sichtbar gemacht beim click.

Jetzt hab ich mir überlegt ich nehme statt dem p Parameter einfach einen div und lege den über den komplett markierten Text den ich verstecken möchte.
Oder kann man den Code so umändern, dass er alle p Elemente nach unten abgrast, bis er wieder zu einem h2 stößt?
Wie müsste dann der Code ausschauen bzw. was müsste ich genau abändern.

Ich müsste dann ja auch sicher hier:"
Ich hab die default.js meines WYSIWYG Profiles des CKEditors abgeändert und hab dort zwei p hingebastelt.
Einmal ein p mit der class:"hidden_paragraph" und ein p mit der class:"visible_paragraph".
Somit kann ich dem Text, den ich verstecken möchte im Editor diese class zuweisen."

etwas ändern oder?

MfG
Michael

//Edit:

Ich habe jetzt eine "funktionierende" Lösung gefunden in dem ich die verschiedenen Absätze die zu einem h2 Element gehören mit SHIFT+ENTER trenne, somit wird ein br eingefügt und kein p und alles funktioniert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also wenn, dann wäre es

Eingetragen von Exterior (2903)
am 16.09.2011 - 13:14 Uhr

Also wenn, dann wäre es sinnvoller, einen Div um die p-Tags zu bauen, anstatt mehrere hidden_paragraphs anzusprechen und zu zeigen, das sieht dann nämlich sehr bescheiden aus.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das sehe ich ja auch so, nur

Eingetragen von michi1983 (73)
am 16.09.2011 - 20:35 Uhr

Das sehe ich ja auch so, nur weiß ich nicht wie ich das anstelle.
Muss ich das in der default.js vom CKEditor machen wo ich bisher dem Element p die Klassen visible und hidden verpasst habe?
Oder denke ich komplett falsch?!

MfG
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nochmal kurz für mein

Eingetragen von Exterior (2903)
am 16.09.2011 - 21:06 Uhr

Nochmal kurz für mein Verständnis: Wie genau legst du die Überschriften und hidden_paragraphs an? Weist du die Klasse manuell zu oder wie genau machst du das?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich glaube hier geht es

Eingetragen von Nevson (158)
am 16.09.2011 - 21:23 Uhr

ich glaube hier geht es komplett von hinten durch die Brust ins Auge.
Für das recht einfache Problem aus dem ersten Post ist der Weg übers "anpassen der default.js..." doch ziemlich umständlich.
Defacto ist es doch eine einfache view die Titel und Text ausgibt. Bei klick auf den Titel zeigt sich der Text dazu oder?
Warum dann nicht mit einem Script direkt die Ausgabe der View ansprechen?
Wozu da erst classen im ckeditor hinzufügen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also nochmal ganz von

Eingetragen von michi1983 (73)
am 17.09.2011 - 00:53 Uhr

Also nochmal ganz von vorne:

Ich möchte die Möglichkeit haben, mitten im Text eines x-beliebigen Nodes gewisse Abschnitte eines Textes so zu gestalten, dass ich eine Überschrift definiere und den nachfolgenden Text verschwinden lasse, bis ich auf die Überschrift klicke, erst dann soll sich der Text darunter "ausklappen". Falls darunter eine 2. Überschrift ist (die ebenso anschließenden Text besitzt welcher sich beim Klick darauf "ausklappen" soll) und auf die geklickt wird, soll sich der Text der 1. Überschrift wieder "einklappen" und der Text der 2. Überschrift "ausklappen". Selbes Szenario bei Überschrift 3 und 4, falls vorhanden.

Da ich diese Möglichkeit aber wie gesagt an x-beliebigen Stellen anwenden möchte, kann ich schwer mit Inhaltstypen und Views arbeiten (wenn ich das korrekt verstehe?!).

Deshalb hab ich mich für die Jquery Methode entschieden.
Ich habe in der default.js vom CKEditor alle Formatierungen rausgeworfen (da ich die eh nicht benötige) und habe lediglich 2 davon dringelassen und angepasst.
Beides sind p Elemente denen ich eben eine Class "visible_paragraph" und "hidden_paragraph" zugewiesen habe.

Somit hab ich die Möglichkeit wenn ich einen Artikel bearbeite einem Text die Klasse "hidden_paragraph" zuzuweisen und ihn somit (da ich das so in der style.css vom theme für die Klasse "hidden_paragraph" angewendet habe) verschwinden zu lassen. Der Überschrift über diesem Text verpasse ich den Tag h2 damit der Code aus meiner erstellten ai.js (von mir frei gewählter name) greift.

Dies funktioniert auch alles so wie es sollte nur eben mit den oben Beschriebenen Einschränkungen mit denen ich eigentlich leben könnte, es jedoch "designtechnisch" schöner wäre, einen div um das von mir gewünschte p Element zu legen, damit ich nicht mit br (Shift+Enter) arbeiten muss.

Ich hoffe ich konnte das jetzt so rüberbringen damit es verständlich ist.

MfG
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 2 Tagen
  • Hey danke
    vor 2 Wochen 3 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 3 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 3 Wochen 5 Tagen
  • In der entsprechenden View
    vor 3 Wochen 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 5 Tagen
  • gelöst
    vor 6 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20454

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 25 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association