所見即所得編輯器 + 圖片上傳 (tinymce + img_assist)

簡介

此文將會介紹:

  1. tinymce、image、img_assist的安裝流程
  2. tinymce搭配drupal的image、img_assist模組,整合圖片上傳、插入文章的介面,結合image的好處是將每一個圖片視為一個node,比imce方便做後續利用。
  3. tinymce附設的drupalbreak安裝方式,讓內文可以無痛插入摘要分隔
  4. tinymce總是會清掉html多餘的空白,本文提供解決方式

需求模組

Image 模組(image)
Tinymce 模組(tinymce) + tinymce 編輯器檔案 (下載)
Image Assist 模組 (img_assist)

快速安裝流程

檔案配置

  1. 將image, img_assist, tinymce三個模組解壓縮
  2. 將tinymce編輯器檔案(tinymce_2_1_1.zip) 拷貝至剛剛解壓模組的資料夾tinymce裡頭
  3. 解壓縮tinymce_2_1_1.zip,解出來的檔案會在tinymce/tinymce
  4. 到這裡,共會有三個資料夾
    image/
    img_assist/
    tinymce/

安裝tinymce plugin

  1. 找到 img_assist/drupalimage 、 tinymce/plugins/drupalbreak 這兩個資料夾,都拷貝至tinymce/tinymce/jscripts/tiny_mce/plugins
  2. 編輯tinymce/plugin_reg.php這個檔案,在return $plugins;前面加入下面給行

$plugins['drupalimage'] = array();
$plugins['drupalimage']['theme_advanced_buttons1'] = array('drupalimage');
$plugins['drupalimage']['extended_valid_elements'] = array('img[class|src|border=0|alt|title|width|height|align|name]');
$plugins['drupalbreak'] = array();
$plugins['drupalbreak']['theme_advanced_buttons3'] = array('drupalbreak', 'drupalpagebreak');

搬移及安裝
== 將三個資料夾都移至 drupal/sites/all/modules裡頭

設定

接下來都是web畫面,到admin/build/modules啟用image, tinymce, img_assist三個模組
權限設定
== 到admin/user/access設定權限, 如圖:
image和img_assist權限設定
access img_assist 打開,可以在發文時插入圖片
create image 和 access img_assist 都打開,發文時插入、上傳新圖片

建立tinymce profile
== 在tinymce設定頁面(admin/settings/tinymce)新增一個profile,然後可以選擇button,如圖:
image和img_assist權限設定
在button列表最後,可以看到多兩個DrupalImage和Drupal teaser/Body Break,勾選以打開~
注意,此設定中,可以用tinymce權限的角色,access img_assist 權限也要打開,drupalimage才有用

關掉image assist預設的button
== 在img_assist設定頁面(admin/settings/img_assist),找到Access settings底下的Textarea image link,如圖:
image和img_assist權限設定
因為image assist在沒有裝tinymce時,有自己的button,因此需要取消顯示,將他選為Do not show link,交給tinymce處理。

建立給tinymce用的圖片大小 (optional)
== 在image設定頁面,增加新的大小(admin/settings/image),如圖:
image和img_assist權限設定
== 在img_assist設定頁面,設定預設的縮圖及彈出視窗的縮圖大小,如圖:
image和img_assist權限設定

hack (optional)

取消html排版亂碼的方式

  1. 修改tinymce.module
  2. <?php
    function tinymce_config($profile) {
    //....
    $init['preformatted'] = $settings['preformatted'] ? $settings['preformatted'] : 'false';
    // 在這之後加入以下這一行
    $init['apply_source_formatting'] = true;
    ?>

  3. 到輸入格式設定(admin/settings/filters),新增一個給tinymce用的input format,把自動斷行、分段去掉

Drupal版本: