Page 1 of 12

Code - Fragen

Posted: Sun Nov 26, 2017 10:24 am
by lck
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');
    }
    });
}); 

Re: Code - Fragen

Posted: Sun Nov 26, 2017 10:32 am
by frase
evtl. könnte toggleClass das Ganze etwas vereinfachen:

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

Re: Code - Fragen

Posted: Sun Nov 26, 2017 12:37 pm
by cmb
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.

Re: Code - Fragen

Posted: Sun Nov 26, 2017 1:23 pm
by lck
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.

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

Posted: Sun Nov 26, 2017 2:05 pm
by lck
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;?>

Re: Code - Fragen

Posted: Sun Nov 26, 2017 2:25 pm
by frase
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.

Re: Code - Fragen

Posted: Sun Nov 26, 2017 2:53 pm
by lck
Danke Frank.
Sehe gerade, dass wir das Thema schon mal hatten. Muss ich erst noch testen, hoffe aber, es gibt eine einfachere Methode.

Re: Code - Fragen

Posted: Sun Nov 26, 2017 3:17 pm
by frase

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.

Re: Code - Fragen

Posted: Sun Nov 26, 2017 3:57 pm
by cmb
frase wrote:So klappt es, wenn du dich in irgendeiner Plugin-Administration befindest.
Nicht schön, aber es erfüllt den Zweck. :)

Re: Code - Fragen

Posted: Sun Nov 26, 2017 8:22 pm
by lck
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.';
}