記事ブロックで、phpのコードを紹介するためのTinyMCEの具体的変更方法

2015年7月28日 at 6:11

[concrete5 5.6.3.3-ja]

phpのコードをSyntax Highlighter などを使わずに記事ブロックに直接記述するためには、

具体的に、どのように設定を変えたらいいでしょうか?

phpも<?php  コード ?> とソースコードそのまま記述したいのです。

過去、以下のようにフォーラムに記事があるので、設定しましたが、

http://concrete5-japan.org/community/forums/usage/post-10328/
記事ブロックの TinyMCE で自動整形を無効にするオプション

一度保存して、次に再度編集しようとすると、
phpコードを認識してしまいます。

具体的には、

TinyMCEへのオプションを、tinymce.php (/helpersフォルダに置いてます)に

// Common options に 以下追加
’cleanup’ => false,

追加してみましたが、
コードをそのまま表示することはできませんでした。

お手数ですが、具体的な設定方法を教えてください。

(例以下を表示したく)

<?php defined('C5_EXECUTE') or die("Access Denied."); ?>

タグ:

Re: 記事ブロックで、phpのコードを紹介するためのTinyMCEの具体的変更方法

2015年7月28日 at 16:10
concrete5の記事ブロックは、おそらくそういうことを想定して設計されているわけではないと思います。

従って、具体的な設定方法をいうのは「これ」と決まったものがあるわけでもないでしょう。

以下は、私なりに考えた「PHPのコードを紹介する」という目的を満たすやり方です。

1.HTMLブロックにPHPのソースコードを入力する

2.HTMLのカスタムテンプレートを作成。名前は任意。view.phpから作り変え、先ほど作成したブロックに適用する

view.php:
<?php defined('C5_EXECUTE') or die("Access Denied."); ?>

<div id="HTMLBlock<?php echo intval($bID)?>" class="HTMLBlock">
<?php echo $content; ?>
</div>


for_php_code.php:
<?php defined('C5_EXECUTE') or die("Access Denied."); ?>

<div id="HTMLBlock<?php echo intval($bID)?>" class="HTMLBlock">
<?php echo htmlspecialchars($content);?>
</div>


これで、簡単なPHPならそのまま表示することが出来ました。(5.6.3.3jaで確認)
 

Re: 記事ブロックで、phpのコードを紹介するためのTinyMCEの具体的変更方法

2015年7月29日 at 2:58
kohki様

ご回答ありがとうございます。

カスタムテンプレートを利用する方法なんですね。
思いつきませんでした。
できない時はこれで実装してみます。
ありがとうございます。

しかしながら、タイトルにも記載しています通り、
「TinyMCEでの変更方法」について質問させていただいています。

私の質問に、リンクを記載しておりますが、
意図が伝わらず、申し訳ございませんでした。

エスケープしたコードは何もしなくても記事ブロックに記載できました。
問題は、「再度編集したとき」です。

katz515さんの投稿ですが、
一部引用しますね。

http://concrete5-japan.org/community/forums/usage/post-10328/
記事ブロックの TinyMCE で自動整形を無効にするオプション

----------引用ここから----------
どこかのブログで書かれていたんですが、覚えていらっしゃる方。

concrete5.6.x 系で、TinyMCE には普段、自動整形の JS が走っているのですが、それを無効化するオプションってなんでしたっけ?

コードを紹介するときに、毎回コード部分が削除されちゃうので・・・(苦笑)

Syntax Highlighter など、コードを表示するブロックはあるのですが、それではなく、あくまでも記事ブロック内のみで完結させたいと思っています。

(途中略)

早速、隊長、杉山さんより情報が

http://silver.thyme.jp/freotips/view/14

http://www.tinymce.com/wiki.php/Configuration3x:cleanup

後者のドキュメントの

tinyMCE.init({
...
cleanup : true
});


が、まさに探していた設定でした。でもこれは自動整形ONの設定です。

なので、おそらく、記事ブロックエディタ設定のカスタムで、上記の設定を変えて「cleanup : false」の1行を追加すればいいのではと思います。

時間ができた時に試してみます。
ありがとうございます!
----------引用ここまで----------

●これを受けて、私の質問ですが、

TinyMCEへのオプションを、tinymce.php (/helpersフォルダに置いてます)に

// Common options に 以下追加
’cleanup’ => false,

追加してみましたが、
コードをそのまま表示することはできませんでした。

お手数ですが、具体的な設定方法を教えてください。


と質問させていただきました。
よろしくお願いします。
 

Re: 記事ブロックで、phpのコードを紹介するためのTinyMCEの具体的変更方法

2015年7月29日 at 18:23
もちろん、元記事も読んでますよ。

その上で、記事ブロックはご希望の用途とそぐわないのでは、と述べております。
ひとつお詫びしないといけないのは、Syntax Highlighterですが、私は有料アドオンかと思っておりました。ですので、標準ブロックでなんとか出来ないかやり方を考えてみた次第です。(今調べたら、無料でしたね。)

で、話は戻りますが、やはり記事ブロックにPHPコードを無加工で貼る、というのは難しいと思います。何らかの形で、PHPの開始と終了の山括弧をエンティティできればいいのですが…

ちょっと、今の段階では私には思いつかないです。お役に立てずすみませんが。
他の方の回答をお待ちください。
 

Re: Re: 記事ブロックで、phpのコードを紹介するためのTinyMCEの具体的変更方法

2015年7月30日 at 5:17
kohki様

ご回答ありがとうございます。

ご指摘の通り、本来の方法ではないですね。

TinyMCEについて調査&トライしてみましたが、
コード本体か、プラグインに変換を持っているようです。
(詳しくは調査できませんでした。)

ですので、ご提案いただいたカスタムテンプレートで実態参照にするか、

あるいは、別の方法(単に編集手順)ですが、以下で対処しようと思います。

理由は、コード中にハイライトしたりと、なんらかの編集がつきまとうからです。

(手順)
1)編集のみ、通常どおり行い、完了後、[HTML]コード表示ボタンでコード箇所を一旦、
ローカルのテキストファイルとして保存しておきます。
2)万一編集が必要になった場合は、このファイルから、再度記事ブロック(TinyMCE)の[HTML]から流し込み、編集を行いまたコードをローカルに保存します。

少し手間な方法ですが、この方法で対応しようと思います。

※もしこのローカルファイルがなかった場合、データベースから直接コード部分をコピーしてきて、同様の手順で対応しようと思います。

いろいろご対応いただきありがとうございます。