| PELICAN-THEMING(1) | PELICAN | PELICAN-THEMING(1) |
نام (NAME)
pelican-theming - راهنمای ساخت پوسته برای Pelican
یک مخزن مدیریتشده توسط جامعه کاربری از پوستههای Pelican در https://github.com/getpelican/pelican-themes برای اشتراکگذاری و استفاده همگان وجود دارد.
لطفاً توجه داشته باشید اگرچه ما تمام تلاش خود را برای بررسی و ادغام مشارکتهای مربوط به پوسته انجام میدهیم، اما این موارد توسط جامعه Pelican ارسال میشوند و در نتیجه ممکن است سطوح متفاوتی از پشتیبانی و سازگاری داشته باشند.
ایجاد پوسته (CREATING THEMES)
ابزار Pelican برای تولید خروجی HTML خود، به دلیل انعطافپذیری و نحو سرراست، از موتور قالبساز Jinja https://palletsprojects.com/p/jinja استفاده میکند. اگر میخواهید پوسته اختصاصی خود را بسازید، میتوانید با خیال راحت از پوسته "simple" در https://github.com/getpelican/pelican/tree/main/pelican/themes/simple/templates الهام بگیرید.
برای تولید سایت خود با استفاده از پوستهای که ایجاد کردهاید (یا آن را به صورت دستی بارگیری کرده و سپس تغییر دادهاید)، میتوانید آن پوسته را از طریق گزینه -t مشخص کنید:
pelican content -s pelicanconf.py -t /projects/your-site/themes/your-theme
اگر ترجیح میدهید پوسته را در هر بار فراخوانی مشخص نکنید، میتوانید THEME را در تنظیمات خود تعریف کنید تا به مسیر پوسته مورد نظرتان اشاره کند.
ساختار (Structure)
برای ساخت پوسته خود، باید ساختار زیر را رعایت کنید:
├── static
│ ├── css
│ └── images
└── templates
├── archives.html // to display archives
├── article.html // processed for each article
├── author.html // processed for each author
├── authors.html // must list all the authors
├── categories.html // must list all the categories
├── category.html // processed for each category
├── index.html // the index (list all the articles)
├── page.html // processed for each page
├── period_archives.html // to display time-period archives
├── tag.html // processed for each tag
└── tags.html // must list all the tags. Can be a tag cloud.
- پوشه static شامل تمام داراییهای ایستا است که در پوشه خروجی theme کپی خواهند شد. ساختار فایلسیستم بالا شامل پوشههای CSS و تصاویر است، اما این موارد صرفاً مثال هستند. هر آنچه نیاز دارید را اینجا قرار دهید.
- پوشه templates
شامل تمام
قالبهایی
است که برای
تولید
محتوا
استفاده
خواهند شد.
فایلهای
قالب
فهرستشده
در بالا
الزامی
هستند؛ در
صورت تمایل
میتوانید
قالبهای
اختصاصی
خود را نیز
اضافه کنید
تا
سازماندهی
کارها
هنگام ساخت
پوسته
آسانتر
شود.
ایده اصلی، استفاده از ساختار سادهای است که بتوانید آن را درون صفحات HTML خود بگنجانید. این سند توصیف میکند که چه قالبهایی باید در یک پوسته وجود داشته باشند، و هنگام تولید چه متغیرهایی به هر قالب ارسال خواهند شد.
همه قالبها متغیرهای تعریفشده در فایل تنظیمات شما را تا زمانی که نام آنها تماماً با حروف بزرگ (all-caps) باشد، دریافت خواهند کرد. میتوانید مستقیماً به آنها دسترسی داشته باشید.
متغیرهای رایج (Common Variables)
تمام این تنظیمات برای همه قالبها در دسترس خواهند بود.
| متغیر | توضیحات |
| output_file | نام فایلی که هماکنون در حال تولید است. برای نمونه، هنگامی که Pelican در حال پردازش صفحه اصلی است، output_file برابر با "index.html" خواهد بود. |
| articles | فهرست مقالهها، مرتبشده بر اساس تاریخ به صورت نزولی. تمام عناصر شیءهای Article هستند، بنابراین میتوانید به ویژگیهای آنها (مانند title، summary، author و غیره) دسترسی داشته باشید. گاهی این متغیر سایهاندازی (shadow) میشود (برای نمونه، در صفحه برچسبها). در این صورت اطلاعات آن را در متغیر all_articles خواهید یافت. |
| dates | همان فهرست مقالهها، اما مرتبشده بر اساس تاریخ، به صورت صعودی. |
| hidden_articles | فهرست مقالههای پنهان |
| drafts | فهرست مقالههای پیشنویس |
| period_archives | دیکشنری حاوی عناصر مربوط به بایگانی دورههای زمانی (در صورت فعال بودن). برای جزئیات به بخش Listing and Linking to Period Archives مراجعه کنید. |
| authors | فهرستی از تاپلهای (author, articles)، شامل همه نویسندگان و مقالههای متناظر (مقادیر) |
| categories | فهرستی از تاپلهای (category, articles)، شامل همه دستهبندیها و مقالههای متناظر (مقادیر) |
| tags | فهرستی از تاپلهای (tag, articles)، شامل همه برچسبها و مقالههای متناظر (مقادیر) |
| pages | فهرست صفحات |
| hidden_pages | فهرست صفحات پنهان |
| draft_pages | فهرست صفحات پیشنویس |
| مرتبسازی | |
| پوششدهندههای URL (در حال حاضر دستهها، برچسبها، و نویسندگان) دارای متدهای مقایسهای هستند که امکان مرتبسازی آسان آنها بر اساس نام را فراهم میکنند: | |
| 0.0 | |
| 3.5 | |
| {% for tag, articles in tags|sort %} | |
| 168u | |
| 168u | |
| اگر میخواهید بر اساس معیارهای متفاوتی مرتبسازی کنید، دستور مرتبسازی Jinja در https://jinja.palletsprojects.com/en/latest/templates/#sort گزینههای متعددی دارد. | |
| قالببندی تاریخ | |
| ابزار Pelican تاریخ را مطابق با تنظیمات و محلیسازی (locale) شما (DATE_FORMATS/DEFAULT_DATE_FORMAT) قالببندی کرده و مشخصهٔ locale_date را فراهم میسازد. از سوی دیگر، مشخصهٔ date یک شیء datetime در https://docs.python.org/3/library/datetime.html#datetime-objects خواهد بود. اگر به قالببندی سفارشی برای تاریخی متفاوت از تنظیمات خود نیاز دارید، از فیلتر Jinja با نام strftime که همراه با Pelican ارائه میشود استفاده کنید. نحوهٔ استفاده مشابه قالب strftime در پایتون https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior است، اما این فیلتر به درستی عمل کرده و تاریخ شما را بر اساس locale مشخصشده در تنظیمات شما قالببندی میکند: | |
| 0.0 | |
| 3.5 | |
| {{ article.date|strftime('%d %B %Y') }} | |
| 168u | |
| 168u | |
| بررسی افزونههای بارگذاریشده | |
| ابزار Pelican آزمون (test) جینجا با نام plugin_enabled را برای بررسی فعال بودن یک افزونهٔ خاص ارائه میدهد. این آزمون نام افزونه را به عنوان یک رشته دریافت کرده و یک مقدار بولی (Boolean) برمیگرداند. افزونههای فضای نام (Namespace plugins) را میتوان با نام کامل (pelican.plugins.plugin_name) یا نام کوتاه (plugin_name) مشخص کرد. مثال زیر از افزونهٔ webassets برای فشردهسازی (minify) کدهای CSS در صورت فعال بودن افزونه استفاده میکند و در غیر این صورت به CSS معمولی بازمیگردد: | |
| 0.0 | |
| 3.5 | |
| {% if "webassets" is plugin_enabled %} | |
| {% assets filters="cssmin", output="css/style.min.css", "css/style.scss" %} | |
| <link rel="stylesheet" href="{{SITEURL}}/{{ASSET_URL}}"> | |
| {% endassets %} | |
| {% else %} | |
| <link rel="stylesheet" href="{{SITEURL}}/css/style.css}"> | |
| {% endif %} | |
| 168u | |
| 168u | |
| index.html | |
| این صفحهٔ اصلی یا شاخص وبلاگ شما است که در index.html تولید میشود. | |
| اگر صفحهبندی فعال باشد، صفحات بعدی در index{number}.html قرار خواهند گرفت. | |
| box center; | |
| l|l. | |
| متغیر | توضیحات |
| articles_paginator | یک شیء صفحهبندی برای فهرست مقالات |
| articles_page | صفحهٔ جاری مقالات |
| articles_previous_page | صفحهٔ قبلی مقالات (None در صورتی که صفحه وجود نداشته باشد) |
| articles_next_page | صفحهٔ بعدی مقالات (None در صورتی که صفحه وجود نداشته باشد) |
| dates_paginator | یک شیء صفحهبندی برای فهرست مقالات، مرتبشده بر اساس تاریخ به صورت صعودی. |
| dates_page | صفحهٔ جاری مقالات، مرتبشده بر اساس تاریخ به صورت صعودی. |
| dates_previous_page | صفحهٔ قبلی مقالات، مرتبشده بر اساس تاریخ به صورت صعودی (None در صورتی که صفحه وجود نداشته باشد) |
| dates_next_page | صفحهٔ بعدی مقالات، مرتبشده بر اساس تاریخ به صورت صعودی (None در صورتی که صفحه وجود نداشته باشد) |
| page_name | 'index' -- کاربردی برای پیوندهای صفحهبندی |
| این قالب برای هر یک از نویسندگان موجود پردازش خواهد شد و خروجی آن بر اساس تنظیمات AUTHOR_SAVE_AS تولید میشود (پیشفرض: author/{slug}.html). در صورت فعال بودن صفحهبندی، صفحات بعدی بهطور پیشفرض در author/{slug}{number}.html قرار میگیرند. | |
| box center; | |
| l|l. | |
| متغیر | توضیحات |
| author | نام نویسندهای که در حال پردازش است |
| articles | مقالههای این نویسنده |
| dates | مقالههای این نویسنده، اما مرتبشده بر اساس تاریخ، صعودی |
| articles_paginator | یک شیء صفحهبندی (paginator) برای فهرست مقالهها |
| articles_page | صفحه کنونی مقالهها |
| articles_previous_page | صفحه قبلی مقالهها (در صورت عدم وجود صفحه، None) |
| articles_next_page | صفحه بعدی مقالهها (در صورت عدم وجود صفحه، None) |
| dates_paginator | یک شیء صفحهبندی برای فهرست مقالهها، مرتبشده بر اساس تاریخ، صعودی. |
| dates_page | صفحه کنونی مقالهها، مرتبشده بر اساس تاریخ، صعودی. |
| dates_previous_page | صفحه قبلی مقالهها، مرتبشده بر اساس تاریخ، صعودی (در صورت عدم وجود صفحه، None) |
| dates_next_page | صفحه بعدی مقالهها، مرتبشده بر اساس تاریخ، صعودی (در صورت عدم وجود صفحه، None) |
| page_name | مقدار AUTHOR_URL که در آن همهچیز پس از {slug} حذف شده است -- مفید برای پیوندهای صفحهبندی |
| این قالب برای هر یک از دستههای موجود پردازش خواهد شد و خروجی | |
| بر اساس تنظیم CATEGORY_SAVE_AS تولید میشود (پیشفرض: | |
| category/{slug}.html). در صورت فعال بودن صفحهبندی، صفحات بعدی بهطور | |
| پیشفرض در category/{slug}{number}.html قرار خواهند گرفت. | |
| box center; | |
| l|l. | |
| متغیر | توضیحات |
| category | نام دستهای که در حال پردازش است |
| articles | مقالههای این دسته |
| dates | مقالههای این دسته، اما مرتبشده بر اساس تاریخ، صعودی |
| articles_paginator | یک شیء صفحهبندی (paginator) برای فهرست مقالهها |
| articles_page | صفحه کنونی مقالهها |
| articles_previous_page | صفحه قبلی مقالهها (اگر صفحه وجود نداشته باشد، None) |
| articles_next_page | صفحه بعدی مقالهها (اگر صفحه وجود نداشته باشد، None) |
| dates_paginator | یک شیء صفحهبندی (paginator) برای فهرست مقالهها، مرتبشده بر اساس تاریخ، صعودی |
| dates_page | صفحه کنونی مقالهها، مرتبشده بر اساس تاریخ، صعودی |
| dates_previous_page | صفحه قبلی مقالهها، مرتبشده بر اساس تاریخ، صعودی (اگر صفحه وجود نداشته باشد، None) |
| dates_next_page | صفحه بعدی مقالهها، مرتبشده بر اساس تاریخ، صعودی (اگر صفحه وجود نداشته باشد، None) |
| page_name | مقدار CATEGORY_URL که در آن همهچیز پس از {slug} حذف شده است -- مفید برای پیوندهای صفحهبندی |
| این قالب برای هر مقاله پردازش خواهد شد و خروجی بر اساس تنظیم ARTICLE_SAVE_AS (پیشفرض: {slug}.html) تولید میشود. متغیرهای زیر هنگام رندر کردن در دسترس هستند. | |
| box center; | |
| l|l. | |
| متغیر | توضیحات |
| article | شیء مقالهای که باید نمایش داده شود |
| category | نام دستهبندی برای مقالهٔ جاری |
هر فرادادهای که در سرآیند فایل منبع مقاله قرار دهید، به عنوان فیلدهایی روی شیء article در دسترس خواهد بود. نام فیلد همان نام فیلد فراداده خواهد بود، با این تفاوت که تمام نویسهها به حروف کوچک تبدیل میشوند.
برای نمونه، میتوانید فیلدی به نام FacebookImage به فرادادههای مقالهٔ خود اضافه کنید، همانطور که در زیر نشان داده شده است:
Title: I love Python more than music Date: 2013-11-06 10:06 Tags: personal, python Category: Tech Slug: python-je-l-aime-a-mourir Author: Francis Cabrel FacebookImage: http://franciscabrel.com/images/pythonlove.png
این فرادادهٔ جدید به عنوان article.facebookimage در قالب article.html شما در دسترس خواهد بود. این کار به شما امکان میدهد، به عنوان مثال، تصویری را برای برچسبهای Open Graph فیسبوک تعیین کنید که برای هر مقاله تغییر میکند:
<meta property="og:image" content="{{ article.facebookimage }}"/>
page.html
این قالب برای هر برگه پردازش خواهد شد و خروجی مطابق با تنظیم PAGE_SAVE_AS (پیشفرض: pages/{slug}.html) تولید میشود. متغیرهای زیر هنگام رندر کردن در دسترس هستند.
| متغیر | توضیحات |
| page | شیء برگهای که باید نمایش داده شود. میتوانید به title، slug و content آن دسترسی داشته باشید. |
| این قالب برای هر برچسب پردازش میشود و خروجی بر اساس تنظیم TAG_SAVE_AS (پیشفرض: tag/{slug}.html) تولید میگردد. در صورت فعال بودن صفحهبندی، صفحات بعدی بهطور پیشفرض در tag/{slug}{number}.html قرار خواهند گرفت. | |
| box center; | |
| l|l. | |
| متغیر | توضیحات |
| tag | نام برچسبِ در حال پردازش |
| articles | مقالههای مرتبط با این برچسب |
| dates | مقالههای مرتبط با این برچسب، اما مرتبشده بر اساس تاریخ، صعودی |
| articles_paginator | یک شیء صفحهبندیکننده برای فهرست مقالهها |
| articles_page | صفحه جاری مقالهها |
| articles_previous_page | صفحه پیشین مقالهها (در صورت عدم وجود صفحه، مقدار None) |
| articles_next_page | صفحه بعدی مقالهها (در صورت عدم وجود صفحه، مقدار None) |
| dates_paginator | یک شیء صفحهبندیکننده برای فهرست مقالهها، مرتبشده بر اساس تاریخ، صعودی |
| dates_page | صفحه جاری مقالهها، مرتبشده بر اساس تاریخ، صعودی |
| dates_previous_page | صفحه پیشین مقالهها، مرتبشده بر اساس تاریخ، صعودی (در صورت عدم وجود صفحه، مقدار None) |
| dates_next_page | صفحه بعدی مقالهها، مرتبشده بر اساس تاریخ، صعودی (در صورت عدم وجود صفحه، مقدار None) |
| page_name | مقدار TAG_URL که در آن همهچیز پس از {slug} حذف شده است -- کاربردی برای پیوندهای صفحهبندی |
| این قالب در صورتی که مسیری برای YEAR_ARCHIVE_SAVE_AS تعریف شده باشد برای هر سال از پستهای شما، اگر MONTH_ARCHIVE_SAVE_AS تعریف شده باشد برای هر ماه، و اگر DAY_ARCHIVE_SAVE_AS تعریف شده باشد برای هر روز پردازش خواهد شد. | |
| box center; | |
| l|l. | |
| متغیر | توضیحات |
| period | یک چندتایی (tuple) به صورت (year, month, day) که دوره زمانی جاری را مشخص میکند. year و day عدد هستند در حالی که month یک رشته است. این چندتایی اگر دوره زمانی یک سال مشخص باشد تنها شامل year است. اگر دوره زمانی شامل سال و ماه باشد، هر دو year و month را در بر میگیرد و به همین ترتیب. |
| period_num | یک چندتایی به صورت (year, month, day)، همانند period، با این تفاوت که تمام مقادیر عددی هستند. |
میتوانید نمونهای از نحوه استفاده از period را در قالب period_archives.html پوسته "simple" مشاهده کنید: https://github.com/getpelican/pelican/blob/main/pelican/themes/simple/templates/period_archives.html.
فهرستبندی و پیوند دادن به آرشیوهای دورهای (Listing and Linking to Period Archives)
متغیر period_archives میتواند برای تولید فهرستی از پیوندها به مجموعه آرشیوهای دورهای که Pelican میسازد استفاده شود. این متغیر به عنوان یک متغیر عمومی در تمام قالبها در دسترس است، بنابراین میتوانید چنین فهرستی را در یک قالب مستقیم (direct template) سفارشی یا در یک نوار کناری که در صفحات مختلف سایت نمایش داده میشود، پیادهسازی کنید.
متغیر period_archives یک دیکشنری (dict) است که بسته به فعال بودن تنظیمات *_ARCHIVE_SAVE_AS، میتواند شامل کلیدهای year، month و/یا day باشد. مقدار متناظر، فهرستی از دیکشنریها است که هر کدام به نوبه خود یک دوره زمانی را (مرتبشده بر اساس تنظیم NEWEST_FIRST_ARCHIVES) با کلیدها و مقادیر زیر مشخص میکنند:
| کلید | مقدار |
| period | همان چندتایی شرح داده شده در period_archives.html، مانند (2023, 'June', 18). |
| period_num | همان چندتایی شرح داده شده در period_archives.html، مانند (2023, 6, 18). |
| url | نشانی URL به صفحه آرشیو دورهای، مانند posts/2023/06/18/. این مقدار توسط تنظیمات متناظر *_ARCHIVE_URL کنترل میشود. |
| save_as | مسیر محل ذخیره فایل صفحه آرشیو دورهای، مانند posts/2023/06/18/index.html. این مقدار به صورت داخلی توسط Pelican استفاده میشود و معمولاً به پوستهها مربوط نیست. |
| articles | فهرستی از شیءهای Article که در این دوره زمانی قرار دارند. |
| dates | همان فهرست articles، اما مرتبشده بر اساس تنظیم NEWEST_FIRST_ARCHIVES. |
در اینجا نمونهای از نحوه استفاده از period_archives در یک قالب آورده شده است:
<ul>
{% for archive in period_archives.month %}
<li>
<a href="{{ SITEURL }}/{{ archive.url }}">
{{ archive.period | reverse | join(' ') }} ({{ archive.articles|count }})
</a>
</li>
{% endfor %}
</ul>
میتوانید بسته به سطح جزئیات دوره زمانی مورد نظر، period_archives.month را در دستور for به period_archives.year یا period_archives.day تغییر دهید..SS اشیاء (Objects)
ویژگیهای اشیائی که در قالبها در دسترس و مفید هستند را با جزئیات شرح میدهد. همهٔ ویژگیها در اینجا فهرست نشدهاند؛ این گزیدهای از ویژگیهایی است که در یک قالب مفید در نظر گرفته شدهاند.
مقاله (Article)
نمایش رشتهای یک Article، ویژگی source_path است.
| ویژگی | توضیحات |
| author | نویسندهٔ این مقاله. |
| authors | فهرستی از نویسندگان این مقاله. |
| category | دستهبندی این مقاله. |
| content | محتوای رندرشدهٔ مقاله. |
| date | شیء Datetime که نشاندهندهٔ تاریخ مقاله است. |
| date_format | قالب پیشفرض تاریخ یا قالب محلی تاریخ (locale). |
| default_template | نام قالب پیشفرض. |
| in_default_lang | یک بولیَن که مشخص میکند آیا مقاله به زبان پیشفرض نوشته شده است یا خیر. |
| lang | زبان مقاله. |
| locale_date | تاریخ قالببندیشده توسط date_format. |
| metadata | دیکشنری (dict) فرادادههای سرآیند مقاله. |
| save_as | مکان ذخیرهٔ صفحهٔ مقاله. |
| slug | اسلاگ (slug) صفحه. |
| source_path | مسیر کامل سیستمی فایل منبع مقاله. |
| relative_source_path | مسیر نسبی از PATH <settings.html#PATH> به فایل منبع مقاله. |
| status | وضعیت مقاله؛ میتواند یکی از مقادیر 'published' یا 'draft' باشد. |
| summary | محتوای رندرشدهٔ خلاصه. |
| tags | فهرستی از اشیاء Tag. |
| template | نام قالب مورد استفاده برای رندر کردن. |
| title | عنوان مقاله. |
| translations | فهرستی از اشیاء ترجمهٔ Article. |
| url | نشانی وب (URL) صفحهٔ مقاله. |
| نمایش رشتهای این اشیاء، صفت name است. | |
| box center; | |
| l|l. | |
| صفت | توضیحات |
| name | نام این شیء [1]. |
| page_name | نام صفحه نویسنده. |
| save_as | محل ذخیره صفحه نویسنده. |
| slug | اسلاگ (نامک) صفحه. |
| url | نشانی URL صفحه نویسنده. |
- [1]
- برای شیء Author، برگرفته از :authors: یا AUTHOR.
صفحه (Page)
نمایش رشتهای یک Page، صفت source_path است.
| صفت | توضیحات |
| author | نویسنده (Author) این صفحه. |
| content | محتوای رندرشده صفحه. |
| date | شیء Datetime نشاندهنده تاریخ صفحه. |
| date_format | قالب تاریخ پیشفرض یا قالب تاریخ محلی (locale). |
| default_template | نام قالب پیشفرض. |
| in_default_lang | مقدار بولی که مشخص میکند آیا مقاله به زبان پیشفرض نوشته شده است یا خیر. |
| lang | زبان مقاله. |
| locale_date | تاریخ قالببندیشده توسط date_format. |
| metadata | دیکشنری (dict) فرادادههای سرایند صفحه. |
| save_as | محل ذخیره صفحه. |
| slug | اسلاگ (نامک) صفحه. |
| source_path | مسیر کامل سیستمی فایل منبع صفحه. |
| relative_source_path | مسیر نسبی از PATH <settings.html#PATH> به فایل منبع صفحه. |
| status | وضعیت صفحه؛ میتواند یکی از مقادیر 'published'، 'hidden' یا 'draft' باشد. |
| summary | محتوای خلاصه رندرشده. |
| tags | فهرستی از اشیاء Tag. |
| template | نام قالب مورد استفاده برای رندر کردن. |
| title | عنوان صفحه. |
| translations | فهرستی از اشیاء ترجمه Article. |
| url | نشانی URL صفحه. |
| متغیرهای خوراک در نگارش 3.0 تغییر کردهاند. اکنون در نام هر متغیر بهصراحت به ATOM یا RSS اشاره شده است. ATOM همچنان پیشفرض است. پوستههای قدیمی باید بهروزرسانی شوند. این فهرست کاملی از متغیرهای خوراک است: | |
| 0.0 | |
| 3.5 | |
| AUTHOR_FEED_ATOM | |
| AUTHOR_FEED_RSS | |
| CATEGORY_FEED_ATOM | |
| CATEGORY_FEED_RSS | |
| FEED_ALL_ATOM | |
| FEED_ALL_RSS | |
| FEED_ATOM | |
| FEED_RSS | |
| TAG_FEED_ATOM | |
| TAG_FEED_RSS | |
| TRANSLATION_FEED_ATOM | |
| TRANSLATION_FEED_RSS | |
| 168u | |
| 168u | |
| "وراثت (Inheritance)" | |
| از نگارش 3.0، Pelican از وراثت از پوستهٔ simple پشتیبانی میکند، بنابراین میتوانید از قالبهای پوستهٔ simple در پوستههای خود مجدداً استفاده کنید. | |
| اگر یکی از فایلهای ضروری در دایرکتوری templates/ پوستهٔ شما وجود نداشته باشد، با قالب متناظر از پوستهٔ simple جایگزین خواهد شد. بنابراین اگر ساختار HTML یک قالب در پوستهٔ simple برای شما مناسب است، نیازی نیست که قالبی تازه را از ابتدا بنویسید. | |
| شما همچنین میتوانید با استفاده از دستور {% extends %} همانند مثال زیر، قالبهای پوستهٔ simple را در پوستههای خود گسترش (ارثبری) دهید: | |
| 0.0 | |
| 3.5 | |
| {% extends "!simple/index.html" %} <!-- extends the ``index.html`` template from the ``simple`` theme --> | |
| {% extends "index.html" %} <!-- "regular" extending --> | |
| 168u | |
| 168u | |
| "مثال (Example)" | |
| با این سازوکار، ساخت یک پوسته تنها با دو فایل امکانپذیر است. | |
| base.html | |
| فایل نخست، قالب templates/base.html است: | |
| 0.0 | |
| 3.5 | |
| {% extends "!simple/base.html" %} | |
| {% block head %} | |
| {{ super() }} | |
| <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/style.css" /> | |
| {% endblock %} | |
| 168u | |
| 168u | |
| 0.0 | |
| 1. 3 | |
| در سطر اول، از قالب base.html در پوستهٔ simple ارثبری میکنیم تا نیازی به بازنویسی کل فایل نداشته باشیم. | |
| 2. 3 | |
| در سطر سوم، بلوک head را که از پیش در پوستهٔ simple تعریف شده است، باز میکنیم. | |
| 3. 3 | |
| در سطر چهارم، تابع super() محتوایی را که قبلاً در بلوک head درج شده بود حفظ میکند. | |
| 4. 3 | |
| در سطر پنجم، یک شیوهنامه را به صفحه اضافه میکنیم. | |
| 5. 3 | |
| در سطر آخر، بلوک head را میبندیم. | |
| 168u | |
| این فایل توسط تمام قالبهای دیگر ارثبری خواهد شد، بنابراین پیوند شیوهنامه در تمام صفحات قرار خواهد گرفت..SS style.css | |
| فایل دوم، شیوهنامهٔ CSS مسیر static/css/style.css است: | |
| 0.0 | |
| 3.5 | |
| body { | |
| font-family : monospace ; | |
| font-size : 100% ; | |
| background-color : white ; | |
| color : #111 ; | |
| width : 80% ; | |
| min-width : 400px ; | |
| min-height : 200px ; | |
| padding : 1em ; | |
| margin : 5% 10% ; | |
| border : thin solid gray ; | |
| border-radius : 5px ; | |
| display : block ; | |
| } | |
| a:link { color : blue ; text-decoration : none ; } | |
| a:hover { color : blue ; text-decoration : underline ; } | |
| a:visited { color : blue ; } | |
| h1 a { color : inherit !important } | |
| h2 a { color : inherit !important } | |
| h3 a { color : inherit !important } | |
| h4 a { color : inherit !important } | |
| h5 a { color : inherit !important } | |
| h6 a { color : inherit !important } | |
| pre { | |
| margin : 2em 1em 2em 4em ; | |
| } | |
| #menu li { | |
| display : inline ; | |
| } | |
| #post-list { | |
| margin-bottom : 1em ; | |
| margin-top : 1em ; | |
| } | |
| 168u | |
| 168u | |
| بارگیری (Download) | |
| میتوانید این پوستهٔ نمونه را از اینجا بارگیری کنید. | |
| "نویسندگان (AUTHORS)" | |
| مشارکتکنندگان Pelican | |
| "کپیرایت و تکثیر (COPYRIGHT)" | |
| 2010–2025 |
| December 25, 2025 | 4 |