幫文章建立目錄 ㊙

最近看到論壇幾篇寫的很棒的文章,因為篇幅有點長,我覺得加上目錄,對讀者會更友善。

重要補充:每次編輯完文章,存檔後必須再按 F5 重載網頁,右側的選單才可以順利點選。

要建立目錄,其實很簡單,一行指令就可以搞定,而且放在文章任何地方都可以。

<div data-theme-toc="true"> </div>

我的習慣是放在最下方,編輯文章時瀏覽比較順。


▌三種做法

先講做法,讓大家可以快速解決問題,後面再來談談我的觀察。

1. 自己加上該行指令

以我每天的 Udemy 限免課程分享為例,目前已經 可以做到全自動

程式完成的文案,最後一行就是該指令 <div data-theme-toc="true"> </div>

2. 從工具列(toolbar)選擇

工具列(toolbar)最右側的下拉式選單 :gear:(dropdown select box)中。

3. tag 自動選單

我在後台管理員設定中,新增了一個 tag 自動目錄,只要選了這個標籤,就會自動替文章加上目錄。

新增標籤的地方在編輯器工具列的上方右側(可選標籤),輸入文字就會顯示符合的標籤候選列表。


▌更好用的設定 - user friendly

我推測大家沒有設定目錄的問題是:太難找到這個按鈕。

所以我決定寫兩篇文章來協助大家:幫文章加上目錄(就是這篇文章)、如何在論壇中編輯文章(有空再寫)。

Discourse 的編輯器(composer),有一行工具列(toolbar),最右側的下拉式選單 :gear:(dropdown select box),點擊後、再往下捲動。

看起來很長,但其實編輯器一打開,就可以點擊下拉式選單,往下捲動(請參考前面的示意圖)。

由於 Discourse 目前沒有辦法設定工具列中的位置,所以我把較少用的功能移走(如:模糊化劇透),讓「建立目錄」的順序提前,不用捲動就可以看到。

我給大家的建議是(擇一即可):

  1. 使用標籤(tag)自動選單

  2. 從工具列中選擇「建立目錄」,位置不拘,但放在最後比較不會影響文章撰寫。


▌Discourse 官方參考文章

這個比較偏 Discourse 管理,而不是一般的編輯了。之後會移到其他文章。

我花了點時間,研究了一下工具列各個 icon 的調整方法。

如我經常提的,記錄下來,方便忘性超好的我,未來可以參考。

隱藏不用的 icon

有人在 Discourse 官網問到,要 如何客製化文章編輯器的工具列

工作人員的回覆是:

目前沒有工具列的相關設定,但可以透過主題和外掛來達成這個目的。

如果有這個功能就好了,所以我把這個設為功能請求。

發問者希望可以移除或隱藏工具列的 插入日期/時間(Insert date / time)按鈕,做法是 在後台設定 CSS

以下是隱藏工具列某個按鈕的作法:

我沒測試。

.d-editor-button-bar {
  .local-dates {  // hides the date button
    display: none;
  }
}

如果要隱藏下拉式選單 :gear: 中的按鈕,範例如下:

這個方法我試了,沒有用。(調整 :gear: 選單順序也不行)

.toolbar-popup-menu-options {
  [data-name="Build Poll"] {
    display: none;
  }
}

調整 :gear: 選單順序

如果想調整各按鈕的順序,CSS 語法範例如下:

我沒測試。

.d-editor-button-bar {
  .local-dates {  // moves the date button to the beginning
    order: -1;
  }
}

以下 CSS 語法,可順利將「建立目錄」調整至 :gear: 選單最上方。

.select-kit-collection {
  display: flex; /* 確保父容器是 Flexbox 布局 */
  flex-direction: column; /* 垂直排列子項目 */
}

.select-kit-row[data-name="建立目錄"] {
  order: -1; /* 提前此項目 */
}

進階調整

但如果想要把下拉式選單中的按鈕,加到工具列中,或者倒過來,那就有點難度了,建議找有經驗的工程師協助。

以下範例是將 Discourse Gifs 這個按鈕,從下拉式選單中,移到工具列中。

參考文章來源:

中文翻譯

Discourse 的多語言化,架構設定的很好,你可以載入預設的繁中(如果有的話),也可以自己設定。

這裡是自行設定的位置:客製化 > 佈景主題 > 元件 > DiscoTOC

2個讚