فصل چهارم: خلق یک شاهکار بصری: طراحی تم سفارشی پارسی برای Nextcloud¶
هدف فصل: رنگ و بوی پارسی به فضای ابری¶
تصور کنید Nextcloud شما با رنگهای جذاب، فونتهای روان پارسی، و چیدمانی راستبهچپ، به یک اثر هنری تبدیل شود که نهتنها کاربردی، بلکه چشمنواز و کاملاً بومی است! در این فصل، با ساخت یک تم سفارشی برای Nextcloud ۳۲.۰.۰، پروژهتان را به سطحی جدید میبرید. از افزودن فونت Vazir و پشتیبانی RTL تا هماهنگی کامل با اپلیکیشنهای Calendar و Talk، این تم به کاربران حس آشنایی و افتخار پارسی میدهد. آمادهاید که فضای ابریتان را به یک تجربه بصری بینظیر تبدیل کنید؟
۴.۱ ایجاد تم: پایهگذاری یک هویت پارسی¶
تمها در Nextcloud راهی برای تغییر ظاهر و حس رابط کاربری هستند. ما تمی به نام Persian Cloud میسازیم که با فرهنگ پارسی همراستا باشد.
۴.۱.۱ ساخت ساختار تم¶
- ایجاد پوشه تم:
mkdir -p themes/persian-theme
cp -r themes/example/* themes/persian-theme/
- تعریف مشخصات تم:
فایل:
themes/persian-theme/theme.json
{
"name": "Persian Cloud",
"slogan": "فضای ابری پارسی: جایی برای آینده دیجیتال شما",
"color": "#2a5db0",
"color-text": "#ffffff",
"color-element": "#1a4a8c",
"color-element-bright": "#3b6fc9",
"logo": "/themes/persian-theme/core/img/logo.svg",
"logoMime": "image/svg+xml",
"background": "/themes/persian-theme/core/img/background.jpg",
"backgroundMime": "image/jpeg"
}
- فعالسازی تم:
فایل:
server/config/config.php
<?php
$CONFIG = [
'theme' => 'persian-theme',
'default_language' => 'fa',
'default_locale' => 'fa_IR',
];
چک سریع:
- بررسی کنید که پوشه
themes/persian-themeشامل زیرپوشههایcore/imgوcore/cssباشد. - لوگو و پسزمینه را با ابزارهایی مثل Inkscape یا Figma طراحی کنید.
۴.۲ SCSS و RTL: جادوی استایل پارسی¶
برای ایجاد ظاهری یکپارچه و راستبهچپ، از SCSS و RTL استفاده میکنیم.
۴.۲.۱ تعریف استایلهای پایه¶
فایل: themes/persian-theme/core/css/server.scss
$primary-color: #2a5db0;
$secondary-color: #f4f4f4;
$text-color: #ffffff;
@font-face {
font-family: 'Vazir';
src: url('https://cdn.fontcdn.ir/Font/Persian/Vazir/Vazir.woff2') format('woff2');
font-display: swap;
}
body {
font-family: 'Vazir', 'Segoe UI', sans-serif;
background-color: $secondary-color;
color: #333;
}
[dir="rtl"] {
direction: rtl;
text-align: right;
unicode-bidi: embed;
}
.header {
background-color: $primary-color;
color: $text-color;
padding: 1rem;
}
button, .btn {
background-color: $primary-color;
color: $text-color;
border-radius: 4px;
transition: background-color 0.3s ease;
&:hover {
background-color: darken($primary-color, 10%);
}
}
۴.۲.۲ کامپایل SCSS و تولید RTL¶
cd server
npm install -g sass rtlcss
sass themes/persian-theme/core/css/server.scss themes/persian-theme/core/css/server.css
rtlcss themes/persian-theme/core/css/server.css themes/persian-theme/core/css/server.rtl.css
۴.۲.۳ افزودن لوگو و پسزمینه¶
- لوگوی SVG را در
themes/persian-theme/core/img/logo.svgذخیره کنید. - تصویر پسزمینه را در
themes/persian-theme/core/img/background.jpgقرار دهید.
۴.۳ ادغام با اپلیکیشنها: هماهنگی کامل¶
۴.۳.۱ سفارشیسازی اپلیکیشن Calendar¶
فایل: themes/persian-theme/apps/calendar/css/custom.css
.fc-daygrid-day-number {
font-family: 'Vazir', sans-serif;
color: #2a5db0;
font-weight: bold;
}
.fc-button {
background-color: #2a5db0;
color: #ffffff;
border-radius: 4px;
}
[dir="rtl"] .fc {
direction: rtl;
text-align: right;
}
.fc .fc-daygrid-day-top {
justify-content: flex-end;
}
۴.۳.۲ سفارشیسازی اپلیکیشن Talk¶
فایل: themes/persian-theme/apps/spreed/css/custom.css
.message {
font-family: 'Vazir', sans-serif;
direction: rtl;
}
.message-bubble {
background-color: #e6f0fa;
border-radius: 8px;
padding: 0.5rem;
}
[dir="rtl"] .message-timestamp {
text-align: left;
}
۴.۴ تست: لحظه نمایش شاهکار!¶
-
فعالسازی تم: اطمینان حاصل کنید که
'theme' => 'persian-theme'درconfig/config.phpتنظیم شده است. -
تست در مرورگر:
curl http://localhost:8080
- به
http://localhost:8080بروید. -
بررسی کنید که لوگو، پسزمینه، فونت Vazir، و RTL درست هستند.
-
تست اپلیکیشنها:
- در Calendar، اعداد روزها و دکمهها را بررسی کنید.
-
در Talk، چتها و زمانها را چک کنید.
-
تست پاسخگویی:
- صفحه را در موبایل و دسکتاپ تست کنید.
- از ابزارهای توسعه مرورگر (F12) استفاده کنید.
تست لبه:
- تغییر زبان به انگلیسی و بازگشت به فارسی.
- بررسی تم تیره با
prefers-color-scheme.
نکات حرفهای¶
- دسترسیپذیری: با WAVE یا Lighthouse کنتراست و خوانایی را بررسی کنید.
- تم تیره:
@media (prefers-color-scheme: dark) {
body {
background-color: #1a1a1a;
color: #e0e0e0;
}
}
- مستندسازی: در
README.fa.mdنحوه نصب تم را توضیح دهید. - بهینهسازی: تصاویر را با
imageminفشرده کنید.