お世話になります。
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="…全文"}
改行が全てなくなって表示されるようになるため見にくくなってしまいますので
改行はそのままに何とかできないものかと思っております。
出来ればテンプレート内で対処したいのですが何か良い方法はございませんでしょうか。
お忙しい中お手数をおかけしますが何か方法がございましたらご教授いただけますと幸いです。
No.1ベストアンサー
- 回答日時:
<br /> を \n や \t に置換して、カット後に置換した文字を <br /> に戻せば良いです。
プラグインを自作して plugins_dir で設定したディレクトリにPHPファイルを入れておけば、どんなに複雑な処理も可能です。
https://www.smarty.net/docsv2/ja/plugins.modifie …
https://www.smarty.net/docsv2/ja/variable.plugin …
お忙しい中ご回答ありがとうございます。
プラグインの方法を知りませんでしたので大変勉強になりました。
これならphpで直接コードを書けますのでsmartyの知識の疎い自分でも何とかなりました。
ご教授いただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
index.phpって何ですか? 具体...
-
PHPで訪問回数を表示するカウン...
-
重複を防ぐ記述について教えて...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpでPEAR::DBを使っているので...
-
index.phpに入るには、どうすれ...
-
awsにApacheとPHPを入れて、何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのレポートの表示...
-
フォームのtextareaにnl2brを使...
-
機種依存文字
-
<br>が文字列で出力されてしま...
-
改行したいのですが
-
phpの<br>\\nと\\nとエスケープ...
-
C#のRichTextBoxで表示行数を取...
-
該当セルに行替えを含むデータ...
-
入力テキスト内で改行コードが...
-
テキストエリアで読み込んだら<...
-
.netのaspxでDataGridを1行2...
-
テキストエリア内の改行
-
改行コードをいれたい
-
<TEXTAREA> 1行目の改行・・・。
-
Texで[0:0]を文頭でつかいたい...
-
LINEの打ち込みに改行が表示さ...
-
ファイル名がテキストボックス...
-
PHP+DBで日記を作っています
-
テキストエリアの改行
-
インプット内の改行方法
おすすめ情報