カスタムヘッダーリンク

:discourse2: 概要 Custom Header Links (カスタムヘッダーリンク) を使用すると、カスタムのテキストベースのリンクをヘッダーに簡単に追加できます。
:eyeglasses: プレビュー Discourse Theme Creator でのプレビュー
:hammer_and_wrench: リポジトリリンク GitHub - discourse/discourse-custom-header-links · GitHub
:open_book: Discourse テーマは初めてですか? Discourse テーマ利用の初心者ガイド

このテーマコンポーネントをインストール


機能

デスクトップ

モバイル


(スペースが非常に限られているため、モバイルで複数のリンクを追加することは推奨されません)


設定

設定 説明
custom_header_links ヘッダーに表示するリンクの構造化されたリスト。各リンクは個別のフィールドを持つフォームを通じて設定されます(下記参照)。
links_position リンクがヘッダーの右側(デフォルト)またはロゴの近くの左側のどちらに表示されるかを制御します。left に設定すると、個々のリンクの hide_on_scroll の設定に関わらず、トピックページではすべてのリンクが自動的に非表示になり、トピックタイトル用のスペースが確保されます。

リンクの追加

リンクは、テーマコンポーネント設定の構造化されたフォームを通じて設定されます。新しいリンクを追加するには Add をクリックします。各リンクには以下のフィールドがあります。

フィールド 必須 説明
Text (テキスト) :white_check_mark: はい リンクの表示ラベル。最大100文字。CSSクラスの決定にも使用されます(下記CSSカスタマイズ参照)。
Title (タイトル) :x: いいえ リンクの上にマウスオーバーしたときに表示されるツールチップテキスト。最大1000文字。
URL :white_check_mark: はい リンクが指すURL。相対パス(例: /faq)または完全なURLのいずれも指定可能です。最大2048文字。
View (表示) :x: いいえ リンクが表示されるデバイスを制御します。未設定の場合、すべてのデバイスに表示されます(vdm と同じ)。値は下記参照。
Target (ターゲット) :x: いいえ リンクが開く方法を制御します。未設定の場合、新しいタブで開くのがデフォルトです(blank と同じ)。値は下記参照。
Hide on scroll (スクロール時に非表示) :x: いいえ トピックページでトピックタイトルがヘッダーに表示されたときにリンクが非表示になるかどうかを制御します。デフォルトは keep です。links_positionright に設定されている場合にのみ適用されます — 下記の注記を参照してください。値は下記参照。
Locale (ロケール) :x: いいえ 設定されている場合、サイトのページ言語がこの値と一致する場合にのみリンクが表示されます。すべてのロケールでリンクを表示するには空白のままにします。詳細は下記参照。

\u003cbr\u003e

View の値:

動作
vdm デスクトップとモバイルの両方で表示
vdo デスクトップのみ表示
vmo モバイルのみ表示
(未設定) vdm と同じ — すべてのデバイスで表示

Target の値:

動作
blank 新しいタブで開く
self 同じタブで開く
(未設定) 新しいタブで開くのがデフォルト(blank と同じ)

Hide on scroll の値:

動作
keep トピックタイトルがヘッダーに表示されてもリンクは表示されたままになります (デフォルト)
remove トピックページでトピックタイトルが表示されるとリンクは非表示になります

\u003e :information_source: hide_on_scrolllinks_positionright の場合にのみ適用されます。 links_positionleft の場合、個々の hide_on_scroll の設定に関わらず、すべてのリンクはトピックページで一緒に非表示になります。

hide_on_scroll が動作している例(links_positionright に設定されている場合)を以下に示します。

Most LikedPrivacykeep に設定されているため、タイトルが展開されたときも表示されたままになります。他のリンクは remove に設定されているため、タイトルが表示されると非表示になります。この動作はトピックページにのみ影響します。


ロケールによるフィルタリング

Locale フィールドを使用すると、サイトが特定の言語に設定されている場合にのみリンクを表示できます。これは、言語ごとに異なるヘッダーリンクを設定したい多言語コミュニティにとって便利です。

  • フィールドに endefrzh_CN などのロケールコードを設定します。
  • マッチングは大文字と小文字を区別せず、ハイフン (-) とアンダースコア (_) の区切り文字はどちらも同じように扱われます。したがって、en-USen_USen_us はすべて同じように一致します。
  • ロケールフィールドが空白のままの場合、リンクはすべてのロケールで表示されます。これは、ほとんどの単一言語サイトで推奨される設定です。
  • リンク要素には、CSSクラス headerLink--{locale} も追加されるため、追加のCSSターゲティングに使用できます。

\u003e :warning: よくある問題: リンクが表示されない場合は、サイトに設定されている言語と一致しない locale 値を誤って設定していないか確認してください。ロケールフィールドを空白のままにしておくのは安全で、常にリンクが表示されます。


CSSカスタマイズ

各リンクには、そのText値から派生したCSSクラスが自動的に割り当てられます。スペースはハイフンに置き換えられ、テキストは小文字に変換され、末尾に -custom-header-links が追加されます。

例:

  • テキストが Privacy のリンクには、クラス privacy-custom-header-links が割り当てられます。
  • テキストが Visit Shop のリンクには、クラス visit-shop-custom-header-links が割り当てられます。

すべてのヘッダーリンクのスタイル設定:

.custom-header-links .headerLink a {
  font-size: var(--font-up-1);
  color: var(--header_primary);
}

特定のリンクのスタイル設定 (例: テキストが “Privacy” のリンク):

.custom-header-links .headerLink.privacy-custom-header-links a {
  color: var(--tertiary);
}
.custom-header-links .headerLink.privacy-custom-header-links a:hover {
  color: var(--tertiary-high);
}

ログイン状態に基づいてリンクを表示または非表示にする:

Discourse は、ログアウトしているユーザーの \u003chtml\u003e タグに anon クラスを追加します。これを使用して、リンクを条件付きで表示または非表示にできます。

/* ログアウトしているユーザーから "Dashboard" を非表示にする */
html.anon .dashboard-custom-header-links {
  display: none;
}

/* ログインしているユーザーから "Sign Up" を非表示にする */
html:not(.anon) .sign-up-custom-header-links {
  display: none;
}

\u003e :warning: CSS の display: none視覚的な非表示メカニズムです。リンクの HTML はページソース内に残ります。機密性の高いURLやアクセス制御が必要なURLを保護するためにこれを使用しないでください。

CSS を使用したリンクの並べ替え (flexbox の order を使用):

.custom-header-links li {
  \u0026:nth-child(1) { order: 3; }
  \u0026:nth-child(2) { order: 1; }
  \u0026:nth-child(3) { order: 2; }
}

ユーザー固有のリンクには /my パスを使用すると、ユーザー名をハードコーディングする必要がなくなります。

/my/messages     → 現在のユーザーの受信トレイ
/my/activity     → 現在のユーザーのアクティビティ

\u003e :discourse2: ホストされていますか? テーマコンポーネントは、当社の Pro、Business、Enterprise プランで利用可能です。


\u003e 変更履歴のハイライト:
\u003e
\u003e * custom_header_links 設定が、カンマ区切りのリスト形式から構造化された type: objects フォームUIに移行されました。以前に古いカンマ区切りテキスト入力を使用してリンクを設定していた場合、データは自動的に保持されるはずです。

「いいね!」 83
How can I add custom hamburger menu
Header Submenus
Structuring a multilingual community
Display StatusPage status on as a header link
Control CSS based on user's logged in state
Looking for a freelancer to implement a custom Discourse theme (based on an existing mockup)
Add a global header between Discourse & Website
How to make custom setting type
Is it possible to have users' job titles next to their names on posts?
Link to find all deleted posts by all users in a particular period
Dropdown links in existing Header
Insert Link to External Website
Is anyone here using their Discourse instance as their entire website?
How to fire on every footer load (or page load?)
Custom links above header bar
Custom Header Links (icons)
Pre seeded posts all missing - Missing Terms of Service, FAQ and Privacy pages
Dropdown header links in the existing Header
Add a "curated personal learning" page for users
Redirect search icon to search page
Possible to change main logo URL?
2021: The Year in Review
How to add breadcrumb?
How to add contact us page?
Navigation bar above all post
Adding link to blog on main page
Customizing your site with existing theme components
Show "new topic" when not logged in
How can I add a new button to the topbar?
⬇️ Dropdown Header
How to fix logo size?
Links into the header block
Customize the header with links, icons, or menus
Privacy Policy does't meet Google's requirements
Custom Header Links and New Topic Header Button don't play nice
Customize Your Site Branding
Nextcloud support
How to override the site-header.hbs file from custom theme?
Sidebar link / top button to PM admin
Toolbar under site header per category
Privacy Policy does't meet Google's requirements
Link buttons on the top disappear when scrolling around the site
Disclaimer section on the "about" page
What Themes are being used for these Discourse forums?
Alternative component (plugin?) to categories navbar
Add button in header for logged in users
Use decorateWidget to add text link to header
[PAID] Expert Wanted for Forum Redesign
Add social media handles on home page
Create hyperlink from home logo
Configure a custom sidebar link to open in a new tab
2023: The Year in Review
Modifying Header
Fully Theme
Visiting /admin/upgrade may lead to a server error
Header Submenus
How do I go about making a very customized theme?
How to Integrate a Custom Plugin in discourse UI
Embedding a whole Discourse forum on another site in an <iframe>
Memberstack + Webflow + Discourse OpenID Connect
Custom website header with forum
Custom Header Links (icons)
Brave default Theme
Why does the logo navigate to Discourse home not main site home
Structuring a multilingual community
How to make sidebar sticky?
Forum navbar is repeating
Adding my Nav into the header bar
Best place(s) to link back to a non-forum homepage?
Allow non-members to pm the administrator
Adding a header link for Guests Only
Link on Top header to Go to Home page of main site
How to finely scroll out custom header?
Can I add a icon and link back to my homesite at the top bar
Custom Header links was automatically hide when scrolling topic page contents
Link behavior inconsistent
Upcoming Header Changes - Preparing Themes and Plugins
How to add a "button" which composes a pre-filled topic
Where to place project external URL?
Change destination of logo link
External header links are not opening in a new tab
How to split the forum into two main parts (general/groups) and how to display only subcategories I can create a new post in?
Add secondary url / embed into Wordpress
"An empty string is not a valid JSON string" when updating theme component #2
How can I add a button to the header?
Showing categories statically above most recent posts
How to add a button to the header area?