0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

Joomla JCE 編輯器自動刪除 HTML 標籤怎麼辦?保留 br、iframe 等標籤的設定方向

如何防止joomla JCE 刪除某些標籤,譬如

在 Joomla 用 JCE 編輯器寫文章,切到原始碼模式貼上一段 HTML,存檔後卻發現:

  • 段落最後刻意加的 <br> 不見了
  • 嵌入 YouTube、Google 地圖的 <iframe> 被刪掉
  • <script> 整段消失
  • 用來顯示圖示的空標籤(例如 <i class="icon"></i>)被清掉

會刪標籤的其實有兩個不同的地方,要先分清楚是誰刪的,才能對症下藥。

先分辨:是 JCE 刪的,還是 Joomla 刪的?

  • JCE 編輯器:在瀏覽器裡就先把它認為不合規則、多餘的標籤清掉。特徵是切換原始碼模式再切回來,或還沒按儲存,標籤就已經不見了。
  • Joomla 的文字過濾器:存檔時在伺服器端依照使用者群組,把不允許的標籤過濾掉。特徵是不管用哪個編輯器都一樣會被刪。

最簡單的測試方法:到「使用者」管理裡編輯自己的帳號,把「基本設定」(Basic Settings)裡的編輯器暫時換成「Editor - None」或「Editor - CodeMirror」,貼上同一段 HTML 再儲存一次。

  • 換了編輯器就正常:是 JCE 刪的,看情況二。
  • 換了還是被刪:是 Joomla 的文字過濾器,看情況一。

情況一:Joomla 文字過濾器刪掉的

Joomla 為了安全,會依照使用者群組過濾文章裡的 HTML。套用「預設禁止清單」(Default Forbidden List,舊版稱為 Default Black List)的群組,<iframe>、<script>、<object>、<embed> 這類標籤在存檔時就會被刪掉。

調整方法:

  1. 到「系統 → 全域設定」(System → Global Configuration),切到「文字過濾器」(Text Filters)分頁。
  2. 找到你的帳號所屬的群組,看目前的過濾類型。
  3. 只有確定需要時,才把該群組改成「不過濾」(No Filtering)。
  4. 儲存後,重新貼上 HTML 存檔確認。

安全提醒:「不過濾」代表這個群組的帳號可以在文章裡放任何程式碼。只開給信任的管理帳號,一般投稿者、會員群組不要開,否則有人可以在文章裡插入惡意程式。

情況二:JCE 編輯器刪掉的

JCE 是以 TinyMCE 為基礎的編輯器,會自動清理它認為不合規則的 HTML。調整的地方在 JCE 元件裡:

  1. 到「元件 → JCE 編輯器」(Components → JCE Editor)。
  2. 進入「設定檔」(Profiles),打開你的使用者群組所套用的設定檔。
  3. 在設定檔的編輯器參數裡,找和 HTML 清理、輸出有關的設定,以及是否允許 JavaScript、iframe 這類選項,只打開你真正需要的那幾項。

不同版本的 JCE 介面與選項名稱不太一樣,找不到的話可以參考 JCE 官方網站的說明文件。不建議為了一個標籤就把整個 HTML 清理功能關掉,只放行需要的就好。

段落結尾的換行標籤被刪

JCE 預設會把區塊最後面的 <br> 移除,例如 <p>第一行<br></p> 存檔後會變成 <p>第一行</p>。這是 TinyMCE 的 remove_trailing_brs 設定造成的,預設是開啟的。

這篇文章舊版的做法,是在 JCE 的全域設定(Global Configuration)裡新增一組自訂設定變數(Custom Configuration):

純文字
Key:   remove_trailing_brs
Value: false

設定後,單獨的 <br> 就會被保留。自訂設定變數的欄位位置會因 JCE 版本而不同,如果全域設定裡找不到,請查詢你所用版本的官方文件。

不過,如果目的只是讓段落之間多一點空白,比較好的做法是用 CSS 調整段落間距,而不是一直加 <br> 或空段落。以 Joomla 4/5 內建的 Cassiopeia 樣板為例,可以在樣板的 user.css 加上:

CSS
.com-content-article__body p {
  margin-block-end: 1.5em;
}

空的標籤被清掉

<i class="fa fa-phone"></i> 這種沒有內容、只靠 CSS 顯示圖示的標籤,編輯器常把它當成多餘的空標籤刪掉。可以:

  • 在標籤裡放一個空白字元(&nbsp;),讓它不是「空的」。
  • 改用圖片或 SVG 圖示。
  • 把圖示放在樣板或模組裡,不要放在文章內文中。

script 和 iframe,適合放在文章裡嗎?

就算調整設定讓 <script> 能存進文章,也不建議把追蹤碼、聊天工具這類程式碼放在文章內容裡:

  • 每次用編輯器修改文章,都有可能再被清理一次。
  • 換編輯器、升級 JCE 或 Joomla 後,設定可能不同,程式碼會莫名其妙消失。
  • 全站都要用的程式碼(例如 Google Analytics),應該放在樣板或使用專門的擴充套件。

只在某一頁使用的嵌入內容(地圖、影片),可以做成「自訂」(Custom)模組,再指定只顯示在那一頁,之後要修改也比較好找。

延伸閱讀

編輯器和過濾器的設定,關係到網站內容好不好維護,也關係到安全。正威網路行銷是 25 年經驗的基隆網頁設計工作室,提供客製化網頁設計與網站維護託管,歡迎來聊聊。

分享這篇文章

返回文章列表更多「joomla技術教學」文章

發表留言

還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。

讓我們一起打造
您的專屬網站!