無需編輯原始程式碼即可自訂 Collabora CODE 工具列

為了簡化 Collabora 線上開發版 (CODE) 編輯器,請選擇「緊湊」或「選項卡式」佈局,然後使用 WOPI 主機的 PostMessage 整合來隱藏單一命令、按鈕或筆記本列標籤。折疊工具列是一種便捷的視圖變更方式;如果您希望每次編輯工作階段都使用一致的介面,則透過主機隱藏控制項會更為合適。

您應該自訂哪個 CODE 介面?

CODE 提供兩種佈局:一種是帶有傳統選單和工具列的緊湊佈局,另一種是帶有筆記本列的選項卡式佈局。首先,請確定您的使用者看到的是哪種佈局:工具列按鈕 ID 和筆記本列標籤 ID 不可互換。 Collabora 的支持指南指出,舊名稱已棄用classic,並從 21.11 系列開始使用新名稱。請參閱Collabora 介面配置指南。notebookbarcompacttabbed

Collabora CODE 的選項卡式介面,在 Writer 文件上方有文件、主頁、插入、佈局、視圖和幫助選項卡。
選項卡式版面配置將編輯工具分組到命名的選項卡下;「幫助」標籤可能是 Hide_NotebookTab 的目標。
Collabora CODE 緊湊型介面,在狹窄的工具列上方顯示文件、編輯、視圖、插入、格式、工具和幫助選單。
緊湊佈局使用單獨的選單行和較小的按鈕條,因此選單和按鈕控制需要不同的標識符。

應該更改伺服器預設設定還是使用者會話?

僅當大多數使用者都應使用相同的佈局時才更改伺服器預設設定。在自架安裝中,該user_interface.mode設定coolwsd.xml接受 `<your-name> ` default、compact`<your-name>` 或 `<your-name> tabbed`。請先備份配置,然後再變更現有mode值,而不是再新增另一個 XML 元素:

<user_interface>
  <mode>tabbed</mode>
</user_interface>

這段簡化的 XML 程式碼僅用於演示設置,並非取代完整的配置部分。請透過部署的常規配置和服務重新啟動流程套用更改,然後重新開啟文件。容器部署可以傳遞--o:user_interface.mode=tabbed其現有的程式碼啟動覆蓋設定。嵌入式應用程式也可以透過其 WOPI 值影響啟動模式ui_defaults。當伺服器使用 時,主機的偏好設定可能很重要default,因此不要假設伺服器端的編輯會覆蓋整合特定的選擇。

能否在不修改程式碼原始碼的情況下隱藏整個工具列?

為了在閱讀時獲得更大的空間,請點擊目前選取的標籤頁即可折疊筆記本欄;再次點擊即可展開。 Collabora 在其官方筆記本欄介紹中描述了這種行為。 PostMessage API 文件中也Collapse_Notebookbar提供了隱藏筆記本列按鈕或緊湊按鈕條的方法。這是一種可逆的顯示狀態,並非永久的管理員策略。

為了更精細地控制,請選擇與元素相符的 PostMessage 操作。以下映射關係列於Collabora Online SDK 手冊:

需要隱藏什麼PostMessage 操作ID格式
一個工具列按鈕Hide_Button按鈕 ID
跨選單和工具列的命令Hide_CommandUNO 指令,例如.uno:ThemeDialog
選項卡式佈局中的一個選項卡Hide_NotebookTab標籤頁 ID,例如Help
簡潔菜單項Hide_Menu_Item選單項目 ID

自24.04.11.1 版本起,文件中已對選項卡特定操作進行了說明。 SDK 也指出, 24.04.11.2Hide_Command版本擴充了上下文選單的功能。在使用任何一種功能之前,請檢查您已部署的 CODE 版本。

如何從 WOPI 主機發送隱藏命令?

這些操作由嵌入在 iframe 中的 CODE 的應用程式發送,而不是在 CODE 設定對話框中輸入。您需要控制該主機整合、一個有效的 WOPICheckFileInfo回應以及PostMessageOrigin與您的主機 Web 應用程式來源相符的值。如果您使用的是打包的 Nextcloud 或 ownCloud 集成,它可能不會公開任意自訂的 PostMessage 鉤子;在這種情況下,請在集成本身中進行更改或使用其支援的設定。

1. 等待程式碼載入完成

在主機頁面註冊訊息監聽器。驗證發送視窗和來源。當 CODE 報告App_LoadingStatus錯誤時Status: Document_Loaded,在發送自訂訊息之前發送此訊息。如果沒有此握手,CODE 可能會忽略主機指令-此錯誤已在Collabora 問題 #13224Host_PostmessageReady中解釋。

2. 隱藏製表符和格式命令

以下主機端 JavaScript 程式碼假設您的頁面已有一個 ID 為 `<iframe_id>` 的 iframe collabora-frame。請將其設定editorOrigin為服務您的程式碼編輯器的確切 HTTPS 來源,而不是 WOPI 儲存伺服器的來源。在您的實際應用程式中,在文件初始化之前註冊監聽器:

const frame = document.getElementById('collabora-frame');
const editorOrigin = 'https://office.example.com';

function sendToCode(MessageId, Values = {}) {
  frame.contentWindow.postMessage(JSON.stringify({
    MessageId, SendTime: Date.now(), Values
  }), editorOrigin);
}

window.addEventListener('message', (event) => {
  if (event.source !== frame.contentWindow ||
      event.origin !== editorOrigin) return;
  let message;
  try {
    message = typeof event.data === 'string'
      ? JSON.parse(event.data) : event.data;
  } catch { return; }
  if (message?.MessageId !== 'App_LoadingStatus' ||
      message?.Values?.Status !== 'Document_Loaded') return;

  sendToCode('Host_PostmessageReady');
  sendToCode('Hide_NotebookTab', { id: 'Help' });
  sendToCode('Hide_Command', { id: '.uno:ThemeDialog' });
});
瀏覽器開發者工具的「原始碼」面板顯示了一個主機端訊息偵聽器和一個針對「幫助」的 Hide_NotebookTab 呼叫。
可以在宿主應用程式的原始碼面板中查看 postMessage 的連接方式。請使用文章中的完整程式碼範例,而不是此面板中顯示的簡略文字。

這裡Help是筆記本列選項卡目標,而 ` .uno:ThemeDialog<command>` 標識的是 LibreOffice UNO 指令。 Collabora 開發人員在其關於隱藏 UNO 元素的指南中專門描述了後一個 ID 。若要隱藏特定的 Compact 工具列按鈕,請將操作替換為 `<command>`Hide_Button並提供已驗證的按鈕 ID。不要根據可見的標題猜測 ID;請查看已安裝的 CODE 原始碼或 SDK 的工具列 ID 指南。

如果標籤頁或工具列沒有消失怎麼辦?

在修改 CODE 檔案之前,請檢查瀏覽器控制台和網路活動。最常見的原因是Host_PostmessageReady握手失敗、連接不匹配PostMessageOrigin、在連接失敗前發送訊息Document_Loaded,或在編輯器處於標籤頁模式時選擇「緊湊」選單項目。重新開啟檔案會啟動一個新的會話,因此每次都需要套用隱藏訊息的設定。

版本相關的缺陷也存在。例如,Collabora 問題 #15910描述了 CODE 25.04.9.4 版本中的一個Hide_NotebookTabJavaScript 錯誤,該錯誤於 2026 年 6 月報告;該問題已被標記為已關閉,但這並不能說明哪些已部署的版本包含了修復程序。如果您遇到報告的錯誤,請檢查您的特定版本及其發行說明。

最後,隱藏並不等於存取控制。隱藏列印或下載按鈕可能仍會留下等效的 API 或其他存取路徑。如果目標是禁止這些操作,請使用文件中記錄的 WOPIDisablePrint或DisableExport標誌,並根據需要強制執行儲存權限,而不是依賴隱藏Hide_Button或隱藏按鈕Hide_Command。

如何驗證自訂設定是否生效?

以預期的佈局開啟一個新文件。確認Help在選項卡模式下選項卡已消失,且先前可見的「主題」命令也已不再顯示。然後編輯並保存一個測試文檔,以確認正常的編輯功能仍然有效。使用另一種文件類型重複此檢查,並在重新載入頁面後再次檢查,因為主機需要重新套用會話特定的隱藏命令。

Collabora CODE 帶有文件、主頁、插入、佈局和視圖選項卡的選項卡式介面,移除了幫助功能,並且 Writer 文件仍然可編輯。
隱藏「幫助」標籤後,其他編輯選項卡和文件畫布仍然可用,可以進行功能檢查。

留下評論

無需編輯原始程式碼即可自訂 Collabora CODE 工具列

無需編輯原始程式碼即可自訂 Collabora CODE 工具列

使用緊湊模式或選項卡模式和 WOPI PostMessage 控制項簡化 Collabora CODE,安全地隱藏選定的按鈕、命令和選項卡。

在 Nginx 後端執行 Collabora 程式碼並啟用 TLS 終止

在 Nginx 後端執行 Collabora 程式碼並啟用 TLS 終止

讓 Nginx 負責 Collabora CODE 容器的 HTTPS,正確轉送編輯 WebSocket,並在不暴露連接埠 9980 的情況下驗證公共端點。

在 Collabora 移動鍵盤開啟時保持文字可見

在 Collabora 移動鍵盤開啟時保持文字可見

解決 Collabora Online 中行動瀏覽器鍵盤遮擋文字的問題,提供快速解決方法,並對瀏覽器、嵌入式 WebView 和宿主頁面進行單獨檢查。

在 ONLYOFFICE 中停止不必要的列印和下載

在 ONLYOFFICE 中停止不必要的列印和下載

為 ONLYOFFICE 連結、會議室成員或 Docs API 會話設定列印和下載限制,然後從收件者帳戶驗證限制。

為 ONLYOFFICE 工作區安排可靠的備份

為 ONLYOFFICE 工作區安排可靠的備份

在 ONLYOFFICE Workspace 中設定備份目標、計畫、郵件覆蓋範圍和保留期限,然後驗證檔案是否已準備好進行復原。

使用官方的 Compose 檔案部署 ONLYOFFICE Docs 企業版

使用官方的 Compose 檔案部署 ONLYOFFICE Docs 企業版

啟動企業版 Docker Compose 堆疊,持久化其授權和數據,安全地配置 JWT,並確認編輯器已準備好整合。

使用可重複使用的 ONLYOFFICE 巨集清理電子表格文本

使用可重複使用的 ONLYOFFICE 巨集清理電子表格文本

使用 ONLYOFFICE JavaScript 巨集,透過安全的審閱工作流程,從指定的電子表格區域中刪除非列印字元並移除多餘的空格。

變更 ONLYOFFICE 工作區的預設儲存位置

變更 ONLYOFFICE 工作區的預設儲存位置

將入口網站資料從預設磁碟移至支援的雲端儲存供應商,或透過變更主機磁碟區來對應安全地遷移 Docker 資料。

從 Linux 系統中徹底移除 ONLYOFFICE 文件伺服器

從 Linux 系統中徹底移除 ONLYOFFICE 文件伺服器

確定文件伺服器使用的是 Linux 軟體包還是 Docker,僅刪除其元件,並檢查剩餘數據,避免誤刪共享服務。

透過找到瓶頸來消除 ONLYOFFICE 協同編輯延遲

透過找到瓶頸來消除 ONLYOFFICE 協同編輯延遲

追蹤協作編輯速度慢的原因,例如 Docker 資源壓力、代理連接或文件加載,然後選擇與您的測量結果相符的修復方案。