Page 1 of 1

[Trick] einen Link auf http:// prüfen

Posted: Thu Apr 15, 2010 8:51 am
by nicmare
Vielleicht kann es ja jemand gebrauchen! Denn die Smartydokumentation ist da lückenhaft und das Thema zu googlen ist garnicht so einfach.
Mein Problem war dass ich im Backend Felder habe, wo der Kunde einen Link einsetzen kann. Noch ist das kein Problem.
Die Ausgabe beim Template sieht in etwa so aus:

Code: Select all

<a href="{entry->website}">{entry->website}</a>
Doof ist nur wenn der Kunde mal die Links mit "http://" und mal ohne "http://" oder gar ohne "http://www" einsetzt. Soll es alles geben ;-). Drum habe ich das so gelöst:

Code: Select all

<a href="http://{if $entry->website|strstr:"http://"}{$entry->website|substr:7}{else}{$entry->website}{/if}" target="_blank">{if $entry->website|strstr:"http://"}{$entry->website|substr:7}{else}{$entry->website}{/if}</a>
Sieht natürlich ganzschön wirr aus aber das Wesentliche ist:

Code: Select all

http://{if $entry->website|strstr:"http://"}{$entry->website|substr:7}{else}{$entry->website}{/if}
Also das http:// wird so oder so vorangestellt. Dann wird geprüft ob die Variable ein "http://" enthält. Wenn das der Fall ist, wir die Variable um 7 Zeichen (eben h t t p : / / ) gekürzt oder wenn es nicht vorhanden ist, direkt ausgegeben.

zwischen habe ich das genau so gemacht (nur ohne http://) da ich die Ausgabe einheitlich haben wollte. Der Optik wegen...

Bin kein php/smarty profi aber vielleicht gehts ja auch noch einfacher?!

Grüße

Re: [Trick] einen Link auf http:// prüfen

Posted: Thu Apr 15, 2010 9:56 am
by NaN
wie wäre es mit dem Modifikator replace:

Code: Select all


http://www.{$entry->website|replace:'http://':''|replace:'www.':''}

Ohne if-Abfrage.
Einfach generell alles was mit http oder www zu tun hat aus dem Link entfernen und dafür dann voranstellen.

Re: [Trick] einen Link auf http:// prüfen

Posted: Thu Apr 15, 2010 10:45 am
by nicmare
wow. auch ne super idee. da komm ich mir ja schon bissl blöd vor :D
danke

Re: [Trick] einen Link auf http:// prüfen

Posted: Thu Apr 15, 2010 10:47 am
by nockenfell
NaN wrote: wie wäre es mit dem Modifikator replace:

Code: Select all

http://www.{$entry->website|replace:'http://':''|replace:'www.':''}
Mit dem Replace von www wäre ich vorsichtig. Es gibt ein Paar Seiten welche www2 oder www3 als Subdomain nutzen. Hier machst du die URL mit einem Replace kaputt. Zudem gibt es auch Seiten welche sich Standardmässig ohne www melden. z.B. http://meinedomain.com