Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 30. April 2011 13:39

engel1963
kennt CMS/ms
Registriert: 08. Dezember 2010
Beiträge: 105

[Gelöst] String auf variable Länge kürzen

Kann mir jemand sagen, wie ich mit Smarty einen String kürzen kann. Mit truncate kann ich nur die Zeichenanzahl bestimmen, ich brauche ähnlich wie bei php den explode befehl.

String : Text | Text2

Möchte in der Ausgabe nur Text haben. Alles nach dem | soll nicht vorhanden sein. Die länge des ersten Textes ist nicht fix.
Danke.

Offline

#2 30. April 2011 14:02

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [Gelöst] String auf variable Länge kürzen

Explode kannst Du auch in Smarty als modifier verwenden.
Der Syntax ist allerdings etwas ungewöhnlich:

{assign var="text_elements" value="|"|explode:"Text | Text2"}
{$text_elements[0]|strip}

Also eine Variable mit assign definieren und bei value erst das Trennzeichen angeben und dann sagen, dass mit diesem Trennzeichen der nachfolgende Wert geteilt werden soll.
Danach einfach das erste Element im Array ausgeben.
(Evtl. vorher noch prüfen, ob das Array nicht leer ist.)

Aber was Du eigentlich benötigst, ist die Position des | Zeichens.
Diese Position kannst Du dann für truncate verwenden:

{assign var="pos" value="Text | Text2"|strpos:"|"}
{if $pos !== false}
{"Text | Text2"|truncate:$pos}
{else}
...
{/if}

Also mit assign eine Variable definieren, die als Wert die Position des Trennzeichens enthält.
Dann prüfen, ob ob das Trennzeichen überhaupt enthalten ist.
Wenn ja, dann truncate...
Wenn nicht, dann evtl. den original Text ausgeben.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 30. April 2011 14:23

engel1963
kennt CMS/ms
Registriert: 08. Dezember 2010
Beiträge: 105

Re: [Gelöst] String auf variable Länge kürzen

Danke schon mal. Ich habe das versucht, leider zeigt der Code mir nichts mehr an. Hier mal der Orginalcode

<ul>
{foreach from=$categories item='one'}
  <li><a href="{$one.url}" title="{$one.name}">{$one.name}</a></li>
{/foreach}
</ul>

Die $one.name Variable soll gekürzt werden nach dem | Zeichen. Sehen kannst Du das hier. Einfach auf eine Kat gehen.

Offline

#4 30. April 2011 14:27

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [Gelöst] String auf variable Länge kürzen

So müsste es eigentlich gehen:

<ul>
{foreach from=$categories item='one'}
  {assign var="cat_elms" value="|"|explode:$one.name}
  <li><a href="{$one.url}" title="{$cat_elms[0]}">{$cat_elms[0]}</a></li>
{/foreach}
</ul>

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 30. April 2011 14:35

engel1963
kennt CMS/ms
Registriert: 08. Dezember 2010
Beiträge: 105

Re: [Gelöst] String auf variable Länge kürzen

Du bist mein persönlicher Held für heute. Ich werde mit Smarty wohl nie klar kommen. In php war ich schon soweit.

$eingabe = $one.name;
$ausgabe = explode("|", $eingabe);
echo $ausgabe[0]; 

Danke Dir vielmals.

Offline

#6 30. April 2011 14:40

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [Gelöst] String auf variable Länge kürzen

Gern geschehen.
Hast in Deinem PHP Code nur den Denkfehler gemacht, dass Du Smarty und PHP gemischt hast.
Mit $one.name kann PHP an dieser Stelle nichts anfangen.
Aber sonst warst Du im Prinzip schon nahe dran.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline