Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. CMS
Code

بناء نظام إدارة المحتوى: rubyPress 

by
Difficulty:IntermediateLength:LongLanguages:

Arabic (العربية/عربي) translation by miahood (you can also view the original English article)

بعد إنشاء بنية أساسية لنظام إدارة المحتوى (CMS) ، والخادم الفعلي باستخدام Go وNode.js ، تكون جاهزًا لتجربة توزيعك للغة أخرى. 

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

ا

 للبرنامج في Ruby ، ​​يجب أن يكون لديك أحدث إصدار مثبت على نظامك.  تأتي العديد من أنظمة التشغيل مثبتة مسبقًا مع Ruby في هذه الأيام (Linux و OS X) ، ولكنها عادة ما يكون لها إصدار أقدم. يفترض هذا البرنامج التعليمي أن لديك روبي الإصدار 2.4. 

أسهل طريقة للترقية إلى أحدث نسخة من روبي هي استخدام RVM . لتثبيت RVM على Linux أو Mac OS X ، اكتب ما يلي في جهاز طرفية: 

ت

بالنسبة إلى Windows ، يمكنك تنزيل Windows Ruby Installer . حاليا ، هذه الحزمة تصل إلى روبي 2.2.2 ، وهو ما يكفي لتشغيل المكتبات والبرامج النصية في هذا البرنامج التعليمي. 

ن

هذا يثبت مكتبات Sinatra و Ruby Handlebars و Kramdown و Slim .سيناترا هو إطار تطبيق الويب. يدير Ruby Handlebars محرك تعشيق Handlebars في Ruby.  كرامداون هو Markdown لتحويل HTML. Slim مكتبة Jade تعمل على حد سواء ، ولكنها لا تشمل تعريفات الماكرو في Jade. ولذلك ، فإن وحدات الماكرو المستخدمة في فهارس النشر أخبار ومدون الآن اليشم الطبيعي. 

إنشاء ملف rubyPress.rb 

في الدليل العلوي ، قم بإنشاء الملف rubyPress.rb وقم بإضافة التعليمة البرمجية التالية. سأقوم بالتعليق على كل قسم لأنه يتم إضافته إلى الملف. 

أول شيء يجب فعله هو تحميل المكتبات. على عكس Node.js ، لا يتم تحميل هذه في متغير. تضيف مكتبات Ruby وظائفها إلى نطاق البرنامج. 

يحصل على تهيئة مكتبة Handlebars مع وظائف مساعد مختلفة محددة. وظائف المساعد المحددة هي التاريخ ، cdate ، والحفظ . 

في تاريخ يأخذ وظيفة مساعد التاريخ والوقت الحالي، والأشكال وفقا لسلسلة التنسيق تمريرها إلى مساعد. cdate مشابه باستثناء تمرير التاريخ أولاً.  و حفظ المساعد يسمح لك بتحديد اسم و قيمة . يقوم بإنشاء مساعد جديد باسم الاسم وتمرير القيمة .  هذا يسمح لك بإنشاء المتغيرات المحددة مرة واحدة وتؤثر على العديد من المواقع.تأخذ هذه الوظيفة أيضًا النسخة Go ، التي تتوقع سلسلة تحتوي  على الاسم "|" كفاصلوقيمة .

ت يتم أولاً تحميل متغير عالمي ، $ parts ، من ملف server.json . ثم يتم استخدام تلك المعلومات لتحميل العناصر المناسبة للتخطيط والموضوع  المحدد. يستخدم مشغل قالب Handlebars هذه المعلومات لملء القوالب.

يحتوي المقطع التالي على تعريفات لكافة التوجيهات. سيناترا هو خادم متكامل متوافق  معREST . ولكن بالنسبة إلى نظام إدارة المحتوى هذا ، سأستخدم فقط فعل الحصول . يأخذ كل مسار العناصر من الطريق لتمريرها إلى وظائف لإنتاج الصفحة الصحيحة. في Sinatra ، يحدد اسم مسبوق بنقطتين مقطعًا من المسار لتمريره إلى معالج التوجيه. هذه العناصر موجودة في جدول تجزئة params . 

على الصفحة وظيفة يحصل على اسم صفحة من الطريق ويمر التخطيط في أجزاء $متغير جنبا إلى جنب مع المسار الكامل لملف صفحة اللازمة لوظيفة processPage .  وprocessPage يأخذ وظيفة هذه المعلومات ويخلق الصفحة المناسبة، وهو ما  يعود ذلك الحين. في روبي ، يكون خرج الدالة الأخيرة هو قيمة الإرجاع للدالة.

 في آخر وظيفة هو تماما مثل صفحة وظيفة، إلا أنه يعمل لجميع الصفحات نوع آخر. هذه الوظيفة تتوقع منصب نوع ، بعد القط egory، و آخر في حد ذاته. سيقوم هؤلاء بإنشاء عنوان لعرض الصفحة الصحيحة.

 و figurePage تستخدم وظيفة processPage وظيفة لقراءة محتوى الصفحة من نظام الملفات. تستقبل هذه الوظيفة المسار الكامل للملف بدون الامتداد. figurePage ثم اختبار ملف بالاسم المحدد مع ملحق html لقراءة ملف HTML.الخيار الثاني هو امتداد md لملف Markdown. 

وأخيرا ، فإنه يتحقق من وجود ملحق العنبر لملف اليشم. تذكر: Amber هو اسم مكتبة معالجة ملفات Jade syntax في Go.  ظللت الأمر نفسه بالنسبة للوظائف البينية. يتم تمرير ملف HTML ببساطة ، بينما يتم تحويل جميع ملفات Markdown و Jade إلى HTML قبل الرجوع. 

إذا لم يتم العثور على ملف ، فسيتلقى المستخدم صفحة 404 . بهذه الطريقة ، تبدو  صفحة "لم يتم العثور على الصفحة" مثل أي صفحة أخرى باستثناء المحتويات.

تقوم دالة processPage بتنفيذ جميع عمليات توسيع القوالب في بيانات الصفحة. يبدأ من خلال استدعاء الدالة figurePage للحصول على محتويات الصفحة. ثم يعالج التخطيط الذي تم تمريره إليه باستخدام Handlebars لتوسيع القالب. 

ك

و processShortCodes يأخذ وظيفة النص المعطى، تجد كل الرمز القصير، وتشغيل الرمز القصير المحدد مع الحجج ومحتويات الرمز القصير. أستخدم روتين الاختصار القصير لمعالجة المحتويات الخاصة بالرموز القصيرة أيضًا. 

الرمز القصير هو علامة تشبه HTML تستخدم - [ و ] - لتحديد علامة الفتح و - [/ و ] - علامة الإغلاق. تحتوي العلامة الافتتاحية على معلمات الرمز القصير أيضًا.لذلك ، يكون الرمز القصير على سبيل المثال: 

ب في مربع الرمز القصير يلتف المحتويات في HTML المناسبة لإنتاج مربع حول النص مع النص تركزت في منطقة الجزاء.  إذا أردت لاحقًا تغيير كيفية عرض المربع ، فيجب عليك فقط تغيير تعريف الرمز  القصير. هذا يوفر الكثير من العمل.

آخر شيء في الملف هو جدول تجزئة الأرقام القصيرة $ الذي يحتوي على إجراءات الرمز القصير. هذه رموز قصيرة بسيطة ، ولكن يمكنك إنشاء رموز قصيرة أخرى لتكون معقدة كما تريد. 

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

تشغيل الخادم 

بمجرد إنشاء ملف rubyPress.rb بالمحتويات المذكورة أعلاه ، يمكنك تشغيل الخادم مع: 

نظرًا لأن إطار عمل Sinatra يعمل مع بنية Ruby on Rails Rack ، يمكنك استخدامPow لتشغيل الخادم.  ستقوم Pow بإعداد ملفات مضيف النظام الخاص بك لتشغيل الخادم محليًا بنفس الطريقة التي يتم بها من موقع مستضاف.يمكنك تثبيت Pow with Powder باستخدام  الأوامر التالية في سطر الأوامر:

Powder هو روتين لسطر الأوامر لإدارة مواقع Pow على جهاز الكمبيوتر الخاص بك.للحصول على Pow لرؤية موقعك ، يجب عليك إنشاء رابط لين لدليل مشروعك في الدليل ~ / .pow .  ب

و قانون الجنسية -s بإنشاء ارتباط لينة إلى الدليل المحدد أولا، مع الاسم المحدد ثانيا.ستقوم Pow بعد ذلك بإعداد مجال على نظامك باسم الرابط المرن.  في المثال أعلاه ، سيؤدي الانتقال إلى موقع الويب http://rubyPress.dev في المتصفح إلى تحميل الصفحة من الخادم. 

لبدء تشغيل الخادم ، اكتب ما يلي بعد إنشاء الارتباط الميسر: 

 لإعادة تحميل الخادم بعد إجراء بعض التغييرات البرمجية ، اكتب ما يلي:

rubyPress Main Page
rubyPress الصفحة الرئيسية 

سينتج عن الانتقال إلى موقع الويب في المتصفح الصورة أعلاه. سوف يقوم Pow بإعداد الموقع على http://rubyPress.dev . بغض النظر عن الطريقة التي تستخدمها لإطلاق الموقع ، سترى نفس الصفحة الناتجة. 

 استنتاج

حسنا ، لقد فعلت ذلك. CMS آخر ، ولكن هذه المرة في روبي. هذا الإصدار هو أقصر إصدار من جميع CMSs التي تم إنشاؤها في هذه السلسلة. جرّب الرمز ورأيت كيف يمكنك تمديد هذا الإطار الأساسي. 

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.