κ°μ
μ»΄ν¬λνΈ[1]λ₯Ό μλ¨ λ° μ¬μ΄λλ° μμ λ μ΄μμν μ μλλ‘ νλ ν λ§ μ»΄ν¬λνΈμ λλ€.
- Route(κ²½λ‘)μ Position(μμΉ)λ³λ‘ βμμ ―β μ§ν©μ λͺ νν μ§μ ν©λλ€.
- discovery[2], topic(ν ν½), tag(νκ·Έ)[3], category(μΉ΄ν κ³ λ¦¬)[3:1], categories(μΉ΄ν κ³ λ¦¬ λͺ©λ‘)[3:2] λλ tags-intersection(νκ·Έ κ΅μ°¨)[4] κ°κ°μ λν μ€μ μ μ§μν©λλ€.
- "λ°(Bars)"λ top(μλ¨), left(μ’μΈ‘), right(μ°μΈ‘) λλ λ체 μ°μΈ‘ μμΉ μ€ νλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- κ° λ°λ μ κΈ°(collapsed) λλ λ«κΈ°(dismissed)κ° κ°λ₯ν©λλ€ (λ«μ μνλ₯Ό μ΄κΈ°ννλ €λ©΄ λΈλΌμ°μ λ₯Ό μλ‘κ³ μΉ¨ν΄μΌ ν©λλ€). κΈ°λ³Έμ μΌλ‘ μ΅μν(minimised) μνλ‘ μ€μ ν μ μμ΅λλ€.
- 곡μ μ¬μ΄λλ°λ₯Ό μ²λ¦¬νμ§λ§, Barsμ μ’μΈ‘ μ¬μ΄λλ°λ₯Ό μ¬μ©ν κ³νμ΄λΌλ©΄ 곡μ μ¬μ΄λλ°μ λλ‘λ€μ΄(Dropdown) λͺ¨λλ₯Ό μ¬μ©νλ κ²μ΄ κΆμ₯λ©λλ€.
- μΌλΆ ν° κΈμ¨λ₯Ό νμνλ κΈ°μ‘΄ μμ μ€μ μ΄ ν¬ν¨λμ΄ μμΌλ©°, μ΄λ λ°λͺ¨ λͺ©μ μ΄κΈ°λ νκ³ μμ μ€μ μ νμΈν μ μλλ‘ νκΈ° μν¨μ΄κΈ°λ ν©λλ€. μ΄ μ€μ λ€μ μμ νκ³ μμ μ μ»΄ν¬λνΈ μ΄λ¦μΌλ‘ κ΅μ²΄νμΈμ.
- νλμ μ»΄ν¬λνΈ,
bars-custom-html(μμ μ€μ μ°Έκ³ )μ΄ κΈ°λ³Έ μ 곡λμ§λ§, κΈ°μ‘΄ ν λ§ μ»΄ν¬λνΈ λ° νλ¬κ·ΈμΈμ λ§μ μ»΄ν¬λνΈμ νΈνλ©λλ€. - λͺ¨λ°μΌ μ§μμ μμ§ κ΅¬νλμ§ μμμ΅λλ€.
λΉ λ₯Έ λ§ν¬
https://github.com/merefield/discourse-tc-bars |
|
| GitHub - merefield/discourse-tc-bars: A Theme Component that allows you to lay out Components ("widgets") on top and side bars Β· GitHub | |
| Installing a theme or theme component |
μ΄ ν
λ§ μ»΄ν¬λνΈλ₯Ό μ¦κΈ°κ³ κ³μ κ°μ? GitHubμμ
ν΄μ£ΌμΈμ! ![]()
μμ:
μ΅μ΄ λ‘λ μ:
μ΄ TCμ λν΄ μμλ λͺ κ°μ§ μ€μν μ¬ν!
-
μ΄ ν λ§ μ»΄ν¬λνΈλ ν λ§ κ°λ°μ λν κΈ°μ μ μ΄ν΄κ° μλ κ°λ°μ λ° κ΄λ¦¬μλ₯Ό μν κ²μ λλ€. Barsλ₯Ό μ¬μ©νμ¬ μ¬μ΄λλ°λ₯Ό ꡬννλ λ° λμμ΄ νμνκ³ κΈ°μ μ μλμ΄ μΆ©λΆνμ§ μλ€λ©΄, μ λ Marketplace μ±λμ κ°λ°μλ₯Ό κ³ μ©ν μ μμ΅λλ€.
-
μ΄ ν λ§ μ»΄ν¬λνΈλ μ¬μ΄λλ°λ₯Ό μ§μνλ νλ μμν¬λ₯Ό μ 곡νλ κ²μ΄ λͺ©μ μ λλ€. μ΅μ’ μ μΈ μκ°μ λ§λ¬΄λ¦¬(polish)λ μΆκ° CSSλ₯Ό μ¬μ©νμ¬ ν λ§μμ μ§μ μΆκ°ν΄μΌ νλ©°, μ΄ μ»΄ν¬λνΈλ μ΄λ₯Ό μ 곡νμ§ μμ΅λλ€. κ·Έλ¬λ λ§μ μμ μ λμ μ²λ¦¬νμ¬ κ³ λ €ν μ¬νμ μ€μ¬μ£Όκ³ , μ΄μ μλ λΆκ°λ₯νλ μμ μ μνν μ μλ λ₯λ ₯μ λΆμ¬ν μλ μμ΅λλ€ β¦

μ»΄ν¬λνΈ κ³ λ € μ¬ν
-
μ»΄ν¬λνΈ μ΄λ¦μ μ§μ ν΄μΌ ν©λλ€. μ»΄ν¬λνΈ μ΄λ¦μ μ€μ λ‘ ν λ§, tc λλ νλ¬κ·ΈμΈμ
componentλλ ν°λ¦¬ λ΄ νμΌλͺ μμ μ λ―Έμ¬λ₯Ό μ μΈν κ²κ³Ό λμΌν©λλ€.- μ»΄ν¬λνΈ μ΄λ¦μ ν
λ§ μ»΄ν¬λνΈμ μ΄λ¦(μ¬λ¬ κ°μ Ember Glimmer μ»΄ν¬λνΈλ₯Ό ν¬ν¨ν μ μμ)μ΄ μλλΌ, μ€μ Ember μ»΄ν¬λνΈ νμΌμ μ΄λ¦μ
λλ€
. μλ₯Ό λ€μ΄:
λ°λΌμ
layouts-tag-list - μ»΄ν¬λνΈ μ΄λ¦μ ν
λ§ μ»΄ν¬λνΈμ μ΄λ¦(μ¬λ¬ κ°μ Ember Glimmer μ»΄ν¬λνΈλ₯Ό ν¬ν¨ν μ μμ)μ΄ μλλΌ, μ€μ Ember μ»΄ν¬λνΈ νμΌμ μ΄λ¦μ
λλ€
-
κΈ°μ‘΄ ν λ§ μ»΄ν¬λνΈλ νλ¬κ·ΈμΈμμ κ°μ Έμ¬ μ μμ΅λλ€. κΈ°μ‘΄ μ»΄ν¬λνΈκ° μλν μ μμ΅λλ€. μμ:
- π·οΈ Bars Tag List Component
- Render a component within a Widget. (Using select-kit components within plugin code) - #31 by merefield
- Discourse AI Topic Summary π€ β¦ κ·Έλ¦¬κ³ μ΄μ©λ©΄:
- 리λ보λ μμ ―: https://github.com/discourse/discourse-gamification/blob/main/assets/javascripts/discourse/components/minimal-gamification-leaderboard.js (μλν΄ λ³΄μλ©΄ μλμ μλ €μ£ΌμΈμ!)
-
μ»΄ν¬λνΈλ₯Ό ꡬμΆνλ €λ©΄ μλΉν μ λ¬Έ μ§μμ΄ νμν©λλ€.
- νμ§λ§ λ€λ₯Έ ν λ§ μ»΄ν¬λνΈμμ μμ μ μ»΄ν¬λνΈλ₯Ό ꡬμΆν΄ λ³΄κ³ , λ μ»΄ν¬λνΈκ° λμΌν ν λ§μμ λͺ¨λ νμ±νλμ΄ μλμ§ νμΈν΄ 보μΈμ.
-
μ»΄ν¬λνΈλ μ체 λ°μ΄ν°λ₯Ό μμ±ν΄μΌ ν©λλ€ (μ΄λ¬ν λ°©μμΌλ‘ λ μ΄μμμ ꡬμ±νλ λ° νμν νΉμ νλ¬κ·ΈμΈ μμλ λλ¬Έμ νλ¬κ·ΈμΈ μμλ μ ν΅ν λͺ¨λΈ ν¨μ€μ°λ£¨λ₯Ό μ¬μ©ν μ μμ΅λλ€).
- κΈ°λ³Έμ μΌλ‘λ Discourse μ½μ΄ λλ κΈ°μ‘΄ νλ¬κ·ΈμΈμ΄ μ 곡νλ κΈ°μ‘΄ JSON API λ°μ΄ν°λ§ μ¬μ©ν μ μμ΅λλ€. νμ¬ APIμμ μμ±ν μ μλ λ§μΆ€ λ°μ΄ν°κ° νμνλ©΄ μ λ #marketplaceμ λκ΅°κ°λ₯Ό κ³ μ©νμ¬ λμμ λ°μ μ μμ΅λλ€.
-
μ¬μ΄λλ° λ° μ»΄ν¬λνΈ κ²½κ³λ₯Ό μ·¨ν₯μ λ§κ² μ€νμΌλ§ν΄μΌ ν μ μμ΅λλ€. (λ€μ νλ² λ§νμ§λ§, λμμ΄ νμνλ©΄ κ°λ°μ κ³ μ©μ κ³ λ €ν΄ λ³΄μΈμ).
- λ°μ€ μλμ°μ ν λ리μ μ λ΅μ μΈ μ¬μ©μ λμμΈμ ν¨μ¬ λ©μ§κ² λ§λ€ μ μμ΅λλ€ - μμ μ μΌλ‘ μ κ·ΌνμΈμ!
μ λ§λ€μλκ°
-
Discourse μ½μ΄κ° Ember 5λ‘ μ λ°μ΄νΈλλ©΄μ, Pavilionμ νλ¬κ·ΈμΈ Layoutsκ° Discourse λ μ΄μμμ μ‘°μνλ λ° μ¬μ©νλ νΈλ¦μ΄ λ μ΄μ μλνμ§ μκ² λμμ΅λλ€. μ΄μ λΉκ΅μ μ¬μ΄ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ ν ν½ κ²½λ‘μμ μ¬μ΄λλ°λ₯Ό νμνλ μ¬μ΄ λ°©λ²μ΄ μμμ΅λλ€.
-
λν, Emberλ μμ νκΈ° ν¨μ¬ λμ Glimmer μ»΄ν¬λνΈλ₯Ό λμ νμ΅λλ€. (Layoutsλ Glimmer μ»΄ν¬λνΈλ₯Ό λ체νκΈ° μν΄ λΉμΆμ²(deprecated)λ Widgets APIλ₯Ό μ¬μ©νμ΅λλ€).
-
λ§μ§λ§μΌλ‘, Discourse μ½μ΄ νμ΄ ν λ§ μ»΄ν¬λνΈ μ€μ μ μν μλ‘μ΄ JSON νΈμ§κΈ°λ₯Ό μ 곡νμ¬ λ 볡μ‘ν μ€μ λ°°ν¬κ° κ°λ₯ν΄μ‘μ΅λλ€

-
Layouts νλ¬κ·ΈμΈμ μμ νλ κ²(Layouts μλμλ TCκ° μ‘΄μ¬νμ§ μμμ΅λλ€)보λ€λ, λλΆλΆμ νμν μμ μ νλ‘ νΈμλμμλ§ λ¬μ±ν μ μμΌλ―λ‘ ν λ§ μ»΄ν¬λνΈλ‘ μ¬κ΅¬μΆνλ κ²μ΄ ν©λ¦¬μ μμ΅λλ€.
-
βBarsβ λ±μ₯
Cheers!!
μλ €μ§ λ¬Έμ
- μλ¨ λ°κ° κ³ μ λμ§ μμ΅λλ€ (ν΄κ²°ν μ μμΌλ©΄ ν΄λΉ μ€μ μ μ κ±°ν μ μμ΅λλ€).
ν¬λ λ§
- μλ κ° μ μ©νκ² μ¬μ©λμμΌλ νμ¬λ κΉ¨μ§ Layouts νλ¬κ·ΈμΈμ μ μ μ νμμμ λλ€. @angusκ° μ μνμ΅λλ€ (Cheers!).
- Right Side Blocksμ params μμ€ν μ μ¬μ©ν©λλ€ (κ°μ¬ν©λλ€ @pmusaraj!).
βdiscoveryβ(κ²½λ‘)λΌλ μ©μ΄λ νΉμ ν ν½μ μ§μ νκΈ° μ μ μ΄μ© κ°λ₯ν ν ν½μ νμν μ μλ μ£Όμ ν ν½ λͺ©λ‘ νμ΄μ§(μ: βμ΅μ β, βμλ‘μβ)λ₯Ό κ°λ¦¬ν΅λλ€. β©οΈ
κΈ°μ μ μΌλ‘λ βdiscoveryβ κ²½λ‘μ΄μ§λ§, μ νμ μΌλ‘ λ€λ₯΄κ² μ·¨κΈν μ μλλ‘ κ΅¬λΆλ μ΄λ¦μΌλ‘ λΆλ¦¬νμ΅λλ€. β©οΈ
μ¬κΈ°μμ λ μμΈν λ΄μ©μ λ³Ό μ μμ΅λλ€. λͺ¨λ Bars μ€μΉμκ° μ¬μ©μ μ μ ν νμ΄μ§λ₯Ό μνμ§λ μμΌλ―λ‘(μ ν μ¬νμΌλ‘ μ μ§νκΈ° μν΄), Barsλ
about.jsonμ νμν μμ μλ₯Ό μΆκ°νμ§ μμ΅λλ€. λ°λΌμ νμ±ννλ €λ©΄ μμ ν λ§ λλ λ€λ₯Έ TCμμ μ΄ μμ μλ₯Ό μ§μ μΆκ°ν΄μΌ ν©λλ€. β©οΈ β©οΈ β©οΈTags Intersection νλ¬κ·ΈμΈμ μ°Έμ‘°νμΈμ. β©οΈ








