本件、自己解決しました。
468さん、調査とご返信ありがとうございました。
CDNでは解決が難しいと思い、最初のリンク先ページの手順を参考に、ファイルをダウンロードする方法をとりました。
プラグインの機能はそのままに、TinyMCEを別途ダウンロードして html/Wysiwyg に配置し、呼び出し側を変更しました。
// $mce = "<script src=\"//cdn.tinymce.com/4/tinymce.min.js\"></script>\n";
$mce = "<script src=\"" . $config['plugin_urlpath'] . "/Wysiwyg/js/tinymce/tinymce.min.js\"></script>\n";
同じように jbimages プラグインをダウンロードして html/plugin/Wysiwyg/js/tinymce/plugins/jbimages に配置しました。
その後、jbimages の config.php でファイルアップロード先を指定しました。
// $config['img_path'] = '/images'; // Relative to domain name
$config['img_path'] = '/upload/save_image'; // Relative to domain name
最終的に app/Plugin/Wysiwyg/WysiwygEvent.php は次のようになりました。
// $mce = "<script src=\"//cdn.tinymce.com/4/tinymce.min.js\"></script>\n";
$mce = "<script src=\"" . $config['plugin_urlpath'] . "/Wysiwyg/js/tinymce/tinymce.min.js\"></script>\n";
foreach ($kws as $key) {
if (strpos($html, $key) !== false) {
$replace = '</head>';
$mce .= "<script>\ntinymce.init({";
// $mce .= "img_path:'" . $config['image_temp_urlpath'] . "',"; // 画像アップロード先
$mce .= "img_path:'./',"; // 画像アップロード先
$mce .= "selector:'textarea#{$key}',"; // id=key のテキストエリア対象
if ($lang_url) {
$mce .= "language:'ja'," // 日本語
. "language_url:'{$lang_url}',"; // 日本語ファイル
}
$mce .= "force_br_newlines:true," // 改行に <p> を使わず <br /> を使う
. "force_p_newlines:false,"
. "forced_root_block:'',";
$mce .= "apply_source_formatting: false,";
$mce .= "convert_newlines_to_brs: true,";
$mce .= "remove_linebreaks:false,";
$mce .= "cleanup:false,"; // クリーンナップ機能をオフ
$mce .= "relative_urls:false,"; // 相対パスに変換されるのを防ぐ
$mce .= "remove_script_host:false,"; // URLのホスト部分を削除しない。
$mce .= "plugins: ['" // プラグイン
. "code " // HTMLコード編集追加
. "fullscreen " // フルスクリーン編集追加
. "image " // 画像編集追加
. "link " // リンク編集追加
. "paste " // テキスト貼付けをフィルタリング
. "table " // テーブル編集追加
. "textcolor " // 文字色
. "image jbimages " // 画像アップロード
. "'],";
/*
$mce .= "external_plugins: {"
. "'jbimages': 'https://www.groomerchick.com/smartagon_sys/cdn/tinymce_v0-2-4_01/plugins/jbimages/plugin.min.js' "
. "},";
*/
$mce .= "toolbar:'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent" // ここまでデフォルト
. " | forecolor backcolor | image jbimages',";
$mce .= "paste_as_text:true,"; // テキスト貼付け時、改行が<p>にならないようにする。
$mce .= "height:480,"; // デフォルトの高さを 480px にする。
/*
$mce .= "protect:["
. "/[\\n]+/g," // 改行を保持。改行を保持すると JavaScript が正しく入力できない。
. "/<script.*?<\/script>/g" // Protect php code
. "],";
*/
// $mce .= "keep_styles:false,"; 現在のテキストスタイルを保つ
$mce .= "entity_encoding: 'raw',"; // エスケープしない
$mce .= "extended_valid_elements:'" // 属性を消さないようにする。
. "a[*]"
. ",b[*],base[*],big[*],blockquote[*],body[*],br[*]"
. ",caption[*]"
. ",dd[*],div[*],dl[*],dt[*]"
. ",em[*],embed[*]"
. ",font[*],form[*]"
. ",h[*],head[*],hr[*],html[*]"
. ",i[*],iframe[*],img[*],input[*]"
. ",li[*],link[*]"
. ",meta[*]"
. ",nobr[*],noembed[*]"
. ",object[*],ol[*],option[*]"
. ",p[*],pre[*]"
. ",s[*],script[*],select[*],small[*],span[*],strike[*],strong[*],sub[*],sup[*],svg[*]"
. ",table[*],tbody[*],td[*],textarea[*],tfoot[*],th[*],thead[*],title[*],tr[*],tt[*]"
. ",u[*],ul[*],use[*]"
. "',";
$mce .= "});\n</script>\n";
}
}
----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。