ページ 11

テンプレート変数(入力タイプ:RichText)について

Posted: 2011年2月03日(木) 10:03
by storec
入力する際に「改行」も反映させたいエリアがあり、
テンプレート変数を作成し、(入力タイプ:RichText)に設定しました。
そうすると、そのテンプレート変数に関連づけられたリソースの編集画面ではきちんと「改行」が反映するのですが、
いざ、サイトを閲覧すると「改行」は反映されていません。
対処法などございますでしょうか。 :oops:

--------------------------------
環境
バージョン【1.0.4J-r5】
サーバ【heteml】
--------------------------------

Re: テンプレート変数(入力タイプ:RichText)について

Posted: 2011年2月04日(金) 02:33
by kmikage
改行にbrタグは付けていますか?
RichTextの場合、brタグは自動では付かなかった気がします。

Re: テンプレート変数(入力タイプ:RichText)について

Posted: 2011年2月04日(金) 02:37
by soushi
soushiです。

テンプレート変数の入力タイプをRichTextにした場合、リソースの入力画面ではTinyMCEが立ち上がってませんでしょうか。
その場合は自動的に改行(もしくはPタグ)が付加されるので、改行は気にしなくても入っていると思います。
ただ、入力タイプをTextareaにした場合は、確かに改行していても<br />タグが付くわけではないので改行は行われません。
もし改行が入らない現象が「<br />タグがない」と言う現象でしたら以下の回避策があります。

MODx1.0.5でしたらカスタムウィジェットを使うと改行(\n)に<br />を付けることができます。

testという名前のテンプレート変数を作成した場合、テンプレート変数設定画面のウィジェット(出力フィルタ)をCustom Widgetにして、Outputに次のコードを入力します。

コード: 全て選択

@EVAL $v=$modx->getTemplateVar('test');return str_replace("\n","<br />\n",$v['value']);
MODx1.0.5未満の場合、スニペットを間に挟むことで同じ事ができます。
testというテンプレート変数を作り、同様にtestというスニペットを作成します。
スニペットの中身は次のような感じです。

コード: 全て選択

<?php
$v=$modx->getTemplateVar('test');
return str_replace("\n","<br />\n",$v['value']);
?>
[\code]

尚、リソースのコンテンツにはテンプレート変数[*test*]の代わりにスニペット[!test!]を記述します。

Re: テンプレート変数(入力タイプ:RichText)について  【解決済み】

Posted: 2011年2月04日(金) 15:32
by storec
テンプレート変数の入力タイプをRichTextにした場合、リソースの入力画面ではTinyMCEが立ち上がってませんでしょうか。

RichTextにしてもTinyMCEが立ち上がらないので下記方法で試してみました。
--------------------------------------------------------------------------------------------------------
MODx1.0.5未満の場合、スニペットを間に挟むことで同じ事ができます。
testというテンプレート変数を作り、同様にtestというスニペットを作成します。
スニペットの中身は次のような感じです。

コード: 全て選択

<?php
$v=$modx->getTemplateVar('test');
return str_replace("\n","<br />\n",$v['value']);
?>
[\code]

尚、リソースのコンテンツにはテンプレート変数[*test*]の代わりにスニペット[!test!]を記述します。
--------------------------------------------------------------------------------------------------------

結果、見事改行を実現できました!どうもありがとうございました!!