प्लगइन्स
अधिकांश MkDocs प्लगइन्स कभी भी किसी टेम्पलेट को नहीं छूते हैं, इसलिए वे किसी भी थीम के साथ काम करते हैं। ए मुट्ठी भर लोग ऐसा नहीं करते: वे उम्मीद करते हैं कि थीम उनके द्वारा गणना की गई किसी चीज़ को प्रस्तुत करेगी, या उनके द्वारा बनाए गए नेविगेशन आकार को संभालें। वे ही जाँच के लायक हैं।
यह साइट चेक है. रिपॉजिटरी रूट में mkdocs.yml प्लगइन्स को सक्षम करता है जिसे थीम समर्थन की आवश्यकता है, और CI इसे --strict के साथ बनाता है, इसलिए एक प्रतिगमन किसी पृष्ठ को चुपचाप ख़राब करने के बजाय निर्माण को तोड़ देता है। अभ्यर्थियों को ले जाया गया MkDocs कैटलॉग से, नीचे काम कर रहे हैं लोकप्रियता.
प्लगइन्स जिन्हें थीम से कुछ चाहिए
mkdocs-section-index
mkdocs-section-index guide/index.md को गाइड में मोड़ देता है अनुभाग स्वयं, इसलिए एक नेविगेशन आइटम children और url दोनों के साथ समाप्त होता है। एक विषय जो "बच्चे हैं" को एक सादे अनुभाग लेबल के रूप में प्रस्तुत करता है जो उस सूचकांक पृष्ठ को बनाता है साइडबार से पहुंच योग्य नहीं.
partials/nav-item.html nav_item.url की जाँच करता है और लेबल को एक लिंक के रूप में प्रस्तुत करता है जब कोई एक हो. आप इसे साइडबार में देख सकते हैं: गाइड और नेस्टेड हैं दोनों क्लिक करने योग्य.
!!! नोट "एक चेतावनी जिसे आप अनदेखा कर सकते हैं" प्लगइन टेम्पलेट फ़ाइल पथों का मिलान करके समर्थित थीम को पहचानता है एक अंतर्निहित सूची के विरुद्ध, इसलिए यह लॉग होता है
section-index plugin couldn't detect a supported theme to adapt.
```
इस सहित प्रत्येक तृतीय-पक्ष थीम के लिए। यहां समर्थन मूल है -
किसी भी चीज़ को अपनाने की आवश्यकता नहीं है - लेकिन थीम की ओर से संदेश अपरिहार्य है।
### mkdocs-static-i18n
[mkdocs-static-i18n][i18n] केवल उन विषयों के लिए `theme.locale` को फिर से लिखता है जिन्हें वह शिप करता है के लिए समर्थन, जिसमें तृतीय-पक्ष थीम शामिल नहीं हैं। `theme.locale` पढ़ रहा हूँ इसलिए प्रत्येक अनुवादित पृष्ठ को डिफ़ॉल्ट भाषा के साथ लेबल करता है।
`base.html` प्लगइन द्वारा पेज पर डाले गए `i18n_page_locale` वेरिएबल को प्राथमिकता देता है संदर्भ, और प्लगइन अनुपस्थित होने पर वापस `theme.locale` पर आ जाता है:
```html+jinja
<html lang="{{ i18n_page_locale | default(config.theme.locale, true) }}">
/es/, /zh/, /hi/, /pt/, /ru/ और /fr/ के अंतर्गत अनुवादित पृष्ठ मिलान करने वाली lang विशेषता रखें। बिना *.<locale>.md अनुवाद वाले पृष्ठ अपने अंग्रेजी स्रोत पर वापस जाएँ, जो प्लगइन का डिफ़ॉल्ट व्यवहार है।
जब कम से कम दो कॉन्फ़िगर भाषाओं में build: true हो, तो हेडर भी एक भाषा चयनकर्ता प्रस्तुत करता है। इसके लेबल प्रत्येक भाषा के name से आते हैं, और प्रत्येक प्रविष्टि लक्ष्य स्थान में एक ही पृष्ठ पर रहती है। इसमें पेज शामिल हैं जिसके लिए प्लगइन डिफ़ॉल्ट-भाषा स्रोत पर वापस आ जाता है। चयनकर्ता एकल-भाषा निर्माण के लिए, mkdocs-static-i18n के बिना प्रस्तुत नहीं किया गया है, या स्थिर 404 पृष्ठ पर.
mkdocs-git-revision-date-localized
mkdocs-git-revision-date-localized git लॉग को पढ़ता है और संग्रहीत करता है परिणाम page.meta.git_revision_date_localized है। जब तक कुछ भी इसे प्रदर्शित नहीं करता थीम इसकी मांग करती है, इसलिए उस लाइन के बिना थीम प्लगइन को आकर्षक बनाती है टूटा हुआ. partials/footer.html इसे प्रिंट करता है - नीचे "अंतिम अद्यतन" पंक्ति इस पेज का.
mkdocs-git-authors
mkdocs-git-authors का आकार एक ही है: यह डालता है git_page_authors पृष्ठ संदर्भ पर HTML की एक स्ट्रिंग के रूप में और छोड़ देता है थीम पर प्रदर्शित करें. पाद लेख इसे संशोधन तिथि के बगल में प्रिंट करता है।
mkdocs-rss-plugin
mkdocs-rss-plugin feed_rss_created.xml लिखता है और feed_rss_updated.xml लेकिन कोई मार्कअप नहीं जोड़ता है, इसलिए कोई भी पाठक को उनकी ओर इंगित नहीं करता है। base.html फ़ाइल नाम लेते हुए, <link rel="alternate"> जोड़ी उत्सर्जित करता है उन्हें हार्डकोड करने के बजाय प्लगइन का अपना कॉन्फिगरेशन, क्योंकि वे विकल्प हैं।
इस साइट पर प्लगइन सक्षम नहीं है - ज्ञात प्लगइन विरोध देखें।
mike
माइक कई दस्तावेज़ संस्करणों को एक साथ रखता है और एक जोड़ता है संस्करण ड्रॉपडाउन. यह mike.themes के माध्यम से थीम की ड्रॉपडाउन संपत्तियों को ढूंढता है प्रवेश बिंदु समूह और, किसी विषय के लिए जो इसे वहां नहीं मिल सकता है, कोई चयनकर्ता नहीं बनाता है सब कुछ और कुछ नहीं कहता - साइट तैनात है, संस्करण मौजूद हैं, और यही एकमात्र तरीका है उनके बीच जाना यूआरएल को संपादित करना है।
pyproject.toml उस समूह के अंतर्गत mkdocs_primer.mike को पंजीकृत करता है, इसलिए माइक चुनता है इस पैकेज और प्रतियों से version-select.css और version-select.js तक चयनकर्ता साइट के नाम के आगे हेडर में जाता है और उसका अनुसरण करता है रंग मोड. उपनाम उनके वास्तविक संस्करण को हल करते हैं, इसलिए /latest/ 2.0 दिखाता है खाली नियंत्रण के बजाय चयनित.
वह स्क्रिप्ट वैश्विक base_url को पढ़ती है, जिसे base.html घोषित करता है बिना शर्त. यह तभी घोषित किया जाता था जब search प्लगइन होता था सक्षम किया गया, जिससे खोज के बिना किसी साइट पर चयनकर्ता टूटा हुआ रह जाता।
mkdocs-print-site
mkdocs-print-site का उपयोग करके पूरी साइट को एक पृष्ठ के रूप में प्रस्तुत करता है सक्रिय थीम के टेम्पलेट, जो यहां काम करते हैं। यह जो नहीं कर सकता वह सप्लाई प्रिंट है सीएसएस: यह प्रति विषय एक स्टाइलशीट भेजता है जिसके बारे में वह जानता है और चेतावनी देता है बाकी के लिए Theme 'primer' not yet supported।
वैसे भी यह थीम का काम है। theme.css एक @media print ब्लॉक रखता है जो हेडर, साइडबार और पेजिनेशन को हटा देता है, सामग्री कॉलम को रिलीज़ कर देता है पूरी चौड़ाई, और कोड ब्लॉक और तालिकाओं को पृष्ठों में विभाजित होने से बचाता है। यह एक विज़िटर के रूप में, बॉडी टेक्स्ट को प्राइमर के हल्के अग्रभूमि रंग में पिन भी करता है डार्क मोड में मुद्रण करने पर अन्यथा सफेद कागज पर हल्के भूरे रंग का टेक्स्ट दिखाई देगा। वह ब्लॉक प्लगइन के साथ या उसके बिना, किसी भी पेज पर लागू होता है।
search
अंतर्निहित search प्लगइन को search.html टेम्पलेट शिप करने के लिए थीम की आवश्यकता होती है और दायरे में base_url के साथ search/main.js को लोड करना है। दोनों विषय में हैं; जब भी प्लगइन सक्षम होता है तो हेडर सर्च बॉक्स प्रकट होता है और जब गायब हो जाता है यह नहीं है.
mkdocstrings
mkdocstrings doc-* कक्षाओं के साथ अपना स्वयं का मार्कअप उत्सर्जित करता है और स्टाइल को थीम पर छोड़ देता है। यह यहाँ सुपाठ्य रूप से प्रस्तुत करता है क्योंकि सब कुछ .markdown-body के अंदर लैंड करता है और प्राइमर के टाइप स्केल को चुनता है, लेकिन थीम को कोई समर्पित doc-* नियम नहीं भेजता - हस्ताक्षर और पैरामीटर तालिकाएँ प्राइमर का उपयोग करती हैं चूक संदर्भ वह पृष्ठ है जो इसे उत्पन्न करता है।
प्लगइन्स जो बस काम करते हैं
इन्हें सुगठित HTML से परे विषयवस्तु की कोई आवश्यकता नहीं है। पहला समूह है इस साइट पर सक्षम है, ताकि यह सत्य रहे:
| प्लगइन | यह इस साइट पर क्या करता है |
|---|---|
| mkdocs-awesome-nav | nav: कुंजी के बजाय docs/.nav.yml से नेविगेशन बनाता है। |
| mkdocs-glightbox | Elements पृष्ठ की छवियों को एक लाइटबॉक्स में खोलता है। |
| mkdocs-minify-plugin | थीम की इनलाइन कलर-मोड स्क्रिप्ट सहित प्रत्येक पृष्ठ के HTML, CSS और JS को छोटा करता है। |
| एमकेडॉक्स-रीडायरेक्ट्स | /options/ कॉन्फ़िगरेशन पर रीडायरेक्ट करता है। |
| mkdocs-मैक्रोज़-प्लगइन | मार्कडाउन में जिंजा प्रस्तुत करता है। यह साइट MkDocs Primer Theme है, जिसे primer थीम के साथ बनाया गया है - यह वाक्य प्लगइन से आता है, मार्कडाउन से नहीं। |
दूसरे समूह को स्क्रैच बिल्ड के बजाय थीम के विरुद्ध जांचा गया था इस साइट में शामिल किया गया है, क्योंकि हर कोई ऐसी सामग्री चाहता है जिससे कमाई न हो किसी विषय के दस्तावेज़ में इसका स्थान:
| प्लगइन | जाँच की गई |
|---|---|
| mkdocs-swagger-ui-tag | <swagger-ui> टैग का विस्तार, संपत्तियों की प्रतिलिपि बनाई गई। |
| mkdocs-include-markdown-plugin | स्निपेट रेखांकित. |
| मार्कडाउन-कार्यकारी | कोड निष्पादित, आउटपुट इनलाइन। |
| mkdocs-टेबल-रीडर-प्लगइन | सीएसवी को एक तालिका के रूप में प्रस्तुत किया गया। |
| mkdocs-markdownextradata-plugin | extra: मान प्रक्षेपित। |
| एमकेडॉक्स-ऑटोलिंक्स-प्लगइन | नंगे [file.md](file.md) लिंक का समाधान हो गया। |
| mkdocs-एन्क्रिप्टकंटेंट-प्लगइन | पेज का मुख्य भाग HTML में कोई सादा टेक्स्ट न छोड़कर एन्क्रिप्ट किया गया है, पासवर्ड फॉर्म प्रस्तुत किया गया है, थीम शेल इसके चारों ओर बरकरार है। |
| एमकेडॉक्स-मोनोरेपो-प्लगइन | उप-परियोजना को !include के माध्यम से विलय कर दिया गया। |
material/group | प्लगइन समूह को सक्षम या अक्षम करता है। इसके अंदर अंतर्निहित search के साथ, समूह चालू होने पर थीम का खोज बॉक्स सही ढंग से दिखाई देता है और बंद होने पर गायब हो जाता है। |
नेविगेशन- और फ़ाइल-स्तरीय प्लगइन्स - mkdocs-literate-nav, mkdocs-awesome-pages, mkdocs-exclude — कभी न पहुंचें बिल्कुल टेम्पलेट.
ज्ञात प्लगइन विरोध
हर विफलता विषयवस्तु की नहीं होती. पाँच के बारे में जानने लायक, सभी प्रतिलिपि प्रस्तुत करने योग्य किसी भी विषय के अंतर्गत.
उनमें से तीन कारण हैं कि यह साइट रिपॉजिटरी में एकमात्र बिल्ड क्यों नहीं है: इसमें शामिल प्लगइन्स यहां पहले से सक्षम प्लगइन्स के साथ कॉन्फ़िगरेशन साझा नहीं कर सकते हैं, इसलिए उन्हें examples/ के तहत अपनी खुद की एक साइट मिलती है, जिसे --strict के साथ बनाया गया है वही सीआई कार्य.
Examples पृष्ठ बताता है कि उनमें से हर एक क्या दिखाता है।
- mkdocs-rss-plugin mkdocs-static-i18n के साथ - RSS प्लगइन इसे फिर से लिखता है एक स्ट्रिंग से
datetimeके दौरान स्वयंdate_from_meta.default_timeon_config. i18n प्लगइन प्रति भाषा एक बारon_configचलाता है, इसलिए दूसरा pass एकdatetimeको दोबारा पार्स करता है और--strictबिल्ड को निरस्त करते हुए चेतावनी देता है। प्रदर्शन किया इसके बजाय उदाहरण/आरएसएस/। - mkdocs-gen-files with mkdocs-static-i18n - के दौरान बनाई गई फ़ाइलें
on_filesको i18n प्लगइन द्वारा वर्गीकृत नहीं किया गया है, जो लॉग करता हैUnhandled file caseऔर उन्हें बिल्ड से हटा देता है। इसके बजाय प्रदर्शित किया गया उदाहरण/जेन-फ़ाइलें/, साथ में mkdocs-literate-nav, जो अन्यथा mkdocs-awesome-nav के साथ प्रतिस्पर्धा करेगा नौसेना. minify_htmlके साथ मरमेड - मरमेड अपने स्रोत को पंक्ति दर पंक्ति पार्स करता है, और मिनिफ़ायर अपने<div>के अंदर नई लाइनों को ध्वस्त कर देता है। आरेख इस प्रकार प्रस्तुत करता है पाठ में सिंटेक्स त्रुटि और बिल्ड कुछ नहीं कहता है। इसके बजाय प्रदर्शित किया गया उदाहरण/आरेख/, जो भी mkdocs-charts-plugin को कवर करता है और दोनों रंग मोड को कैसे चुनते हैं।- Mkdocs-monorepo
repo_urlके बिना — एक उप-प्रोजेक्ट पृष्ठ का निर्माण बढ़ जाता हैTypeError: join() missing 1 required positional argument.repo_urlसेटिंग औरedit_uriइससे बचता है। अंतर्निहितmkdocsके अंतर्गत समान रूप से पुनरुत्पादित होता है थीम. material/searchएक गैर-भौतिक थीम के साथ - सामग्री की खोज प्लगइन सक्रिय थीम के जिंजा के माध्यम सेpartials/language.htmlप्रस्तुत करता है पर्यावरण. किसी भी विषय के तहत जो उस टेम्पलेट को शिप नहीं करता है वह उठाता हैTemplateNotFoundऔर बिल्ड ख़त्म हो जाता है। अंतर्निहितsearchप्लगइन का उपयोग करें इसके बजाय; थीम उसी के विरुद्ध बनाई गई है।