Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Slider Javascript und CSS nur auf Startseite einbinden

    kaisa

    • Schreiberling
    • Beiträge: 365
    Ich möchte unnötiges Laden von Slider-Javascript und CSS-Datei verhindern.

    In der CSS funktioniert diese Abfrage leider nicht. Woran liegt das?
    Code: PHP  [Auswählen]
    <?php if ($page == 'index'){ ?>
        <link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/royalslider/royalslider.css" type="text/css" media="screen" />
        <link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/royalslider/skins/minimal-white/rs-minimal-white.css" type="text/css" media="screen" />
    <?php ;} ?>

    In der javascript/general.js.php ist die selbe Abfrage und funktioniert da anscheinend:
    Code: PHP  [Auswählen]
    <?php if ($page == 'index'){ ?>

        <script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/royalslider/jquery.royalslider.min.js" type="text/javascript"></script> .... <?php ;} ?>


    Linkback: https://www.modified-shop.org/forum/index.php?topic=27979.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #1 am: 12. Oktober 2013, 14:46:37
    Das Thema wurde schon zig mal im Forum besprochen und die Frage beantwortet.

    Vielleicht ein für alle mal ?
    Code:

    PHP-Dateien (oft benutzt aber der konsistenten Syntax nach Wirrwarr):
    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, FILENAME_DEFAULT) && $_GET['cPath'] == null && $_GET['manufacturers_id'] == '') {
        INCLUDE_YOUR_CODE
    }

    oder (verständlicher)
    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, 'index') && !isset($_GET['cPath']) && !isset($_GET['manufacturers_id'])) {
        INCLUDE_YOUR_CODE
    }

    Template-Dateien (Wirrwarr s.o.):
    Code: PHP  [Auswählen]
    {if strpos ($smarty.server.PHP_SELF, 'index')}
        {if $smarty.get.cPath == null and $smarty.get.manufacturers_id == ''}
            INCLUDE_YOUR_CODE
        {/if}
    {/if}

    oder (auch nicht viel besser)
    Code: PHP  [Auswählen]
    {if strpos ($smarty.server.PHP_SELF, 'index') && $smarty.get.cPath == null && $smarty.get.manufacturers_id == ''}
        INCLUDE_YOUR_CODE
    {/if}

    oder (besser)
    Code: PHP  [Auswählen]
    {if strpos($smarty.server.PHP_SELF, 'index') && !$smarty.get.cPath && !$smarty.get.manufacturers_id}
        INCLUDE_YOUR_CODE
    {/if}



    In Worten:
    Wenn ((index.php in der URL vorkommt) und (im Query-String ?cPath=X nicht vorkommt) und (nicht ?manufacturers_id=X vorkommt)) {
    DANN MACH DIES UND DAS
    }

    Um das zu verstehen schaltet man SEO-URLs aus
    - wenn man sie denn aktiviert hat -
    und sieht die "echten" URLs die server-intern aufgerufen werden
    - die SEO-URLs werden ja mittels Shopstat und htaccess nur auf die server-internen URLs umgeschrieben -
    und versteht dann (vielleicht ;-)).

    Die komplex erscheinende if-Abfrage ist notwendig weil
    • index.php auch auf Kategorie-Seiten vorkommt
      (/index.php?cPath=X)
    • index.php auch auf Hersteller-Seiten vorkommt
      (/index.php?manufacturers_id=X)
    • es jedoch für die Abfrage ob wir uns auf der Startseite befinden keine bessere Methode existiert als nach dem Vorkommen von index.php zu fragen

    Savvy ?

    Gruß,
    noRiddle

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.852
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #2 am: 12. Oktober 2013, 16:37:15
    ...
    PHP-Dateien (oft benutzt aber der konsistenten Syntax nach Wirrwarr):
    ...
    oder (verständlicher)
    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, 'index') && !isset($_GET['cPath']) && !isset($_GET['manufacturers_id'])) {
        INCLUDE_YOUR_CODE
    }
    ...

    Ich hab hier auch teilweise schon das hier gelesen, was ist denn nun besser? Also die Prüfung auf "false"

    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, 'index')!==false && !isset($_GET['cPath']) && !isset($_GET['manufacturers_id'])) {
        INCLUDE_YOUR_CODE
    }

    Grüße
    Dominik

    kaisa

    • Schreiberling
    • Beiträge: 365
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #3 am: 12. Oktober 2013, 17:07:19
    Wow. Danke für die ausführliche Übersicht. Es scheint, deine Abfrage scheint alleine auf die Startseite zu zielen. Es wäre sicher für andere hilfreich, wie man Kategorie-/Content- oder Produktseiten abfragen kann. Oder was es sonst noch so gibt.

    Ich habe deine letzte Version eingebaut und dann ist meine Startseite leer. Irgendwas stimmt daran nicht.
    Code: PHP  [Auswählen]
    {if strpos($smarty.server.PHP_SELF, 'index') && !$smarty.get.cPath && !$smarty.get.manufacturers_id}
        <link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/royalslider/royalslider.css" type="text/css" media="screen" />
        <link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/royalslider/skins/minimal-white/rs-minimal-white.css" type="text/css" media="screen" />
    {/if}

    Die CSS-Datei wird auch auf Produktseiten geladen. hmmm

    Ich hab hier auch teilweise schon das hier gelesen, was ist denn nun besser? Also die Prüfung auf "false"

    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, 'index')!==false && !isset($_GET['cPath']) && !isset($_GET['manufacturers_id'])) {
        INCLUDE_YOUR_CODE
    }
    Also, von !== habe ich noch nie was gehört. Gibt es das?

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.852
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #4 am: 12. Oktober 2013, 18:03:12
    du hast ja auch in eine php Datei die Abfrage für html Seiten eingebaut.

    noRiddle hatte es dir eigentlich sauber untergliedert in: php & Template-Dateien (html)

    Grüße
    Dominik

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #5 am: 12. Oktober 2013, 18:36:36
    ...
    PHP-Dateien (oft benutzt aber der konsistenten Syntax nach Wirrwarr):
    ...
    oder (verständlicher)
    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, 'index') && !isset($_GET['cPath']) && !isset($_GET['manufacturers_id'])) {
        INCLUDE_YOUR_CODE
    }
    ...

    Ich hab hier auch teilweise schon das hier gelesen, was ist denn nun besser? Also die Prüfung auf "false"

    Code: PHP  [Auswählen]
    if (strpos($PHP_SELF, 'index')!==false && !isset($_GET['cPath']) && !isset($_GET['manufacturers_id'])) {
        INCLUDE_YOUR_CODE
    }

    Grüße
    Dominik

    Ich denke das ist eigentlich egal.
    strpos() gibt ja die Position des gesuchten sog. needle (hier = index.php) als (int)Positionsangabe zurück und wenn needle nicht gefunden wird den Boolean-Wert false.
    strpos($PHP_SELF, 'index') würde also z.B. auf der Startseite zwar als Rückgabe die Position des Wortes in der URL geben, aber ich lasse mir die Rückgabe ja nicht ausgeben, bzw. verwende ich sie nicht weiter,
    weshalb ich einfach fragen kann ob es überhaupt eine Rückgabe gibt, was bei dem Boolean false nicht der Fall wäre.
    Guter Trick, ne ? ;-).

    Somit würde ich die kürzere Variante bevorzugen.

    Im übrigen gilt strpos() auch als schneller als strstr() weil strstr() zwar in unserem Kontext ähnlich verwendet werden könnte aber als Ausgabe den kompletten gesuchten String einschließlich dem was folgt bis zum Ende ausgibt, während strpos() sobald er den String gefunden hat aufhört weiter zu "scannen".

    @kaisa
    Abfragen für Kategorie- und Content-Seiten sind nicht Thema dieses Threads und du kannst es dir doch denken (bzw. mittels Abschalten der SEO-URLs selbst rausfinden) nach meiner ausführlichen Erklärung.

    Gruß,
    noRiddle

    kaisa

    • Schreiberling
    • Beiträge: 365
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #6 am: 12. Oktober 2013, 21:54:02
    Danke, es klappt.
    Ich war nur verwirrt, da ich ja eine Datei im Template bearbeitete, war halt PHP. Dann stand noch über jedem Code "PHP". Kann man leicht übersehen.

    @riddle: danke für deine Mühe, es war nur einen Anregung mit den anderen Seiten, um das Thema ein für allemal zu erschlagen. Aber etwas jagd-/programmiereifer bleibt dann ja ;)

     :thx: :thx:

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #7 am: 12. Oktober 2013, 22:04:04
    Wenn es sich um die Shopversion 1.06 handelt, kann man das ganze PHP-Wirrwarr in der index.html über Bord werfen und einfach nur mit {if $home} ... {/if} arbeiten. Denn $home wird genau durch dieses PHP-Wirrwarr in der source/boxes.php gesetzt.

    Gruß
    Ronny

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #8 am: 06. Juli 2020, 18:57:59
    Hallo zusammen,

    in meiner general.js.php

    Code: PHP  [Auswählen]
    <?php

    /*-----------------------------------------------------------
       $Id:$

       modified eCommerce Shopsoftware
       http://www.modified-shop.org

       Copyright (c) 2009 - 2013 [www.modified-shop.org]
      -----------------------------------------------------------
       based on: (c) 2003 - 2006 XT-Commerce (general.js.php)
      -----------------------------------------------------------
       Released under the GNU General Public License
       -----------------------------------------------------------
    */

    define('DIR_TMPL_JS', DIR_TMPL.'javascript/');
    // this javascriptfile get includes at the TOP of every template page in shop
    // you can add your template specific js scripts here
    ?>
    <script type="text/javascript">var DIR_WS_BASE="<?php echo DIR_WS_BASE ?>"</script>
    <script src="<?php echo DIR_WS_BASE.DIR_TMPL_JS; ?>jquery-1.8.3.min.js" type="text/javascript"></script>
    <script>document.createElement( "picture" );</script>
    <script async src="<?php echo DIR_WS_BASE.DIR_TMPL_JS; ?>picturefill.js"></script>

    würde ich gerne auf der startseite das jquery-1.8.3.min.js normal laden und ansonsten asyncron....

    Also:  <script async src="<?php echo DIR_WS_BASE.DIR_TMPL_JS; ?>jquery-1.8.3.min.js" type="text/javascript"></script>

    Leider bekomme ich die if else Abfrage nicht zum laufen...

    Danke für Tips/Hilfe

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: Slider Javascript und CSS nur auf Startseite einbinden
    Antwort #9 am: 07. Juli 2020, 10:40:46
    Hat sich erledigt....

    Code: PHP  [Auswählen]
    <?php if (strpos($PHP_SELF, FILENAME_DEFAULT) && $_GET['cPath'] == null && $_GET['manufacturers_id'] == '') { ?>
        <script src="<?php echo DIR_WS_BASE.DIR_TMPL_JS; ?>jquery-1.8.3.min.js" type="text/javascript"></script>
    <?php } else { ?>
     <script async src="<?php echo DIR_WS_BASE.DIR_TMPL_JS; ?>jquery-1.8.3.min.js" type="text/javascript"></script>
    <?php } ?>
    1 Antworten
    2181 Aufrufe
    01. Oktober 2012, 01:33:23 von web0null
    20 Antworten
    22601 Aufrufe
    05. Oktober 2010, 12:00:19 von Iamex
    6 Antworten
    3601 Aufrufe
    18. Juli 2013, 18:31:09 von noRiddle (revilonetz)