دليل أسطرلاب English GitHub

الوضع المصمَّم

الطريقة الثالثة لعرض موقعك على الزوار: صفحة رئيسية تبنيها من أقسام، ومعها شريط تنقل وترويسة وتذييل وخطوط وصفحات ثابتة من اختيارك.


يستطيع الزوار أن يروا موقعك بواحدة من ثلاث هيئات. تخطيط التطبيق يعرض لهم تطبيق القراءة نفسه. وتخطيط المدونة يعرض لهم مدونة جاهزة بصفحة أولى ثابتة. أما الوضع المصمَّم، وهو الثالث، فيدعك تؤلّف الصفحة الأولى بنفسك. شغّله بـPUBLIC_LAYOUT=designed أو من الإعدادات ← النشر ← التخطيط العام ← مصمَّمة.

في الوضع المصمَّم تُبنى صفحتك الرئيسية من أقسام تختارها وترتّبها: صدارة (كتلة افتتاحية كبيرة بعنوان)، وكتل ماركداون، وملاحظة كاملة تُسحب إلى الصفحة، وشبكة تدوينات أو قائمة تدوينات، وسحابة مواضيع، وزر دعوة إلى فعل (زر بارز يقود القارئ إلى مكان بعينه)، وفواصل ومساحات فارغة. وحول الأقسام تتخذ قرارات تخصّ الموقع كله: ترويسة كاملة، أو شريط واحد، أو لا ترويسة أصلًا؛ وعرض عمود القراءة؛ وكثافة الصفحة؛ وأيّ أجزاء صفحة المقالة تظهر.

افتح المصمِّم من لوحة الأوامر: صمّم موقعك.

المدونة المدمجة تبقى في مكانها

المدونة والمصمِّم برنامجان منفصلان. لا يمسّ المصمِّم شيفرة المدونة أبدًا، فهو برنامج عرض ثانٍ يرسم صفحته الخاصة، لا إعادة تنسيق للأول. وهذا ما يجعل التبديل بينهما آمنًا:

التبديل بين المدونة والتصميم فوري، ولا يضيع شيء في أي من الاتجاهين. تُحفظ تصاميمك في ASTROLABE_DATA/designs.json. وما دام التخطيط شيئًا غير designed فذلك الملف لا يُقرأ أصلًا. لذلك لا تحذف العودةُ إلى blog شيئًا، والتقدم مجددًا يعيد موقعك كما كان تمامًا. فالعودة إلى المدونة الجاهزة مخرج أمان، لا قرار تلتزم به.

التصميم المعطوب لا يراه زوارك

افترض أن ملف التصميم غير صالح، أو أن قسمًا يشير إلى ملاحظة حذفتها، أو أن شيئًا ما أخفق أثناء رسم الصفحة. عندها تُعرض للزوار المدونة المدمجة تلقائيًا. لا يرون صفحة فارغة ولا رسالة خطأ تقنية. أنت وحدك من يُخبَر: إشعار في التطبيق يسمّي القسم الذي أخفق، ونقرة واحدة تعيد الموقع إلى المدونة الجاهزة. وnpm run check-design هو الفحص الذي يبقي هذا الوعد صادقًا: يكسر الموقع عمدًا بالطرق الثلاث ويقيس ما يراه الزائر وما يراه المالك. انظر التطوير.

الأقسام

الصفحة الرئيسية للتصميم قائمة مرتَّبة من الأقسام. ويمكن إخفاء أي قسم من غير حذفه، وهي قاعدة «يُحفظ وإن كان معطَّلًا» نفسها التي يتبعها ملف التصميم كله، ولكن على مستوى القسم الواحد.

النوعما يضعه على الصفحة
heroعنوان وعنوان فرعي وصورة اختيارية (رابط https أو مرفق من الخزانة)؛ محاذاته start أو center، وحجمه short أو tall. اترك العنوان فارغًا فتعرض الصدارة اسم الموقع وشعاره النصي، فهي مفيدة من غير أن تكتب شيئًا
richTextكتلة ماركداون تُعرض بالطريقة نفسها التي تُعرض بها ملاحظاتك: تنقية HTML نفسها، وحلّ روابط الويكي نفسه، والتنبيهات نفسها
noteملاحظة منشورة واحدة، تُسحب كاملة، أو فقرتها الأولى فقط مع رابط إلى بقيتها
postGridأحدث التدوينات المنشورة على هيئة بطاقات: عنوان، وحدّ أقصى، وعدد أعمدة، وتصفية اختيارية بوسم، ومفاتيح للمقتطف والغلاف والتاريخ
postListالتدوينات نفسها على هيئة قائمة بسيطة: عنوان، وحدّ أقصى، وتصفية بوسم، ومفتاحان للمقتطف والتاريخ
topicsسحابة مواضيع مأخوذة من وسومك المنشورة، إلى حدّ أقصى
ctaعنوان وسطر نص وزر. ويجب أن يكون هدف الزر عنوانًا في هذا الموقع (/topic/x) أو رابط https مطلقًا؛ فزر الصفحة الرئيسية ليس مكانًا يُقبل فيه javascript:
dividerخط، أو صف نقاط، أو مساحة عمودية فارغة، بالبكسل

قسم التدوينات لا يستطيع تخطي تدوينات. يقرأ postGrid وpostList كلاهما أحدث التدوينات المنشورة ويتوقفان عند حدّهما، فقسما تدوينات في تصميم واحد يعرضان التدوينات نفسها مرتين. ينبغي أن يحمل التصميم قسم تدوينات واحدًا، أو تمييزًا لتدوينة واحدة إلى أربع فوق فهرس طويل من عشرين أو أكثر، حيث يتوقع القارئ أن يبدأ الأرشيف بالقطعة التي فوقه. أما شبكتان متقاربتا الحجم إحداهما فوق الأخرى فذلك هو الترتيب الذي يبدو خطأً.

وتعطيك لوحة الأقسام ثلاث طرق لتحريك صف: زرّا ↑/↓، أو السحب بالمؤشر، أو الرفع بلوحة المفاتيح (Space للرفع، والأسهم للتحريك، وSpace للإنزال، وEsc للإلغاء). وتريك أين سيحطّ الصف قبل أن تتركه. وCtrl/Cmd S يحفظ المسودة. وnpm run check-board يختبر الطرق الثلاث.

قشرة الموقع

وراء الأقسام يصف التصميم الإطار الذي يحيط بها:

  • الترويسة: تخطيط stacked أو stackedStart أو inline؛ وكثافة compact أو regular أو tall؛ ولا شيء ثابت عند التمرير، أو شريط تنقل ثابت، أو ترويسة ثابتة؛ والشعار واسم الموقع والشعار النصي والفاصل، لكل منها مفتاحه.
  • شريط التنقل: قائمة مرتَّبة من العناصر. كل عنصر رابط إلى الصفحة الرئيسية أو إلى ملاحظة أو صفحة ثابتة أو موضوع أو رابط خارجي، أو group يحمل عناصر فرعية في قائمة منسدلة. حتى 20 عنصرًا، ولكل منها حتى 12 عنصرًا فرعيًا. ويمكن للعنصر أن يفتح في تبويب جديد أو أن يُخفى. وإن لم يكن هناك عناصر أصلًا ملأ nav.fallback: "topics" القائمة بأكثر وسومك المنشورة استعمالًا، فيحصل التثبيت الجديد على موقع مفروش. ويحمل شريط التنقل أيضًا مفاتيح لصندوق البحث ومبدّل السمة ومبدّل اللغة EN/ع.
  • الخطوط: الحجم الأساسي، والمقياس النسبي، وعرض عمود القراءة بوحدة ch (أي بعدد الأحرف)، وارتفاع السطر، والإيقاع العمودي، ووزن العناوين، وحالة أحرف العناوين (normal أو smallcaps أو uppercase)، وخط مذيَّل أو غير مذيَّل للعناوين والمتن كلٌّ على حدة. ولكل واحد منها مقبض يدور بين حدّ أدنى وحدّ أعلى، لا خانة رقم حرّ.
  • التذييل: أعمدة من المدخلات، كل مدخل رابط أو نص عادي أو أيقونة تواصل (Mastodon وX وGitHub وLinkedIn وRSS والبريد).
  • صفحة المقالة: أيّ الأجزاء تحتفظ بها المقالة: الغلاف، وسطر البيانات، والوسوم، والتدوينات ذات الصلة، ورابط العودة.
  • السمة: التصميم مظهر، والمظهر سمة وتخطيط معًا، لذلك يسمّي التصميم إحدى السمات الست والأربعين (أو سمة مخصصة). وتُطبَّق على الزوار الذين لم يختاروا سمة لأنفسهم؛ وnull يترك settings.defaultTheme وشأنه.
  • الموقع: عرض عمود الأقسام بالبكسل، وكثافة compact أو regular أو roomy.

القوالب الجاهزة

القالب الجاهز تصميم مكتمل تبدأ منه. يأتي المصمِّم مزوَّدًا بـ81 قالبًا في تسع عائلات: editorial وminimal وjournal وportfolio وreference وlanding وgallery وletter وsignature. والقالب نسخة تنطلق منها وتعدّلها كما تشاء، لا استمارة تملؤها. وتحكم كلَّ واحد منها ثلاث قواعد، وهي كل ما يُشترط في أي قالب يُضاف:

  1. القالب الجاهز شكل خالص. كل حقل نص يمكن أن يضبطه (عنوان قسم، أو عنوان الصدارة نفسها، أو كلمات دعوة إلى فعل، أو حقوق النشر في التذييل، أو تسمية في شريط التنقل) يُترك فارغًا، والمعرِّضات تعرف أصلًا معنى الفراغ: الصدارة بلا عنوان تعرض اسم الموقع وشعاره النصي، وحقوق النشر الفارغة تعود إلى سطر التذييل الخاص بالنسخة، وتسمية الزر الفارغة تصير «اقرأ المزيد» مترجمةً. ولو كتب قالب «Latest writing» في عنوان لوضع كلمة إنجليزية في موقع عربي، ونبرة غريبة في مواقع الجميع. الشكل لنا، وكل كلمة على الصفحة لك.
  2. القالب الجاهز لا يسمّي شيئًا في خزانتك. لا قسم note، ولا عنصر تنقل يشير إلى ملاحظة أو صفحة، ولا تصفية بوسم، ولا مسار صورة. فالتصميم الذي يأتي مع البرنامج لا يمكنه أن يعرف ما في خزانة شخص آخر، وأول ما ستراه من قالب يخمّن هو بطاقة خطأ. وهو يتكئ بدل ذلك على البدائل الموجودة أصلًا.
  3. القالب الجاهز مظهر، لذلك يسمّي سمة: إحدى السمات المدمجة، اختيرت لأن التخطيط رُسم عليها. فالصحيفة العريضة صحيفة عريضة على parchment.

وnpm run check-presets يُلزم الكتالوج بهذه القواعد: معرّفات فريدة، واسم ونبذة باللغتين بعربية حقيقية، وعائلة معروفة، وقالب واحد على الأقل لكل عائلة، ولا قالب يسمّي ملاحظة.

لكل بيت من بيوت «التوقيع» طابعه، وهو ينتقل مع التصميم

القوالب الأحد والعشرون في عائلة signature «بيوت»، على غرار بيوت الأزياء: لكل واحد منها شخصية كاملة. ويحمل كل واحد منها خيار الطابع المميّز، في تبويب الترويسة والتذييل، وينتقل هذا الخيار مع التصميم أينما ذهب. وهو ما يجعل البيت بيتًا لا مجرد لوحة ألوان: لوحة اسم الصحيفة بأذنيها وشريط تاريخها، وورق الطابعة المثقّب وشريطه، ورادار غرفة التحكم، والكسوف فوق «الحقل العميق»، وجدار المتحف بقطعة معلّقة على أسلاك، وأطوار القمر وخريطة النجوم في السجل. ويبقى بعد إعادة التسمية والنسخ وتصدير JSON واستيراده، فالفرع الذي تأخذه من Mission Control وتعيد تلوينه وترتيبه يبقى في غرفة التحكم. اختر بلا طابع إضافي لإزالته من غير مسّ أقسامك أو خطوطك. والتصاميم المحفوظة قبل وجود هذه الميزة لا تحمل طابعًا حتى تطبّق قالبًا يحمله.

وكل طابع مرسوم بألوان السمة نفسها (تدرجات وخطوط وظلال، لا صورة أبدًا ولا لون ثابت)، فيتبع لوحة ألوانك وسمتيك الفاتحة والداكنة. والرسم قسم صدارة بعنوان فارغ، وهو القسم الذي يطبع أصلًا اسم موقعك وشعاره النصي، فتبقى الترويسة فوقه هادئة في الصفحة الأولى وتعود في كل مقالة.

وnpm run check-signatures يشغّل اختبار متصفح معزولًا على مجموعة الطوابع: تخطيطا سطح المكتب والهاتف، والاتجاه العربي وتنقّل المجموعات، إضافة إلى المعارض وملخصات التحويم في القوالب الأحد والثمانين كلها، ومعاينات لوحة المفاتيح، وعرض المقالات، وتطابق المصمِّم. وSIGNATURES=late-edition,klaxon و--houses-only وSHOTS=full تضيّقه على البيوت التي ترسمها وتكتب لقطات الشاشة في shots/signatures/. ولا يمسّ خزانة ولا تصميمًا محفوظًا أبدًا.

ميزات المدونة في كل قالب

شيئان من المدونة يظهران في الصفحات الرئيسية المصمَّمة أيضًا. بطاقات معرض موقع الكاتب، إن كنت قد ضبطتها، تظهر في آخر الصفحة. والمجموعات المنشورة تظهر قرب أعلى الصفحة حين يكون موضعها في الصفحة الرئيسية مشغَّلًا؛ ومع تشغيل موضعها في شريط التنقل تُضاف المجموعات التي فيها تدوينات بجانب القائمة التي كتبتها، وتحتفظ صفحات المجموعة بالتصميم النشط حول محتوياتها. وتستخدم هذه الإضافات الإعدادات نفسها والبيانات المصفّاة للزوار نفسها التي تستخدمها المدونة الجاهزة، وتظهر في معاينة المصمِّم الحية أيضًا.

وتفتح روابط التدوينات بقعة ضوء حين يستقر عليها المؤشر أو تركّز عليها لوحة المفاتيح: مطلع التدوينة، متوسّطًا فوق صفحة معتَّمة، تحت غلافها (إن كان لها غلاف) وتاريخها ووقت قراءتها ووسومها. تعمل على الروابط في البطاقات والقوائم ونتائج البحث والتدوينات ذات الصلة، في التخطيطين العامّين كليهما. وعلى شاشة اللمس تتبع النقرة الرابط مباشرة. وتحصل الصفحات الطويلة أيضًا على زر العودة إلى الأعلى المشترك. وتُعرض متون المقالات والصفحات الثابتة بالطريقة نفسها التي تُعرض بها الملاحظات، وتحترم إعدادات محاذاة الملاحظة.

التصاميم مسمّاة ومرقَّمة الإصدارات ومحمولة

يمكنك أن تحتفظ بعدة تصاميم، وأن تكرّر واحدًا لتجرّب شيئًا، وأن تصدّر أيًّا منها بصيغة JSON (والسمات المخصصة التي يستخدمها تنتقل معه) وتستورده في نسخة أخرى. والاستيراد يضيف دائمًا ولا يستبدل: التصميم الذي يتصادم اسمه مع اسم موجود يأخذ معرّفًا جديدًا، ولا يُكتب فوق شيء تملكه بصمت أبدًا. و«إعادة الضبط الأصلي» على بعد نقرة دائمًا. أما التصميم الذي كتبته نسخة من أسطرلاب أحدث من التي تشغّلها فيُحفظ على القرص ويُدرج مع ذكر السبب، ولا يُعرض نصف مفهوم أبدًا.

المعاينة الحية

لوحة المعاينة في المصمِّم صفحة حقيقية تشغّل التخطيط المصمَّم الحقيقي، لا نموذجًا تقريبيًا. تستخدم أوراق أنماط النسخة وسمتها (مع تبديل حيّ للسمة)، وترسم الصفحة بعرض الهاتف واللوحي وسطح المكتب لتفحص ما سيراه القارئ فعلًا قبل التمرير. والمفاتيح التي تضغطها داخل المعاينة لا تفعل شيئًا، لأن معاينة تستجيب لـEnter كانت ستصير محررًا ثانيًا صامتًا. وnpm run check-preview يختبرها.

الصفحات الثابتة

صفحة «حول»، أو «اتصل بنا»، أو «عن هذا الموقع»: هذه ملاحظات تنتمي إلى الموقع لا إلى خلاصة التدوينات. وتعلّم واحدة منها بعلامة في المقدمة:

---
publish: true
page: true
---

واختير page: true بدل مجلد خاص عن قصد. فالصفحة تبقى ملاحظة عادية: تحتفظ بمكانها في الخزانة بجانب الكتابة التي تنتمي إليها، وتحتفظ بروابط الويكي والروابط الراجعة، وتحرّرها في المحرر نفسه. أما مجلد /pages/ فكان سيفرض قرار تصنيف يعيد كتابة كل [[رابط ويكي]] يشير إلى الملاحظة ويكسر عنوانها الدائم، وكل ذلك من أجل صفة لا علاقة لها بمكان الملف. والعلامة هي أيضًا الشكل الذي تستخدمه الخزانة أصلًا لهذا النوع من الحقائق: publish: true يقرر هل الملاحظة ظاهرة، وpage: true يقرر نوعها.

والصفحة ما زالت مجرد ملاحظة، فتبقى على عنوانها النظيف (About.md يصير /About)، ويجب أن تحمل publish: true ليراها أحد؛ فـpage: true وحده لا ينشر شيئًا.

وتغيّر العلامة شيئين، في الوضع المصمَّم فقط، فتسلك المدونة الجاهزة كما كانت تمامًا:

  • تغادر الصفحة خلاصة التدوينات (/api/posts وقائمة الصفحة الرئيسية وقوائم المواضيع وRSS)، لأن صفحة «اتصل بنا» ليست مقالة ولا ينبغي أن تكون أحدث شيء في الصفحة الأولى؛
  • ويمكن عرضها في منشئ شريط التنقل، وتُعرض بقالب الصفحة في التخطيط المصمَّم (بلا تاريخ ولا وقت قراءة ولا سابق/تالٍ ولا تدوينات ذات صلة) بدل قالب المقالة.

ومع publicLayout على app أو blog لا تفعل العلامة شيئًا، وتسلك الخزانة المليئة بملاحظات page: true كما كانت تمامًا قبل وجود الميزة. فالانتقال إلى الوضع المصمَّم هو ما يعطي العلامة معناها، والعودة عنه تسحبه، من غير أن يضيع شيء.

حرّر هذه الصفحة على GitHub

أسطرلاب برنامج حر. هذه الصفحات مبنية من ملفات Markdown في مجلد docs بالمستودع.