チョコミントアイス

お世話になります。

smartyのテンプレート内で指定文字数以上は省略し全文ページへのリンクを貼るようにと以下の形にしているのですが、
タグや改行の途中でカットされてしまった場合、リンクが表示されなくなってしまいます。

{shorten string=$comment.comment length=$comment.comment_length url=$comment.comment_url anchor="…全文"}

(例)
あいうえおかきくけこ<br />

さしすせそなにぬねの<br />



あいうえおかきくけこ<br />

さしすせそなにぬねの<br <a href="">…全文</a>

のようにbrタグの途中でカットされてしまった場合、
aタグが無効になってしまいリンクが正常に働かなくなってしまいます。

|strip_tags:falseを使って以下のようにタグ全部を排除すれば問題は解消されますが、

{shorten string=$comment.comment|strip_tags:false length=$comment.comment_length url=$comment.comment_url anchor="…全文"}

改行が全てなくなって表示されるようになるため見にくくなってしまいますので
改行はそのままに何とかできないものかと思っております。

出来ればテンプレート内で対処したいのですが何か良い方法はございませんでしょうか。

お忙しい中お手数をおかけしますが何か方法がございましたらご教授いただけますと幸いです。

A 回答 (1件)

<br /> を \n や \t に置換して、カット後に置換した文字を <br /> に戻せば良いです。



プラグインを自作して plugins_dir で設定したディレクトリにPHPファイルを入れておけば、どんなに複雑な処理も可能です。

https://www.smarty.net/docsv2/ja/plugins.modifie …
https://www.smarty.net/docsv2/ja/variable.plugin …
    • good
    • 0
この回答へのお礼

お忙しい中ご回答ありがとうございます。
プラグインの方法を知りませんでしたので大変勉強になりました。
これならphpで直接コードを書けますのでsmartyの知識の疎い自分でも何とかなりました。

ご教授いただきありがとうございました。

お礼日時:2020/10/06 18:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!