آموزش گام به گام ساخت وبلاگ هگزو (Hexo) از صفر (نسخه ۲۰۲۴)
آیا از رابطهای کاربری بیروح و نازیبای وبلاگهای قدیمی خسته شدهاید؟ آیا از اعلانهای بیپایان وبسایتها کلافه شدهاید؟ آیا مدتهاست که رویای داشتن یک وبلاگ شخصی را در سر میپرورانید، اما آموزشهای پیچیده و کدهای سردرگمکننده شما را از این کار بازداشته است؟ پس تبریک میگویم! این مقاله دقیقاً برای شماست تا به سادهترین و قابلفهمترین شکل ممکن، گام به گام به شما کمک کند تا وبلاگ شخصی خودتان را بسازید. تنها کافی است کمی صبر داشته باشید و مرحله به مرحله با ما همراه شوید.
هگزو (Hexo)، به عنوان یک چارچوب وبلاگنویسی سریع، ساده و کارآمد، واقعاً نعمتی برای مبتدیان است. و گیتهاب (GitHub) هم ما را از دردسر اجاره و راهاندازی سرورهای اضافی بینیاز میکند. بنابراین، در این مقاله از هگزو و گیتهاب برای ساخت وبلاگ استفاده خواهیم کرد.
من قبلاً در سال ۲۰۱۸ یک آموزش مختصر برای ساخت وبلاگ از صفر نوشته بودم. اما به دلیل بهروزرسانی افزونهها، نیاز به تغییراتی در برخی جزئیات وجود داشت؛ از این رو، نسخه ۲۰۲۴ این آموزش مختصر را مجدداً منتشر میکنیم.
آمادهسازی
- دانلود و نصب Node.js (دانلود و نصب از وبسایت رسمی)
- دانلود و نصب Git (دانلود و نصب از وبسایت رسمی)
ساخت وبلاگ استاتیک هگزو به صورت محلی
- نصب چارچوب هگزو: CMD را باز کرده و اجرا کنید:
$ npm install -g hexo-cli
- یک پوشه جدید ایجاد کنید، مثلاً MyBlog، وارد آن شوید، راست کلیک کرده و Git را اجرا کنید، سپس وارد کنید:
$ hexo init
- پس از تولید قالب هگزو، npm را نصب کرده و اجرا کنید:
$ npm install
بله، بخش اصلی وبلاگ شما تا اینجا تکمیل شده است. بیایید نتیجه را ببینیم. اجرا کنید:
$ hexo server
حالا مرورگر خود را باز کنید و با وارد کردن localhost:4000 میتوانید ظاهر فعلی وبلاگتان را مشاهده کنید. کمی هیجانزده شوید، سپس با فشردن Ctrl + C میتوانید به ادامه مراحل بپردازید.
تنظیمات شخصیسازی (اولیه)
تغییر قالب
- یک قالب جدید دانلود کنید (به عنوان مثال، قالب NexT)، سپس در دایرکتوری اصلی اجرا کنید:
$ git clone https://github.com/theme-next/hexo-theme-next themes/next
- فایل
_config.ymlدر دایرکتوری اصلی را باز کنید و فیلدthemeرا به این صورت تغییر دهید:
theme: next
- انتخاب ظاهر: فایل
/themes/next/_config.ymlرا باز کنید و فیلدschemeرا پیدا کنید (میتوانید با Ctrl + F سریعاً جستجو کنید). NexT سه ظاهر مختلف ارائه میدهد؛ میتوانید یکی را که دوست دارید انتخاب کنید و علامت # را از ابتدای آن بردارید (در ادامه، عمدتاً همین دو فایل: فایل پیکربندی سایت و فایل پیکربندی قالب را تغییر خواهیم داد).
# Schemes
#scheme: Muse
scheme: Mist
#scheme: Pisces
#scheme: Gemini
- برای مشاهده نتیجه، دستورات زیر را اجرا کنید (هر بار که میخواهید نتیجه را ببینید، میتوانید این مرحله را تکرار کنید):
hexo g #یا hexo generate
hexo server
پیکربندی سایت
- فایل پیکربندی سایت
_config.ymlرا در دایرکتوری اصلی با یک ویرایشگر باز کنید (در ویندوز از Notepad استفاده نکنید، زیرا ممکن است عنوانهای فارسی به هم بریزد)، سپس فیلدهای مربوط بهSiteرا تغییر دهید. توجه داشته باشید که بعد از دو نقطه (:) باید یک فاصله وجود داشته باشد:
# Site
title: دنیای ناشناخته // نام وبلاگ
subtitle:
description: Do something cool // یک شعار یا جمله کوتاه
author: LulalaP // نویسنده
language: zh-Hans // زبان وبسایت
timezone:
تنظیم تصویر آواتار در نوار کناری
-
در مسیر
/sourceیک پوشه جدید به نامuploadsایجاد کنید و تصویر آواتار خود (مثلاً: avatar.jpg) را در آن قرار دهید. -
فایل
/themes/next/_config.ymlرا باز کنید، فیلدavatarرا پیدا کرده و به این صورت تغییر دهید:
avatar:
url: /uploads/avatar.jpg
تکمیل صفحات وبلاگ
افزودن منو
- فایل
/themes/next/_config.ymlرا باز کنید، سپس از فیلدmenu، کامنت (علامت #) را از جلوی منوهایی که میخواهید اضافه کنید، بردارید. اگر نیاز به افزودن منوهای دیگری دارید، میتوانید طبق نیاز خود اضافه کنید (به تورفتگی فیلدها توجه کنید):
menu:
home: / || fa fa-home
about: /about/ || fa fa-user
tags: /tags/ || fa fa-tags
categories: /categories/ || fa fa-th
archives: /archives/ || fa fa-archive
ایجاد صفحه دستهبندیها
- یک صفحه جدید به نام
categoriesایجاد کنید. دستور آن به شرح زیر است:
$ hexo new page categories
- صفحه تازه ایجاد شده
/source/categories/index.mdرا ویرایش کنید و نوع صفحه راcategoriesقرار دهید. قالب به طور خودکار تمامی دستهبندیها را در این صفحه نمایش خواهد داد (به فاصله بعد از دو نقطه توجه کنید).
title: Categories
date: 2024-04-10 23:40:31
type: "categories"
comments: false
---
ایجاد صفحه ابر برچسبها
- یک صفحه جدید به نام tags ایجاد کنید. دستور آن به شرح زیر است:
$ hexo new page "tags"
- صفحه تازه ایجاد شده را ویرایش کنید و نوع صفحه را
tagsقرار دهید. قالب به طور خودکار ابر برچسبها (tag cloud) را در این صفحه نمایش خواهد داد.
---
title: Tags
date: 2024-04-10 23:41:25
type: "tags"
comments: false
---
ایجاد صفحه “درباره من”
- یک صفحه درباره من (about) جدید ایجاد کنید:
$ hexo new page "about"
- صفحه تازه ایجاد شده را ویرایش کنید و میتوانید اطلاعات خود را با فرمت Markdown در بخش اصلی آن بنویسید.
title: About
date: 2024-04-10 23:41:56
comments: false
---
تنظیم لینکهای شبکههای اجتماعی در نوار کناری
- فایل
_config.ymlسایت را ویرایش کنید، فیلدsocialرا پیدا کنید و سپس نام و آدرس شبکههای اجتماعی خود را اضافه کنید. فرمت کلید-مقدار به صورتنام نمایشی: آدرس لینکاست، به عنوان مثال:
# Social links
social:
GitHub: https://github.com/your-user-name || fab fa-github
E-Mail: mailto:[email protected] || fa fa-envelope
#Weibo: https://weibo.com/yourname || fab fa-weibo
#Google: https://plus.google.com/yourname || fab fa-google
Twitter: https://x.com/your-user-name || fab fa-twitter
- فایل
/themes/next/_config.ymlرا باز کنید و در فیلدsocial_icons، نام شبکههای اجتماعی (به حروف بزرگ و کوچک دقت کنید) و آیکونهای مربوطه را اضافه کنید. گزینهenableبرای کنترل نمایش آیکونهاست؛ میتوانید آن راfalseتنظیم کنید تا آیکونها نمایش داده نشوند. به عنوان مثال:
social_icons:
enable: true
GitHub: github
Twitter: twitter
اتصال وبلاگ به گیتهاب
-
ثبتنام در گیتهاب: اگر هنوز حساب گیتهاب ندارید، ابتدا باید یک حساب کاربری ایجاد کنید.
-
در گیتهاب پروژهای با نام
XXX.github.ioایجاد کنید کهXXXنام کاربری گیتهاب شماست. -
فایل پیکربندی
_config.ymlرا در پوشه پروژهMyBlogمحلی خود باز کنید وtypeآن را رویgitتنظیم کنید:
deploy:
type: git
repository: https://github.com/your-name/your-name.github.io.git
branch: main
- اجرا کنید:
npm install hexo-deployer-git --save
- فایلهای استاتیک را به صورت محلی تولید کرده و آنها را به گیتهاب بفرستید. اجرا کنید:
hexo g
hexo d
حالا مرورگر خود را باز کنید و به آدرس http://your-name.github.io بروید. تبریک میگویم، وبلاگ شما تا این مرحله کاملاً آماده شده است.
اتصال دامنه
تا این مرحله، وبلاگ کاملاً راهاندازی شده و از طریق دامنه گیتهاب نیز قابل دسترسی است. برای اینکه کار عالیتر شود، حالا یک دامنه کوتاهتر را به این وبلاگ متصل میکنیم.
خرید دامنه
- یک دامنه خریداری کنید. خرید از namesilo.com توصیه میشود؛ یک ارائهدهنده دامنه قدیمی و قابل اعتماد با قیمتهای مناسب و خدمات مطمئن. اگر از کد ارجاع من
PhiloArt.ioاستفاده کنید، میتوانید ۱ دلار تخفیف دریافت کنید. این کد تا تاریخ ۳۱-۱۲-۲۰۲۵ معتبر است.
تنظیمات DNS دامنه
-
تنظیمات DNS ارائهدهنده دامنه
-
۴ رکورد A اضافه کنید تا به GitHub Pages اشاره کنند:
185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153
- یک رکورد
CNAMEاضافه کنید.nameراwwwوcontentراyour-name.github.io(که به آدرس GitHub Pages شما اشاره دارد) قرار دهید:
CNAME —> philo-li.github.io
-
برای تنظیمات دقیقتر، به مستندات گیتهاب پیج مراجعه کنید.
-
افزودن فایل CNAME به دایرکتوری وبلاگ
پس از اتمام تنظیمات DNS، وارد دایرکتوری وبلاگ شوید. در پوشه source، یک فایل جدید به نام CNAME (به حروف بزرگ و بدون پسوند) ایجاد کنید. آن را با Notepad باز کرده و دامنه خریداری شده خود را در آن بنویسید، مثلاً: www.philoli.com
- اجرا کنید:
hexo g
hexo d
حالا مرورگر خود را باز کنید، دامنه خود را وارد کرده و Enter را فشار دهید. تبریک میگویم، شما اکنون یک وبلاگ با دامنه مستقل خود دارید!
انتشار مقالات جدید
-
در دایرکتوری اصلی وبلاگ، دستور
hexo new “我的第一篇文章”را اجرا کنید. این کار یک فایل.mdدر پوشهsource/_postsایجاد خواهد کرد. -
این فایل را ویرایش کنید و فیلدهای ابتدایی را به این صورت تغییر دهید:
title عنوان مقاله
date تاریخ ایجاد (تاریخ ایجاد فایل)
updated تاریخ ویرایش (تاریخ ویرایش فایل)
comments آیا نظرات فعال باشند true
tags برچسبها
categories دستهبندیها
permalink نام در URL (نام فایل)
-
محتوای اصلی را بنویسید (با رعایت قواعد Markdown).
-
فایلهای استاتیک را به صورت محلی تولید کرده و آنها را به گیتهاب بفرستید. اجرا کنید:
hexo g
hexo d
تنظیمات شخصیسازی (پیشرفته)
در ادامه، برخی تنظیمات پیشرفته برای شخصیسازی ظاهر وبلاگ ارائه شده است. مبتدیان میتوانند فعلاً از این بخش صرف نظر کنند.
افزودن RSS
- افزونه را در دایرکتوری اصلی نصب کنید:
$ npm install hexo-generator-feed --save
- در انتهای فایل
_config.ymlدر دایرکتوری اصلی، موارد زیر را اضافه کنید: (توجه: حتماً بعد از دو نقطه (:) یک فاصله قرار دهید، در غیر این صورت خطا رخ خواهد داد!)
# Extensions
## Plugins: http://hexo.io/plugins/
plugins: hexo-generate-feed
- فایل
/themes/next/_config.ymlرا باز کنید وrssرا تغییر دهید (توجه: بعد از دو نقطه (:) باید یک فاصله قرار دهید).
rss: /atom.xml || fa fa-rss
بریدن متن مقالات در صفحه اصلی
- هر بار که متن اصلی مقاله را مینویسید، کافی است در فایل
.mdمقاله، هر جا که میخواهید متن بریده شود، این خط را اضافه کنید:
<!--more-->
- فایل
/themes/next/_config.ymlرا باز کنید و گزینهscroll_to_moreرا بهfalseتغییر دهید.
قرار دادن متن نقل قول در مرکز مقالات
- استایل پیشفرض نقل قولهای Markdown بهینهسازی شده است:
{% centerquote %}
متن نقل قول
{% endcenterquote %}
{% centerquote %} متن نقل قول {% endcenterquote %}
تغییر استایل بلوک کد
- فایل
/themes/next/_config.ymlرا ویرایش کنید و پیکربندیcodeblockرا به شرح زیر تغییر دهید:
codeblock:
# Code Highlight theme
# Available values: normal | night | night eighties | night blue | night bright | solarized | solarized dark | galactic
# See: https://github.com/chriskempson/tomorrow-theme
highlight_theme: night eighties
# Add copy button on codeblock
copy_button:
enable: true
# Show text copy result.
show_result: true
# Available values: default | flat | mac
style:
تعیین زمان ایجاد سایت
- فایل
_config.ymlسایت را ویرایش کنید و فیلدsinceرا اضافه کنید.
since: 2024
بهبود استایل لینکهای مقاله
- فایل
themes\next\source\css\_common\components\post\post.stylرا ویرایش کرده و استایلهای CSS زیر را در انتهای آن اضافه کنید:
// link style
.post-body p a{
color: #0593d3;
border-bottom: none;
border-bottom: 1px solid #0593d3;
&:hover {
color: #fc6423;
border-bottom: none;
border-bottom: 1px solid #fc6423;
}
}
افزودن تصویر پسزمینه به وبلاگ
- در پوشه
sourceدر دایرکتوری اصلی، پوشهای به نام_dataایجاد کنید. سپس یک فایلstyles.stylجدید بسازید و آن را باز کنید (source/_data/styles.styl) و محتوای زیر را به آن اضافه کنید:
body {
background:url(/uploads/background.jpg);
background-repeat: no-repeat; //اگر تصویر کل صفحه را پوشش نداد، نحوه تکرار آن
background-attachment:fixed; //آیا تصویر با اسکرول حرکت کند
background-size: cover; //پوشش کامل
background-position:50% 50%; //موقعیت تصویر
}
- در
urlمیتوانید لینک تصویر یا مسیر دایرکتوری تصویر را قرار دهید. میتوانید تصویر راbackground.jpgنامگذاری کرده و آن را در پوشهsource/uploadsقرار دهید.
تنظیم پسزمینه محتوای وبلاگ به حالت نیمهشفاف
- فایل
source/_data/styles.stylکه در مرحله قبل ویرایش کردید را باز کنید و محتوای زیر را به آن اضافه کنید:
// شفافسازی محتوای وبلاگ
// تنظیم شفافیت محتوای مقاله
if (hexo-config('motion.transition.post_block')) {
.post-block {
background: rgba(255,255,255,0.9);
opacity: 0.9;
radius: 10px;
margin-top: 15px;
margin-bottom: 20px;
padding: 40px;
-webkit-box-shadow: 0 0 5px rgba(202, 203, 203, .5);
-moz-box-shadow: 0 0 5px rgba(202, 203, 204, .5);
}
.pagination, .comments {
opacity: 0;
}
+tablet() {
margin: 20px;
padding: 10px;
}
+mobile() {
margin: 15px;
padding: 15px;
}
}
// تنظیم شفافیت سایدبار
.sidebar {
opacity: 0.9;
}
// تنظیم شفافیت نوار منو
.header-inner {
background: rgba(255,255,255,0.9);
}
// تنظیم شفافیت کادر جستجو (local-search)
.popup {
opacity: 0.9;
}
بهینهسازی استایل بلوکهای کد درون خطی
- فایل
source/_data/styles.stylکه در مرحله قبل ویرایش کردید را باز کنید و محتوای زیر را به آن اضافه کنید:
// زیباسازی تگهای کد (Code)
code {
padding: 2px 4px;
word-wrap: break-word;
color: #c7254e;
background: #f9f2f4;
border-radius: 3px;
font-size: 18px;
}
افزودن تعداد بازدیدکنندگان به پایین وبسایت
- ویرایش فایل
# نوار تگ copyright را پیدا کرده و کد را در داخل تگ اضافه کنید
<div class="copyright">
# ......در اینجا تنظیماتی از قبل وجود دارد
# کد جدید را اینجا اضافه کنید
</div>
# پس از افزودن، به این شکل خواهد بود:
<div class="copyright">
# ......در اینجا تنظیماتی از قبل وجود دارد
# کد جدید را اینجا اضافه کنید
{%- if true %}
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-user-md"></i>
</span>
Visitors: <span id="busuanzi_value_site_uv"></span>
{%- endif %}
</div>
- مجدداً تولید کنید تا پیشنمایش تغییرات را ببینید. پس از اطمینان از صحت، منتشر کنید.
hexo g
hexo s
# پس از اطمینان از صحت، منتشر کنید
hexo d
افزودن فایل README.md به مخزن
معمولاً هر پروژه یک فایل README.md دارد، اما پس از استقرار با Hexo در مخزن، فایل README.md موجود در پروژه بازنویسی میشود. بنابراین، برای جلوگیری از این بازنویسی، باید فایل پیکربندی را تنظیم کنید.
در پوشه ریشه source در دایرکتوری Hexo، یک فایل README.md اضافه کنید. سپس فایل پیکربندی سایت _config.yml را ویرایش کرده و مقدار پارامتر skip_render را به این صورت تنظیم کنید:
skip_render: README.md
ذخیره کرده و خارج شوید. دفعه بعد که با دستور hexo d وبلاگ را مستقر میکنید، این فایل README.md رندر نخواهد شد.
چند افزونه پرکاربرد
- Hexo Filter MathJax: رندر فرمولهای ریاضی
- نصب:
npm install hexo-filter-mathjax - پیکربندی دقیق: hexo-filter-mathjax
- نصب:
- Hexo Word Counter: شمارش کلمات مقاله
- نصب:
npm install hexo-word-counter - پیکربندی دقیق: hexo-word-counter
- نصب:
- Hexo Optimize: بهینهسازی سرعت بارگذاری وبلاگ
- نصب:
npm install hexo-optimize - پیکربندی دقیق: hexo-optimize
- نصب:
- افزونههای بیشتر: https://theme-next.js.org/plugins/
پشتیبانگیری از فایلهای منبع
- فراموش نکنید که فایلهای منبع محلی خود، به خصوص فایلهای Markdown را به خوبی پشتیبانگیری کنید. در صورت از دست دادن سایر تنظیمات، قادر به نوشتن وبلاگ نخواهید بود و باید همه چیز را از ابتدا تنظیم کنید.
- توصیه میشود از همان مخزن گیتهاب برای پشتیبانگیری استفاده کنید.
- پیشنهاد میشود هر بار که تغییری ایجاد میکنید یا حداقل روزانه یک بار پشتیبانگیری کنید.
- برای استفادههای بیشتر، به مستندات گیت مراجعه کنید.
# آدرس مخزن وبلاگ که قبلاً تنظیم کردهاید را اضافه کنید
git remote add https://github.com/your-name/your-name.github.io.git
# تغییرات فعلی را اضافه و ذخیره کنید و یک یادداشت ثبت کنید
git add .
git commit -m "源文件更新"
# یک شاخه جدید ایجاد کرده و به آن سوئیچ کنید
git checkout -b source
# تمامی محتوای شاخه source محلی را به شاخه source در مخزن راه دور ارسال کنید
git push origin source:source
نوشتن وبلاگ با کامپیوترهای مختلف
- هنگام نوشتن وبلاگ با کامپیوترهای مختلف، لازم است نرمافزارهای پایه را نصب کرده، سپس مخزن پشتیبان گیتهاب را به صورت محلی دریافت کرده و وبلاگ را بهروزرسانی کنید.
- دانلود و نصب Node.js (دانلود و نصب از وبسایت رسمی)
- دانلود و نصب Git (دانلود و نصب از وبسایت رسمی)
- نصب چارچوب هگزو: CMD را باز کرده و اجرا کنید:
npm install -g hexo-cli
- بهروزرسانی محلی
# مخزن را به صورت محلی کلون کنید
git clone https://github.com/your-name/your-name.github.io.git
# اگر قبلاً به صورت محلی کلون کردهاید، هر بار قبل از بهروزرسانی وبلاگ باید آخرین محتوای شاخه را دریافت کنید
git pull origin
# به شاخه مربوطه سوئیچ کنید
git checkout source
# پس از نصب تمامی افزونههای پیکربندی هگزو، میتوانید شروع به بهروزرسانی و ویرایش محتوای وبلاگ کنید
npm install
# پس از تغییر محتوا، حتماً بلافاصله پشتیبانگیری کامل انجام دهید
git add .
git commit -m "博客更新xxx"
git push origin source:source
# آخرین محتوای وبلاگ را به سایت دامنه منتشر کنید
hexo clean
hexo g # تولید فایلهای استاتیک
hexo s # پیشنمایش محلی وبلاگ
hexo d # انتشار آخرین محتوای وبلاگ
خلاصه دستورات پرکاربرد
hexo g
#یا hexo generate، برای تولید صفحات استاتیک بر اساس فایلهای منبع
hexo d
#یا hexo deploy، برای انتشار و ارسال به GitHub Pages
hexo s
#یا hexo server، برای راهاندازی و تست محلی
hexo clean
# پاک کردن کش صفحات استاتیک، سپس hexo d برای تولید مجدد