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: Wenn nicht Startseite...

    Toby

    • Viel Schreiber
    • Beiträge: 985
    Wenn nicht Startseite...
    am: 26. Oktober 2012, 13:15:29
    Hi,
    wie heisst die korrekte Syntax für einen Smarty Befehl wenn nicht...

    Mit diesem Befehl sage ich dem template ja, dass er die Grafik einblenden soll, wenn es sich um die Startseite  handelt.
    Code: PHP  [Auswählen]
    {if strstr ($smarty.server.PHP_SELF, 'index')}

    Wie lautet aber der korrekte Befehl für:
    wenn nicht index Seite

    Vielen Dank

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

    Simon

    • Viel Schreiber
    • Beiträge: 1.369
    Re: Wenn nicht Startseite...
    Antwort #1 am: 26. Oktober 2012, 13:32:19
    Code: PHP  [Auswählen]

    Toby

    • Viel Schreiber
    • Beiträge: 985
    Re: Wenn nicht Startseite...
    Antwort #2 am: 26. Oktober 2012, 13:32:51
    Ah ok danke

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #3 am: 26. Oktober 2012, 20:15:15
    Besser !strpos da deutlich schneller.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #4 am: 26. Oktober 2012, 20:49:45
    Ach, und übrigens:
    Wenn du etwas darstellen lassen möchtest was nur auf der Startseite und sonst überall nicht angezeigt werden soll, mußt du's so machen:
    Code: PHP  [Auswählen]
    {if !strpos ($smarty.server.PHP_SELF, 'index') && $smarty.get.cPath != null && $smarty.get.manufacturers_id != ''}
     
    Das liegt daran, daß auch bei den Herstellerseiten (die werden im index-template ausgegeben) und bei den Kategoriepfaden im Pfad noch index.php vorkommt.

    Gruß,
    noRiddle

    WayneTsun

    • Fördermitglied
    • Beiträge: 1.082
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #5 am: 26. Oktober 2012, 22:18:30
    n'Abend noRiddle!

    Evtl. liege ich ganz falsch, aber sollte es nicht:
    Code: PHP  [Auswählen]
    {if strpos ($smarty.server.PHP_SELF, 'index') && $smarty.get.cPath == null && $smarty.get.manufacturers_id == ''}
    heißen?

    Beste Grüße,
    Wayne

    Tȟatȟáŋka Íyotake

    • Schreiberling
    • Beiträge: 332
    Re: Wenn nicht Startseite...
    Antwort #6 am: 26. Oktober 2012, 22:54:19
    Ich hab das mal ausprobiert.

    Wenn ich !strstr mit strpos und strstr mit strpos ersetze, wird das Template zerschossen.

    Wenn ich nur strstr mit strpos ersetze und !strstr mit !strpos ersetze bleibt das Template so wie ich es kenne.

    Die Ausrufezeichen haben eine spezielle Funktion, könnt ihr das auch bestätigen?

    Grüße, Markkk

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #7 am: 27. Oktober 2012, 06:47:46
    Häää ??
    Wer ersetzt wann was ??

    Das Ausrufungszeichen ist eine Verneinung.
    Eigentlich sucht strpos das erste Vorkommen des sog needle (hier z.B. "index") in der Zeichenkette und gibt die Position in der Zeichenkette als Zahl aus.
    Wird "index" nicht gefunden wird ein boolean ausgegeben und zwar "false".
    Also in Worten bedeutet:
    Code: PHP  [Auswählen]
    if strpos ($smarty.server.PHP_SELF, 'index')
    Wenn die Ausgabe der Position von "index" in der URL numerisch ist ergibt die if-Abfrage "true",
    wenn nicht (weil gar nicht vorhanden), ergibt sie "false".
    strpos(~) ergibt
    • wenn wir auf der Startseite sind: die Position als Zahl und die if-Abfrage ergibt folglich "true"
    • wenn wir nicht auf der Startseite sind: "false" und die if-Abfrage ergibt folglich "false"

    Wir wollen aber ja etwas überall, nur nicht auf der Startseite darstellen, möchten also, daß das Ergebnis "true" ist wenn wir nicht auf der Startseite sind und kehren die Abfrage deshalb um in
    Code: PHP  [Auswählen]
    if !strpos ($smarty.server.PHP_SELF, 'index')
    Jetzt ergibt strpos (~)
    • wenn wir auf der Startseite sind: "false" und die if-Abfrage folglich "false"
    • wenn wir nicht auf der Startseite sind: "true" und die if-Abfrage folglich "true"

    Mit dem Ergebnis "true" können wir also jetzt Befehle angeben die ausgeführt werden.

    Alles klar ? :-D

    @WayneTsun
    Damit dürfte auch deine Frage beantwortet sein ;-) .

    Gruß,
    noRiddle

    *NACHTRAG*
    Bitte beachten, daß die komplette Abfrage ob man sich auf der Startseite befindet umfangreicher sein muß,
    siehe oben: http://www.modified-shop.org/forum/index.php?topic=22994.msg212807#msg212807

    *NACHTRAG II*
    Ach, WayneTsun, jetzt weiß ich was du meinst.
    Habe mich oben verschrieben.
    Die Befehle sind korrekt, meine Aussage "Wenn du etwas darstellen lassen möchtest was nur auf der Startseite und sonst überall nicht angezeigt werden soll, mußt du's so machen" allerdings nicht.
    Habe mich vertan und es umgekehrt ausgedrückt, aber die Befehle sind für das was Toby eigentlich wollte korrekt, sorry.

    Tȟatȟáŋka Íyotake

    • Schreiberling
    • Beiträge: 332
    Re: Wenn nicht Startseite...
    Antwort #8 am: 27. Oktober 2012, 13:18:31
    Deine Erklärungen versteh ich immer viel besser, als das Manual.

    Im Thread weiter oben steht, dass strstr langsamer als strpos ist.

    Ich wollte mich eben noch vergewissern, ob ich jedes strstr mit strpos und !strstr mit !strpos ersetzten kann in der index.html?

    Grüße,

    WayneTsun

    • Fördermitglied
    • Beiträge: 1.082
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #9 am: 27. Oktober 2012, 13:51:56
    @Markkk,

    Du kannst es genau so austauschen, wie Du das beschrieben hast.

    @noRiddle
    So, wie in Deinem Nachtrag meinte ich es. Wollte nicht Besserwisser sein, sondern nur wenn Deine Beschreibung stimmen soll, dann mein Code.

    Beste Grüße,
    Wayne

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #10 am: 27. Oktober 2012, 20:10:43
    Hatte ich auch nicht verkehrt verstanden, WayneTsun, du hattest nach meiner Formulierung zu urteilen ja Recht.

    @Markkk
    Man kann nicht so ohne weiteres pauschal sagen, daß du alle strstr gegen strpos austauschen kannst, also Vorsicht.
    Die eigentliche Funktion der beiden
    - die übrigens unterschiedlich in der Ausgabe sind wenn "true" herauskommt** -
    ist ja eine andere und sie werden nur "miss"- ge-braucht um ein boolean-Ergebnis ("true" oder "false") zu erzwingen.
    An Stellen also, wo die "wirkliche" Funktion eines der beiden gebraucht wird, darf da nicht das eine durch das andere ersetzt werden !

    **
    strstr ergibt bei "true" die komplette "Rest"-Kette des Strings ab da wo der haystack (bei uns "index") gefunden wird und
    strpos ergibt nur eine numerische Ausgabe, wie oben erklärt.

    Ohne "Durchblick" sollte man da also vorsichtig sein.

    Es hilft auch mal nach den beiden Funktionen zu "suchmaschinen" ;-) .

    Gruß,
    noRiddle

    Tȟatȟáŋka Íyotake

    • Schreiberling
    • Beiträge: 332
    Re: Wenn nicht Startseite...
    Antwort #11 am: 27. Oktober 2012, 23:11:09
    strpos — Sucht das erste Vorkommen des Suchstrings

    strstr — Findet das erste Vorkommen eines Strings

    Beispiel:
    Code: PHP  [Auswählen]
    {if !strpos ($smarty.server.PHP_SELF, 'checkout')}
            <div id="leftcol">{$box_ADMIN}{$box_CATEGORIES}</div>
            {/if}

    Hier wird im haystack=checkout - also im eigentlichen Bestellvorgang die linke Spalte ausgeblendet, durch das vorangestellte Ausrufezeichen.

    Ich will das jetzt nicht komplizierter machen als es für mich schon ist, aber ist needle:
    Code: Javascript  [Auswählen]
    <div id="leftcol">{$box_ADMIN}{$box_CATEGORIES}</div>
    ?

    Leider kommt jetzt noch das Entscheidende, welches ich noch lange nicht weiß zu wissen, wann die numerischen Ausgaben mit strpos gesucht zu werden, ausreicht und wann strstr zwingend sein muss.

    Grüße, Markkk

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #12 am: 27. Oktober 2012, 23:17:04
    Deine Frage zeigt, daß du
    • meine Ausführungen nicht konzentriert gelesen hast
      und
    • solltest du mal ein bisschen "suchmaschienen", wie ich schon sagte,
      die Arbeit nimmt dir niemand ab.

    Wir können hier jetzt kein strpos / strstr -Tutorial aufmachen, sorry.
    Habe ja schon viel erklärt.

    Gruß,
    noRiddle

    Tȟatȟáŋka Íyotake

    • Schreiberling
    • Beiträge: 332
    Re: Wenn nicht Startseite...
    Antwort #13 am: 27. Oktober 2012, 23:29:13
    Ich habe meinen Mut zusammen genommen und endlich mal nachgefragt. Denn seit einiger Zeit lese ich auch in anderen Threads davon, dass strstr mit strpos ausgetauscht werden soll. Das Warum habe ich nicht verstanden. Deswegen habe ich mich hier mal eingeklinkt.

    Gruß

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Wenn nicht Startseite...
    Antwort #14 am: 27. Oktober 2012, 23:35:13
    Ich schrieb' doch weiter oben
    Zitat von: noRiddle
    ...sie werden nur "miss"- ge-braucht um ein boolean-Ergebnis ("true" oder "false") zu erzwingen.
    Für den im Beispiel verwendeten Zweck sind beide austauschbar.
    Warum genau strpos schneller als strstr ist, hat vielleicht mehrere Gründe.
    Einer davon ist sicherlich, daß strpos beim Durchsuchen des zu untersuchenden strings an der Stelle aufhört wo er needle (bei uns "index") im string findet und gibt lediglich die Position als numerischen Wert aus, während
    strstr den kompletten Rest-string ab dem Auffinden ausgeben muß und somit den string weiter bis zu Ende "durchsuchen" muß.

    Gruß,
    noRiddle
    18 Antworten
    11002 Aufrufe
    01. November 2011, 16:50:43 von franky_n