본문으로 이동

스킨

Wikven
이 문서는 Skins 문서를 번역한 것이며 번역은 100% 완료했습니다.

번들된 스킨은 .wikven.yaml에서 고를 수 있습니다.

지원하는 스킨

Wikven은 세 가지 스킨을 지원합니다. 이 문서 사이트는 세 스킨 모두로 빌드되므로, 모든 변경이 각 스킨에서 검증됩니다.

  • Vector (기본값. Vector를 선택하면 해당 스킨의 vector-2022 변형인 Vector 2022가 적용됩니다)
  • MinervaNeue (모바일 지향)
  • Citizen (서드파티, 빌드 시점에 가져옴)

그 밖의 스킨은 거부되는 것이 아니라 검증되지 않을 뿐입니다. MediaWiki에 번들된 스킨은 MonoBook을 비롯해 모두 이름만으로 사용할 수 있고, 서드파티 스킨은 Citizen처럼 가져올 수 있습니다.

Minerva는 나머지 둘보다 설명할 것이 많습니다. 빌드가 스킨의 일부를 설정하는 대신 우회하기 때문입니다. 그 내용은 여기가 아니라 부록에 모아 두었습니다.

스킨 설정

skins는 어떤 스킨을 빌드할지 정합니다. Wikven은 무엇을 나열하든 Vector를 빌드하므로, 다른 스킨을 적는 것은 대체가 아니라 추가입니다:

skins:
  - MinervaNeue

Vector 없이 빌드하려면 WikvenBuildVector를 false로 설정하십시오. 이 설정은 임시방편입니다. 2.0에서는 skins 목록이 기본값에 덧붙는 대신 기본값을 대체하므로, Vector를 계속 쓰려는 사이트는 Vector도 함께 적어야 합니다. skins에 Vector를 지금 적어 두어도 어차피 빌드되므로 달라지는 것은 없고, 업그레이드한 뒤에도 사이트가 그대로 유지됩니다.

skins:
  - Vector
  - MinervaNeue

그중 어느 것으로 사이트를 읽을지는 별개의 질문이고, MediaWiki에 이미 그 설정이 있습니다. config 아래 DefaultSkin에 스킨의 표준 이름을 적으십시오. 표준 이름은 MediaWiki가 그 스킨을 부르는 이름으로, 여러분이 나열할 때 쓴 이름과 늘 같지는 않습니다. MinervaNeue는 minerva, Vector는 vector-2022입니다.

skins:
  - MinervaNeue
config:
  DefaultSkin: minerva

설정하지 않으면 빌드된 첫 스킨으로 읽습니다. 스킨이 하나뿐인 사이트에는 그것이 유일하게 필요한 답입니다. 사이트가 빌드하지 않는 스킨을 DefaultSkin에 적으면 그 사실을 알리고 무시합니다. 아무것도 렌더링하지 않는 기본 스킨은 출력 루트에 문서를 하나도 남기지 않기 때문입니다.

스킨을 둘 이상으로 빌드하기

스킨을 둘 이상 나열하면 사이트가 그 모두로 빌드되고, 독자가 고릅니다. 이 문서 사이트가 세 스킨 모두로 그렇게 합니다. 설정은 한 줄이지만 그 결과는 한 줄이 아니므로, 알아 둘 만합니다.

  • 사이트가 스킨마다 한 번씩 렌더링됩니다. 스킨이 셋이면 전체 렌더링을 세 번 하므로 파일 수는 대략 세 배가 됩니다. 다만 렌더링은 빌드가 쓸 수 있는 프로세서 하나당 하나씩 나란히 돌아가므로, 늘어나는 시간은 프로세서가 모자라는 만큼뿐입니다. 셋이면 세 스킨 빌드가 한 스킨 빌드와 비슷하게 걸리고, 하나뿐이거나 WIKVEN_BUILD_JOBS를 1로 설정하면 대략 세 배가 걸립니다.
  • 스킨마다 모든 문서의 사본을 갖습니다. 사이트를 읽는 스킨은 단일 스킨 사이트처럼 출력 루트에 렌더링되고, 나머지는 각자의 이름을 딴 디렉터리에 렌더링됩니다. dist/Getting_Started.html 옆에 dist/citizen/Getting_Started.html이 놓이는 식입니다. 사본은 자체 검색 색인까지 갖춘 완전한 것이어서, 스킨을 고른 독자는 문서를 옮겨 다닐 때도 검색할 때도 그 스킨 안에 머무릅니다.
  • 사본은 검색 엔진에 노출되지 않습니다. 색인되는 것은 주 스킨의 문서뿐이고 나머지는 noindex로 렌더링되므로, 검색 엔진에 같은 문서가 세 번 제시되지 않습니다.
  • 모든 문서에 스킨 전환기가 생깁니다. 어디에 나타날지는 스킨에 달렸습니다. Vector는 모양새 메뉴에, Citizen은 환경 설정 패널에 두고, 그 밖의 스킨은 도구 상자에 둡니다. 자바스크립트가 없는 독자에게도 평범한 링크 목록이 그대로 남습니다. MinervaNeue만은 예외입니다. 도구 상자에 해당하는 것이 문서 동작 메뉴인데, 어떤 스킨으로 읽을지는 문서에 가하는 동작이 아니므로, 문서에는 전환기가 없고 목록은 설정 문서에 놓입니다. 주 메뉴에는 사이트 자체의 둘러보기 링크와 그 문서로 가는 링크가 들어갑니다.

스킨이 하나뿐이면 전환기도 사본도 없습니다. 출력은 예전과 똑같습니다.

설정 문서

빌드는 독자를 위한 문서를 하나 직접 씁니다. WikvenSettingsPage 설정이 이름을 정하는 Settings 문서입니다. 살아 있는 위키라면 제공했을 환경 설정을 대신하며(정적 사이트에는 그럴 서버가 없습니다), 여러분이 아니라 독자의 몫인 선택을 담습니다.

  • 스킨을 둘 이상으로 빌드한 사이트에서 어떤 스킨으로 읽을지, 그리고
  • 색 테마(스킨에 있다면 글자 크기도). 이것은 MobileFrontend 자체의 표시 설정에서 오므로, MobileFrontend를 켠 사이트에서만 나타납니다.

두 선택 모두 독자의 브라우저에, 그 사이트에 한해서만 보관되며, 계정도 없고 어떤 서버에도 저장되지 않습니다. Settings라는 이름의 소스 문서를 쓰면 그쪽이 대신 쓰이고, WikvenSettingsPage를 빈 값으로 두면 문서가 쓰이지 않고 그것을 가리키는 링크도 없어집니다.

서드파티 스킨

번들되지 않은 스킨도 skins에 나열할 수 있으며, 그 소스는 WikvenRepositories 맵에 선언합니다. 이 스킨은 빌드 시점에 가져와지며 다른 스킨과 마찬가지로 기본값이 될 수 있습니다. 이 문서 사이트는 이런 방식으로 Citizen을 가져와 나머지 두 스킨과 함께 제공합니다.

skins:
  - Example
config:
  WikvenRepositories:
    Example:
      repository: https://github.com/example/Example.git
      reference: REL1_46

스킨별 설정

config 맵을 사용합니다.

config:
  VectorResponsive: false

설정은 다른 설정과 똑같은 방식으로 스킨에 전달되지만, 빌드에서 스킨이 여전히 그 설정을 읽을 때만 효과가 있습니다. Minerva는 대부분이 그렇지 않은 유일한 경우이니, 설정에 손대기 전에 부록의 Minerva 설정을 참고하십시오.

부록: Minerva

Minerva와 MobileFrontend

MinervaNeue는 MediaWiki에 번들되어 있지만, 함께 자라 온 MobileFrontend는 그렇지 않습니다. 이것이 없으면 스킨은 자체 initMobile.js를 건너뛰고 그것이 마련해 주는 것들을 잃는데, 목차 토글도 그중 하나입니다. Minerva를 활성화한다면 이 둘을 함께 가져오십시오. 이 사이트가 그렇게 하고 있으므로, 권장 구성은 모든 빌드가 렌더링하는 바로 그 구성입니다.

skins:
  - MinervaNeue
extensions:
  - MobileFrontend
config:
  WikvenRepositories:
    MobileFrontend:
      repository: https://github.com/wikimedia/mediawiki-extensions-MobileFrontend.git
      reference: REL1_46

Wikven은 MobileFrontend 없이도 Minerva를 렌더링합니다. Minerva가 제공하는 항목 중 정적 호스트가 서비스할 수 없는 것들은 어느 쪽이든 빠집니다.

Minerva를 지원하는 방식

Minerva도 나머지 둘과 똑같이 빌드되고 검증되지만, 그 지원의 상당 부분은 스킨을 설정하는 것이 아니라 Wikven이 스킨을 우회하는 일입니다. Minerva는 주 메뉴를 MediaWiki:Sidebar가 아니라 자체 정의에서 만들고, 여러 컨트롤이 MobileFrontend나 살아 있는 위키를 전제하므로, 빌드가 그 둘을 대신합니다.

  • 사이트 자체의 둘러보기는 렌더링되는 모든 문서의 주 메뉴에 직접 기록합니다. 스킨이 읽어 갈 사이드바 구획이 없기 때문입니다.
  • 임의 문서, 최근 바뀜, 특수 문서 목록, 환경 설정은 제거가 아니라 스타일시트로 숨깁니다. 스킨이 이들을 무조건 넣으므로, 내보낸 HTML에는 앵커가 그대로 남습니다.
  • 커뮤니티 포털은 스킨이 이미 확인하는 메시지를 통해 제대로 빠집니다.
  • 색 테마와 읽을 스킨은 빌드가 기록하는 Settings 문서에 있습니다. 스킨 자체의 것은 Special:MobileOptions이기 때문입니다.
  • 언어 버튼은 숨깁니다. 그 오버레이가 MobileFrontend의 것이기 때문입니다.
  • MobileFrontend가 없으면 목차는 접힌 채로 오고 그것을 펼 토글은 그려지지 않으므로, 스타일시트가 다시 펼칩니다.

독자가 이 가운데 무엇도 마주치지는 않습니다. 다만 Minerva의 겉을 손보기 전에 알아 둘 만합니다. 그 변경은 대개 설정이 아니라 maintenance/fillMinervaMenu.php나 resources/skins.minerva.styles.less에 놓이기 때문입니다.

Minerva 설정

MobileFrontend의 설치 여부와 관계없이, $wgMinerva* 설정은 대부분 빌드에서 아무 일도 하지 않습니다. 스킨이 선언하는 열여섯 개 중 열 개는 MobileFrontend 기능으로 등록되어 SkinOptions::setMinervaSkinOptions()에서 다시 읽히는데, 이 메서드는 RequestContextCreateSkinMobile 훅에서 실행됩니다. 그리고 MobileFrontend는 모바일 뷰를 제공하기로 결정한 뒤에야 그 훅을 발동시키며, 그러려면 모바일 도메인이나 모바일 기기, 또는 useformat=mobile이 필요합니다. 빌드는 그 어느 것도 아니므로 스킨 옵션은 자체에 컴파일된 기본값을 그대로 유지하고, 다음 설정들은 작동하지 않습니다: MinervaShowCategories, MinervaPageIssuesNewTreatment, MinervaTalkAtTop, MinervaDonateLink, MinervaDonateBanner, MinervaHistoryInPageActions, MinervaOverflowInPageActions, MinervaAdvancedMainMenu, MinervaPersonalMenu, MinervaNightMode.

나머지 여섯 개는 스킨이 설정에서 직접 읽으므로 문서화된 대로 동작합니다: MinervaEnableSiteNotice, MinervaAlwaysShowLanguageButton, MinervaDownloadNamespaces, MinervaNightModeOptions, MinervaTypeahead, MinervaABSamplingRate. 이 중 손댈 만한 것은 MinervaTypeahead입니다. 스킨의 타입어헤드는 이 설정이 가리키는 검색 API가 아니라 정적 색인 위에서 돌아가므로, options는 읽히고 API URL은 읽히지 않으며, 빈 섬네일 열도 여기서 끕니다. 검색을 참고하십시오. MinervaABSamplingRate는 표본을 뽑을 A/B 버킷이 없어 작용할 대상이 없습니다. 언어 버튼은 그 오버레이가 MobileFrontend의 것이라 어느 쪽이든 숨겨집니다.

작동하지 않는 설정들이 구성했을 법한 것은, 가능한 범위에서 Wikven이 자체적인 방식으로 제공합니다. 색 테마는 빌드가 Special:MobileOptions 대신 기록하는 Settings 문서에 있고, 사이트 자체의 둘러보기는 렌더링되는 모든 문서의 주 메뉴에 기록됩니다.

검색 →