본문으로 이동

확장 기능

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

Wikven은 빌드 시점에 진짜 MediaWiki를 실행하므로, MediaWiki 확장 기능은 늘 그렇듯 작동합니다. 다만 그 확장 기능이 하는 일이 사이트가 게시되기 전에 끝날 수 있어야 합니다. 이 문서는 어떤 확장 기능을 쓸 수 있는지, 그리고 아직 없는 것을 어떻게 가져오는지를 다룹니다.

확장 기능 켜기

.wikven.yaml 파일에 이름을 적으십시오. Wikven 안에 함께 들어 있는 확장 기능은 그것으로 끝입니다:

extensions:
  - ParserFunctions
  - SyntaxHighlight_GeSHi

Wikven이 디스크에서 찾지 못한 이름은 그 이름을 대며 빌드를 실패시킵니다. 그러지 않으면 오타가, 이미 발행된 사이트에서 아무 일도 하지 않는 확장 기능의 모습으로 드러납니다. 함께 들어 있지 않은 것은 WikvenRepositories 맵에 출처를 밝혀야 합니다.

이미 들어 있는 것

Wikven 이미지에는 MediaWiki에 번들된 것 전부가 — ParserFunctions, Cite, Gadgets, SyntaxHighlight_GeSHi, TemplateStyles 등 — 들어 있고, 여기에 정적 사이트에 필요한 것으로 Wikven이 셋을 더합니다:

SifterSearch
클라이언트 사이드 검색. 모든 사이트에서 기본으로 켜지므로 검색이 아무 설정 없이도 작동합니다.
Translate
소스 트리에서 다루는 다국어 문서. 번역하기를 참고하십시오.
UniversalLanguageSelector
Translate 자신의 의존성이며, 번들 웹폰트가 나오는 곳입니다.

뒤의 둘은 여러분이 목록에 적어야 불러와지고, SifterSearch는 알아서 불러와집니다. 특정 이미지에 정확히 무엇이 들어 있는지는 그 이미지에게 물어보십시오:

docker run --rm --entrypoint ls ghcr.io/chaotic-ground/wikven extensions
docker run --rm --entrypoint ls ghcr.io/chaotic-ground/wikven skins

그 밖의 것

이미지에 없는 확장 기능은 여러분이 밝힌 출처에서 빌드 시점에 가져옵니다. 타르볼, Git 저장소, Composer 패키지 중 하나입니다. 이름은 여전히 extensions에 들어가고, WikvenRepositories는 어디서 가져올지만 말합니다:

extensions:
  - TabberNeue
config:
  WikvenRepositories:
    TabberNeue:
      repository: https://github.com/StarCitizenTools/mediawiki-extensions-TabberNeue.git
      reference: v4.0.0

이 문서 사이트가 TabberNeue를 정확히 그렇게 가져옵니다. 시작하기의 탭이 그것입니다. MinervaNeue가 기대는 MobileFrontend도 마찬가지입니다. 출처를 밝히는 세 가지 방법과 각각에 필요한 호스트 도구, 그리고 가져오는 것을 왜 고정해야 하는지는 WikvenRepositories 맵을 참고하십시오.

확장 기능은 출처보다 더한 것을 원하기도 합니다. 사이트를 빌드하는 동안 위키 곁에서 돌아가는 자기 프로그램 같은 것이지요. 이름 하나로 끝나지 않는 것들은 자기 문서를 가지고 있습니다. 차트, 상형문자, 수식입니다.

작동하지 않는 것

확장 기능은 빌드 중에 자기 일을 끝내야 합니다. 게시된 사이트는 PHP를 실행하지 않는 호스트 위의 파일들이기 때문입니다. 살아 있는 위키에서 아무리 잘 동작하더라도, 다음 부류는 그래서 제외됩니다:

  • 편집하는 것. 시각편집기, WikiEditor, CodeEditor에는 저장할 곳이 없습니다.
  • 요청에 응답하는 것. 기능이 특수 문서나 API 모듈이거나, 독자가 누를 때 실행되는 질의인 확장 기능에는 돌아갈 서버가 없습니다. 빌드 시점에 문서 안으로 렌더링해 넣은 것만 남습니다.
  • 독자에 매인 것. 내보내기에는 계정도, 환경 설정도, 세션도 없으므로 알림·주시문서 목록·사용자별 설정은 기댈 것이 없습니다.

위키텍스트가 렌더링되는 방식만 바꾸는 확장 기능 — 파서 태그, 파서 함수, 스타일, 템플릿 — 이 가장 잘 맞습니다. 그 일은 문서가 파일로 쓰이는 시점에 이미 끝나 있기 때문입니다.

Scribunto가 그중 하나이며, 대부분의 위키가 손을 뻗는 것입니다. Lua 모듈에 별도 문서가 있는데, Lua 모듈은 설정이면서 콘텐츠이기도 하고 단독 실행 바이너리가 그것을 렌더링할 수 없기 때문입니다.

여러분의 확장 기능을 빌드에서 살아남도록 일부러 만들 수도 있습니다. 확장 기능 만들기가 그에 대한 계약입니다.