درست کردن سایت استاتیک با پلیکان و گیت هاب پیج

سلام، وقت بخیر.

من با پلیکان یک سایت استاتیک درست کردم، از تم بوت استرپ استفاده کردم و یه چنتایی عکس قرار دادم توی پیج ها،
وقتی با کامند
pelican --listen
میرم توی سایت، همه چیز درسته و تم و عکس ها به خوبی لود میشه،
اما مشکل وقتی شروع می‌شه که سایت رو توی گیت‌هاب آپلود کردم، و گیت هاب پیج رو فعال کردم. سایت باز میشه اما تم و عکس ها لود نمیشه. ممکنه کمک کنید؟

درود خدمت شما من اطلاعی از ابزار شما ندارم ولی چند پیشنهاد خدمتتون می دم. معمولا این ابزار ها html رو کامل می سازند و شما اون رو در گیت خودتون آپلود می کنید. پس لطفا لینک گیتی که از این ابزار استفاده کردید و اچ تی ام ال رو قرار دادید رو اینجا بزارید تا دوستان بهتر بتونند نظر بدند.
و همینطور کد نمونه خودتون رو بدید که قبل از جنریت هست
و همینطور لینک سایت ابزاری که دارید استفاده می کنید
موفق باشید

2 Likes

با همش موافقم بجز این. درمورد پلیکان باید بگیم «لینک ریپازیتوری که خود پروژه (دایرکتوریهایی که از روش html‌رو میسازید) هست رو بدید»

درمورد ران کردن پلیکان هم بهتره از

pelicar -rl

استفاده کنید توی محیط develop. اینطوری وقتی یه چیزی رو تغییر میدید، صفحه‌ها دوباره جنریت میشن.


اگه دیفالتها رو تغییر نداده باشید، تا جایی که یادم میاد فایلهای استاتیک رو توی دایکتوری output میسازه. اون دایرکتوری میشه کف وبسایت.
یعنی اگه مثلا یه فایل css توی ‍/theme/static/css دارید، باید لینکش رو به این شکل بدید توی صفحه‌های htmlتون:

theme/css/style.css

دقت کنید که توی دایرکتوریهای پروژتون یه static دارید که توی خروجی نهایی نادیده گرفته میشه و همه‌چیز یه پله میان بالاتر قرار میگیرن.
البته محیط develop هم همین اتفاق میفته، پس فرقی با directory tree در خروجی نهایی نداره.

یه مدل دیگه بخوام توضیح بدم:
فایلهای استاتیک رو توی

theme/static/filename

میریزید، ولی وقتی میخواد سایت رو جنریت کنه (چه برای develop و چه خروجی نهایی) اونها رو توی

theme/filename

میریزه.


یه نکته‌ی دیگه که ممکنه رعایت نکرده باشید اینه که چیزی که موقع develop میسازه رو نباید روی سرور بذارید.
برای گرفتن خروجی نهایی باید از

make publish

استفاده کنید چون یه مقدار تنظیمات محیط develop و publish با هم فرق میکنن. این تنظیمات رو میتونید توی:

pelicanconf.py
# and
publishconf.py

مشاهده کنید.
موقع develop فقط از تنظیمات pelicanconf استفاده میشه. موقع publish، تنظیمات publishconf به pelicanconf اضافه میشه (یا اگه تداخلی وجود داشته باشه، override میشه)

پس مثلا میتونید توی pelicanconf یه سری پلاگین مثل readtime و share_post و neighbors رو داشته باشید به این صورت:

PLUGINS      = ['readtime', 'share_post', 'neighbors']

و توی publishconf یه چیزی رو به این لیست اضافه کنید. مثلا:

PLUGINS += ['sitemap', 'optimize_images', 'optimize_files']

دقت کنید که توی publishconf از += استفاده کردم که متغیر PLUGINS رو override نکنه.

اینکار باعث میشه که موقع develop، پلاگینهایی که سنگین هستن و زمان زیادی میگیرن، کار نکنن و سایت سریعتر ساخته بشه.


من برای سایت خودم کانفیگهای خیلی زیادی انجام دادم و بخشهای خیلی زیادی رو به صورت دستی فیکس کردم با توجه به نیاز خودم، کپی کردن از این ریپازیتوری کار خطرناکیه :stuck_out_tongue_winking_eye: ولی شاید دیدنش ضرری نداشته باشه.

5 Likes

سلام، خیلی ممنون.
لینک ریپو توی گیت هاب: GitHub - shabane/the-secret-bit

و لینک گیت هاب پیج: https://shabane.github.io/the-secret-bit/

خیلی دوست دارم سایتم شبيه باشه به linuxbook.ir,
ولی نتونستم site generator این سایت پیدا کنم.

توی publishconf متغیر SITEURL رو به

https://shabane.github.io/the-secret-bit

تغییر بدید احتمالا درست بشه.

احتمال میدم مشکل از اینجا باشه که سایتتون یه دایرکتوری the-secret-bit داره ولی جنریتور این قضیه رو نمیدونه و داره آدرسها رو از / میده.

توی ریپازیتوری گیتهابش یه فایل هست به نام package.json توش اسم docpad رو نوشته.

البته با هر static site generatorی که انعطاف لازم رو داشته باشه میشه دقیقا عین اینو درست کرد.
با اونایی که انعطاف کافی رو ندارن، میشه یه چیزی خیلی شبیه به این درست کرد که مثلا لینکهاش یه کم با این فرق داره.
بقیه‌ی قضیه مربوط میشه به درست کردن template

2 Likes