2017-01-27 4 views
2

私はデフォルトで自動的に生成される標準Contentフィールドを使用しています。文字を制限することはできますが、改行/書式は保持しますか?

"Content" => "HTMLText" 

私は例えば

$Content.BigSummary(300) 

制限機能を使用する場合、これは言葉を制限するが、改行を保持しません。 AkaはHTMLを取り除きます。フレームワークのコードを探し

は、動作するようには思えないのhtmlTextフィールドでこれを使用して、テスト時にしかしContextSummary()

public function ContextSummary($characters = 500, $string = false, $striphtml = true, $highlight = true, 
      $prefix = "... ", $suffix = "...") 

、そこにある、それは文字を制限するが、それがない限り、HTMLを保持しません。 -

まだHTMLを取り除き

$Content.ContextSummary(200, false, false):フィールドタイプはText例えば

のhtmlTextです

テキスト:

$Content.ContextSummary(200, false, false) - (私が欲しいものである)HTMLを保持します

私が何か間違ったことをやっていますか?または、私が望むものを達成するために使用できる別の機能がありますか?または、カスタム関数を作成しますか?

+2

「ContextSummary」の両方で文字数を制限し、HTMLを保持できるため、閉じるタグを返さないことでタグが非常に簡単に破損する可能性があるので、これは奇妙な状況です。 '
'改行があっても、あなたは '...怠惰な犬

+0

これを行うには、単語数で独自のメソッドを実装できるかもしれません。最後の単語の後に終了タグをフィルタリングしないようにする(ネストされたHTMLを含む!) –

+0

Robbieからの応答は正確ではないようです。 ContextSummary()メソッドはHTMLTextTest(SS 3.5.1の310行目)をハッキングしただけで、マークアップを含む文字列を考慮しているように見え、マークアップされていない文字もカウントされます。 これはOPの問題点を説明するものではありませんが、今私が完全に理解していないことを考慮に入れたキャストもあります。 ($ casting arrayをTextとHTMLTextの両方で参照してください) – theruss

答えて

0

問題は単純なテキストに変換され、htmlに戻る - <br>タグは一度遭遇したとおりに失われます。これは私が使用した同様のハックです。

// override ContextSummary from the Page_Controller 
public function ContextSummary($field = 'Content', $characters = 500, $string = false) { 
    $content = $this->dbObject($field); 
    $content->setValue(str_replace('<br>', '__br__', $content->getValue); 
    $summary = $content->ContextSummary($characters, $string, $stripHtml = false); 
    return str_replace('__br__', '<br>', $summary); 
} 

and use $ContextSummary(Content) instead of $Content.ContextSummary in template 
+0

これは、brで改行したテキスト変換に関連したもので、改行文字とConvert :: html2rawで空白文字を取り除いたものです。 –

+0

私はちょうどこれを行って、それは動作していないようです。テキストは表示されず、終わり括弧が欠けていることがわかります(私は編集しようとしましたが、私を許可しませんでした)、 '$ content-> setValue(str_replace( '
'、 '__br__'、$ content-> getValue)) ' – ifusion

関連する問題