PELICAN-THEMING(1) PELICAN PELICAN-THEMING(1)

pelican-theming - راهنمای ساخت پوسته برای Pelican

یک مخزن مدیریت‌شده توسط جامعه کاربری از پوسته‌های Pelican در https://github.com/getpelican/pelican-themes برای اشتراک‌گذاری و استفاده همگان وجود دارد.

لطفاً توجه داشته باشید اگرچه ما تمام تلاش خود را برای بررسی و ادغام مشارکت‌های مربوط به پوسته انجام می‌دهیم، اما این موارد توسط جامعه Pelican ارسال می‌شوند و در نتیجه ممکن است سطوح متفاوتی از پشتیبانی و سازگاری داشته باشند.

ابزار 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 را در تنظیمات خود تعریف کنید تا به مسیر پوسته مورد نظرتان اشاره کند.

برای ساخت پوسته خود، باید ساختار زیر را رعایت کنید:

├── 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) باشد، دریافت خواهند کرد. می‌توانید مستقیماً به آن‌ها دسترسی داشته باشید.

تمام این تنظیمات برای همه قالب‌ها در دسترس خواهند بود.

متغیر توضیحات
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_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.

متغیر 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، ویژگی 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، صفت 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