Page 1 of 1

Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 15:02
by Uwe367
Hallo zusammen,

Ist es generell möglich mit javascript (jquery) aus der Vorlage (Admin --> Vorlage) auf eine bestimmte Kategorie (z.B. Home) zu triggern um dort Inhalte ein- bzw. auszublenden und falls ja... wie?

Hintergund ist folgender:
Ich arbeite zur Zeit an einer Seite, sie mit pjax läuft. Hierbei handelt es sich im Hauptbereich um ein dreispaltiges Layout mit den Ersetzern

Code: Select all

{ LEFT } { CONTENT }  { RIGHT }
Pjax lädt ausschließlich den Contentbereich neu, jedoch ist es nun so, daß auf der Seite "Home" in der rechten Spalte ein anderer Inhalt erscheinen soll als auf den restlichen Unterseiten. Somit müßte auch der Bereich { RIGHT } neu geladen werden, jedoch ist das mit pjax nicht möglich da es nur einen Container neu laden kann.

Nun kam ich auf die Idee ein Javascript in den pjax Bereich einzubauen welches den Inhalt in der rechten Spalte { RIGHT } bei einem Klick auf die entsprechende Unterseite verändert, also den alten Inhalt aus- und den neuen Inhalt einblendet.
Jedoch müßte ich dazu explizit auf die entsprechende Kategorie triggern können damit das ganze nicht global über die ganze Seite abläuft.
Die Inhalte, die in der rechten Spalte ausgetauscht werden sollen kann ich mittels { SHOW_CONTENT:CP,id } aus einer versteckten Kategorie laden da dieser RT in der Vorlage gerendert wird.

In praktischer (Beispiel)Form hatte ich mir das ganze in etwa so vorgestellt:

Wenn Kategorie "Home" aktiv
rechte Spalte { SHOW_CONTENT:CP,124 }
andernfalls (alle anderen Unterseiten)
rechte Spalte { SHOW_CONTENT:CP,75 }

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 16:03
by nameless1
das ist doch viel zu komplex gedacht. dann lädt pjax halt content und right jedes mal mit. du setzt es ja wegen eines gewünschten effekts ein nicht um minimal daten zu laden.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 16:11
by Uwe367
Da kann ich dir jetzt leider nicht ganz folgen. Laut Pjax-Doku kann Pjax nur EINEN Container neu laden, hier müßten es aber 2 sein. Es bringt auch nichts die beiden Container nochmals in einen Wrapper zu packen und pjax auf diesen Wrapper anzusetzen, habe ich schon versucht. Also wirds wohl keine andere Möglichkiet geben oder habe ich etwas übersehen?
Klar setze ich es wegen einem Effekt ein, der übrigens auch sehr gut ankam, aber ich wüßte nun nicht wie ich pjax dazu "überreden" könnte 2 Container neuzuladen.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 17:29
by Old Boy
Verwende doch für die beiden unterschiedlichen Inhalte einfach 2 zusätzliche CustomBlocks!

{RECHTS_1} und {RECHTS_2}

mit einem HTML Contentpart auf der Homepage schaltest du dann per <!--CSS: xxx --> Anweisung einfach die Sichtbarkeit der Container EIN und/oder AUS!

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 17:52
by santscho
Oder mit Kategorie-CSS. Jede Kategorie kann eine CSS-Klasse zugewiesen werden. Dann mit css die Sichtbarkeit des Inhaltes steuern. Das geht 100%. Aufwand: 10 Minuten. Morgen habe ich am Abend Zeit um das hier schnell zu posten. Wenn Du interessiert bist.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 18:17
by nameless1
Uwe367 wrote:Da kann ich dir jetzt leider nicht ganz folgen. Laut Pjax-Doku kann Pjax nur EINEN Container neu laden, hier müßten es aber 2 sein. Es bringt auch nichts die beiden Container nochmals in einen Wrapper zu packen und pjax auf diesen Wrapper anzusetzen, habe ich schon versucht. Also wirds wohl keine andere Möglichkiet geben oder habe ich etwas übersehen?
Klar setze ich es wegen einem Effekt ein, der übrigens auch sehr gut ankam, aber ich wüßte nun nicht wie ich pjax dazu "überreden" könnte 2 Container neuzuladen.
entscheidend ist ja letztlich was du austauschen lässt.

gehen wir mal vom folgenden fall aus
<wrapper>
- <header></header>
- <content></content>
- <right></right>
</wrapper>

du tauschst doch im moment mE nur den inhalt von content aus. also konkret
<wrapper>
- <header></header>
- <!--pjax_start-->
-- <content></content>
- <!--pjax_end-->
- <right></right>
</wrapper>

in dem moment wo wir aber einfach mehr von der seite austauschen lassen, also
<wrapper>
- <header></header>
- <!--pjax_start-->
-- <content></content>
-- <right></right>
- <!--pjax_end-->
</wrapper>
ist das problem doch gelöst.

nochmal anders aufgerollt. Warum setzt du pjax ein? um nur den header nicht neu laden zu lassen. das heißt theroetisch könnte alles andere onmouseclick neu geladen werden, nur der header nicht.

oder
Uwe367 wrote:jedoch ist das mit pjax nicht möglich da es nur einen Container neu laden kann.
entscheidend ist doch wie groß oder klein du diesen container definierst.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 18:48
by Uwe367
Erstmal danke für eure Lösungsvorschläge.

Das hier

Code: Select all

<wrapper>
- <header></header>
- <!--pjax_start-->
-- <content></content>
-- <right></right>
- <!--pjax_end-->
</wrapper>
habe ich bereits versucht und das funktioniert nicht. Warum?
Genau deswegen kann das nicht funktionieren:

Code: Select all

$(document).ready(function() {
	$(document).pjax('a', '#content'); // bind on a
});
Hier wird der Container definiert, in dem pjax den Content austauscht und davon kann man nur EINEN setzen. Setze ich hier 2 Container ein, z.B.

Code: Select all

$(document).ready(function() {
	$(document).pjax('a', '#content', '#right'); // bind on a
});
läuft die Seite so als wäre pjax nicht implementiert.
Von daher werden mir Customblocks und auch die CSS Klasse, die ich in der Kategorie angeben kann, nicht viel nutzen.

Und so wie ich das hier verstehe
https://github.com/defunkt/jquery-pjax/issues/124
ist das auch nur über Umwege möglich.

Könnte ich aber hier

Code: Select all

- <!--pjax_start-->
-- <content></content>
<!-- JS: ..... -->
<!--pjax_end-->
ein Script platzieren wie ich mir das, s.o., vorstelle, so sollte das kein Problem sein aber dafür müsste ich eben wissen wie ich auf die Kategorie triggern kann.

Das hier funktioniert ja auch einwandfrei damit der Seitentitel neu geladen wird.

Code: Select all

<!--pjax_start-->
<script>
$(document).ready(function () {
    $(document).attr("title", "pjax-test | {CATEGORY}");
	});
</script>
<!--PJAX_END//-->
Na ich probier mal weiter.
Trotzdem danke euch :)

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Thu 9. Oct 2014, 19:31
by Oliver Georgi
Off topic: Macht endlich Schluß mit

Code: Select all

$(document).ready(function(){
}); 
=
$(function(){
});

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Fri 10. Oct 2014, 10:55
by nameless1
Uwe367 wrote: Hier wird der Container definiert, in dem pjax den Content austauscht und davon kann man nur EINEN setzen. Setze ich hier 2 Container ein, z.B.
dann wrappst du halt deine beiden container. es hat einen grund das die von dir angestrebte lösung nicht existiert. logik löst alles.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Sat 11. Oct 2014, 08:58
by Uwe367
nameless1 wrote: dann wrappst du halt deine beiden container.....
Okok.. ich hatte einen kleinen Denkfehler bei dem ganzen aber nun scheints zu klappen.
Ich hatte beim setzen des Wrappers vollkommen vergessen daß ich mit Bootstrap arbeite und den Wrapper entsprechend falsch positioniert.
Merci.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Sat 11. Oct 2014, 15:09
by Uwe367
Allerdings würde es mit trotzdem interessieren obs einen solchen TAG, z.B. etwas wie { CATEGORYID,0 } wie in meinem Eingangsposting beschrieben, gibt.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Sat 11. Oct 2014, 17:55
by Oliver Georgi
den gibt es immer — über frontend_render.

Re: Mit javascript auf eine bestimmte Kategorie triggern

Posted: Sat 11. Oct 2014, 18:22
by Uwe367
Oliver Georgi wrote:den gibt es immer — über frontend_render.
Ok danke.
Wäre ja möglich gewesen daß es sowas in der Art schon geben würde.