Akıllı kelime Smarty ile sarın?

1 Cevap php

Ben başlık toplam karakter sayısı dayalı kelimelerin belirli bir sayıdan sonra uzun bir başlık, sarmak için bir yol bulmaya çalışıyorum. Amacım uzun okunabilirliği artırmak için üst satırında daha sarılmış metnin alt çizgi yapmaktır.

Ben başlık karakter sayısını bulmak için Smarty kullanmak istiyorum, sonra varsayılan yazı tipi boyutu ve içeren öğenin genişliğine göre ilk satırı yapmak için ne kadar karar. Ama ben bir kodlayıcı değilim ve iyi diziler yapmak için yol, foreach döngüleri, yineleme sayılarının ve bu koparmak için muhtemelen gerekli diğer şeyler bilmiyorum.

Ben temelde çalışıyorum:

  1. Kullanarak başlık toplam karakter sayısını bulmak {$item.name|count_characters:true}

  2. Toplam karakter sayısı 60 ve 100 karakter arasında ise, son 30 karakter biter ilk kelimenin sonunda bir br etiketi ekleyin.

1 Cevap

Sana register_modifier() ile yapabilirsiniz inanıyorum. Temelde, bir değiştirici olarak kayıt sonra, etiketi eklemek için bir php fonksiyon yazmak. Bunu yaptıktan sonra, isteyen diğer düzenleyiciler, yani gibi smarty kullanabilirsiniz:

{$variable|break_title}

Genel olarak, bu smarty şablonları içinde karmaşık biçimlendirme yapmak daha iyi değil. Şeyler temiz daha yakın şablonları vanilya html vardır.

Olası uygulama:

function break_title($title) {
   return wordwrap($title, 59, '<br />\n');
}

/* later */
$smarty->register_modifier('break_title', 'break_title');

Dikkate yazı tipi boyutunu almak istiyorsanız, sonra kırmak için karakter sayısını gösteren global bir yapılandırma değişkeni ayarlayabilirsiniz.

EDIT: As the commentor mentions, if there is an existing php function that does what you want, you can access it without registering the function:

{$variable|wordwrap:59:"<br />\n"}