Code - Fragen

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Post Reply
lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Code - Fragen

Post by lck » Sun Nov 26, 2017 10:24 am

Kann man das auch zusammenfassen/kürzer schreiben?

Code: Select all

$(function(){
    $(window).scroll(function() {
    if($(window).scrollTop() >= 100) {
    $('body').addClass('is-scrolled');
    }
    else {
    $('body').removeClass('is-scrolled');
    }
    });
    
    $(window).scroll(function() {
    if($(window).scrollTop() >= 200) {
    $('body').addClass('is-scrolled-2');
    }
    else {
    $('body').removeClass('is-scrolled-2');
    }
    });
}); 
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Code - Fragen

Post by frase » Sun Nov 26, 2017 10:32 am

evtl. könnte toggleClass das Ganze etwas vereinfachen:

http://api.jquery.com/toggleclass/

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Code - Fragen

Post by cmb » Sun Nov 26, 2017 12:37 pm

lck wrote:Kann man das auch zusammenfassen/kürzer schreiben?
Sollte man sogar, damit nicht zwei Eventhandler bei jedem Scrollen aufgerufen werden müssen, also:

Code: Select all

$(function () {
    $(window).scroll(function () {
        if ($(window).scrollTop() >= 100) {
            $('body').addClass('is-scrolled');
        } else {
            $('body').removeClass('is-scrolled');
        }
        if ($(window).scrollTop() >= 200) {
            $('body').addClass('is-scrolled-2');
        } else {
            $('body').removeClass('is-scrolled-2');
        }
    });
});
Weiter vereinfachen kann man wohl nicht, wenn wirklich beide Klassen gebraucht werden. Es ist allerdings denkbar, dass man CSS Selektoren auf ein data-Attribut anwendet, und ggf. dessen Wert berücksichtigt:

Code: Select all

$(function () {
    $(window).scroll(function () {
        if ($(window).scrollTop() >= 200) {
            document.body.setAttribute('data-scrolled', 2);
        } else if ($(window).scrollTop() >= 100) {
            document.body.setAttribute('data-scrolled', 1);
        } else {
            document.body.removeAttribute('data-scrolled');
        }
    });
});
frase wrote:evtl. könnte toggleClass das Ganze etwas vereinfachen:
In diesem Fall wohl eher nicht, da toggle() immer umschaltet, aber Scrollevents ja für 110, 120, 130 etc. aufgerufen werden könnten.
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Sun Nov 26, 2017 1:23 pm

cmb wrote:In diesem Fall wohl eher nicht, da toggle() immer umschaltet, aber Scrollevents ja für 110, 120, 130 etc. aufgerufen werden könnten.
Stimmt. Getestet, das geht nicht.
cmb wrote:Sollte man sogar, damit nicht zwei Eventhandler bei jedem Scrollen aufgerufen werden müssen, also:
...
Weiter vereinfachen kann man wohl nicht, wenn wirklich beide Klassen gebraucht werden.
Ich brauche alle 2 Klassen, passt danke.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen > XH_ADM && ...

Post by lck » Sun Nov 26, 2017 2:05 pm

Ob man sich gerade im Admin&Edit-Mode befindet, kann mann ja so abfragen und dann etwas ausgeben:

Code: Select all

<?php if (XH_ADM && $edit):?>
    <?php echo ... ; ?>
<?php endif;?>
Ist es auch möglich eine Abfrage zu erstellen, wenn man sich unter Plugins in irgendeinen Administrationsmenü befindet? So nach dem Schema:

Code: Select all

<?php if (XH_ADM && $xh_plugins):?>
    <?php echo ... ; ?>
<?php endif;?>
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Code - Fragen

Post by frase » Sun Nov 26, 2017 2:25 pm

lck wrote:Ist es auch möglich eine Abfrage zu erstellen
Du weißt, dass ich nicht gerade ein PHP-Guru bin ;-)
Trotzdem möchte ich dir berichten, dass ich eine Javascript-Lösung neulich entdeckte, mit der das ganz gut geht.
Kannste sehen in der script.min.js (die noch nicht minifiziert ist) aus dem Template von hier.
Dort ganz unten ab: // read url params
Ich bin ganz stolz auf mich, dass ich das selbst gefunden habe ;-)
Bin aber ziemlich sicher, dass mir das ein erfahrener Programmierer um die Ohren schlagen würde/wird.
Es funktioniert aber.
Du kannst also mit getUrlParameter die Parameter des gewünschten Plugins vergleichen und dann etwas ausführen.

Willst du aber unbedingt PHP haben, dann schau mal im hi_admin-Plugin in admintemplate.inc.php.
Dort wird auch in der ersten Funktion nach solchen Dingen abgefragt.

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Sun Nov 26, 2017 2:53 pm

Danke Frank.
Sehe gerade, dass wir das Thema schon mal hatten. Muss ich erst noch testen, hoffe aber, es gibt eine einfachere Methode.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Code - Fragen

Post by frase » Sun Nov 26, 2017 3:17 pm

Code: Select all

<?php
function wantsAnyPluginAdministration() {
    foreach (XH_plugins(true) as $plugin) {
        if (XH_wantsPluginAdministration($plugin)) {
            return true;
        }
    }
    return false;
}
if (XH_ADM && wantsAnyPluginAdministration()) {
    echo 'Du befindest dich jetzt in der Pluginadministration.';
}
?>
So klappt es, wenn du dich in irgendeiner Plugin-Administration befindest.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Code - Fragen

Post by cmb » Sun Nov 26, 2017 3:57 pm

frase wrote:So klappt es, wenn du dich in irgendeiner Plugin-Administration befindest.
Nicht schön, aber es erfüllt den Zweck. :)
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Code - Fragen

Post by lck » Sun Nov 26, 2017 8:22 pm

frase wrote:So klappt es, wenn du dich in irgendeiner Plugin-Administration befindest.
cmb wrote:... erfüllt den Zweck.
Danke. Ganz schön umständlich, aber wenn's funktioniert. Wie bringe ich nun die beiden zusammen, zwecks Hochzeit:

Code: Select all

<?php if (XH_ADM && $edit):?>
    <?php echo ... ; ?>
<?php endif;?>
und

Code: Select all

if (XH_ADM && wantsAnyPluginAdministration()) {
    echo 'Du befindest dich jetzt in der Pluginadministration.';
} 
Last edited by lck on Mon Nov 27, 2017 6:10 pm, edited 1 time in total.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

Post Reply