المحتوى عن 'وسوم'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • مقالات عامة
  • التجارة الإلكترونية

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
    • Magento
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
  • HTML5
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • سي شارب #C
    • منصة Xamarin
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • برمجة أندرويد
  • لغة R
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
  • مقالات عامّة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
  • مقالات عامّة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجينتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 8 نتائج

  1. قد تصاب بحيرة في بداية استخدامك لووردبريس حين تبدأ في التعمق فيها كنظام إدارة للمحتوى لديك لتواجه مصطلحات مثل التصنيفات-Taxonomy والتصنيفات الخاصة-Custom Taxonomies بعد أن كنت تتعامل بسلاسة مع الفئات-Categories والوسوم-Tags. وسنتناول في هذا المقال الفرق بين كل منهم، وكيفية استخدامهم في موقعك، مع بعض الأمثلة على كيفية استخدامهم، ونظرة أيضًا على كيفية استخدام إضافاتنا لهم لإضافة إمكانيات جديدة لموقعك. التعريفات دعنا نبدأ ببعض التمهيد أولًا كي ندرك أبعاد ما نتحدث عنه، فنبدأ بالتصنيفات-taxonomies إذ أنها أوسع المصطلحات التي سنتعامل معها وأشملها. التصنيف Taxonomy أتى هذا المصطلح أصلًا من علم الأحياء، حيث يستخدم في تصنيفات الأنواع الحية وممالك الكائنات، ويعرّفه قاموس أوكسفورد على أنه “نظام يستخدم في التقسيم أو التصنيف”. أما لدينا في ووردبريس فهو يشير إلى “تقنية جمع لبعض المنشورات أو الروابط أو أنواع مخصصة من المنشورات”، وهيا ننظر الآن في بعض الأمثلة التي ستزيل اللبس نهائيًا عن فهم التصنيف في ووردبريس. فقد عرفنا إلى الآن أنه نظام تجميع تستخدمه أنت لتحديد نوع أي منشور في ووردبريس، فالفئة-category تُعدّ تصنيفًا، وكذلك الوسم-tag ما هو إلا تصنيف أيضًا، وتستطيع إنشاء تصنيفاتك الخاصة التي تضع المنشورات العادية والمخصصة تحتها، حيث يكثر استخدام التصنيفات لتمييز منشورات عادية عن نوع مخصص من المنشورات-Custom Post Type، من أجل تلافي أي خلط بين المنشورات العادية والمخصصة منها. فمثلًا ستجد أن إضافة “Support System Plugin” تضيف نوعي منشورات خاصة حين تثبتّها في موقعك، وهما “Support Ticket” و”FAQ”. كما ستنشئ تصنيفين مخصصين هما “Ticket Category” و”FAQ Category”. وذلك التقسيم يفصل بين البطاقات “Tickets” التي لديك والأسئلة الشائعة “FAQ”، وبين منشورات عادية كمقالات مدونة الموقع. ما هو الفصل Term؟ هو عنصر داخل التصنيف، تستخدمه لتمييز منشوراتك عن بعضها، ويمكن أن يجمع عدة عناصر فرعية أخرى فيه. فإن كنت تستخدم إضافة “Support” التي ذكرناها قبل قليل وأنشأت فئات-categories لكل فريق من فِرَق الدعم لديك، فكل واحد من تلك الفِرَق يشكّل فصلًا في تصنيف “Ticket Category” الذي أنشأَته الإضافة حين ثبّتّها. ويمكنك أن تنشئ فصولًا مختلفة لتصنيف “FAQ Category” كذلك إلا أنك قد ترى عناصر مكررة، لكن بالنسبة لووردبريس فهذه فصول مختلفة وستُخَزَّن منفصلة في قاعدة البيانات، حتى لو أعطيتها نفس الأسماء. إضافة Support System تضيف نوعين مخصصين من المنشورات، وتصنيفين ما هي الفئة Category؟ يخلط الناس عادة بين الفئات-Categories والتصنيفات-Taxonomies، إليك وظيفة كل منهما وموقعه: • الفئة عبارة عن تصنيف. • فئة س التي تضيفها داخل تصنيف ص، هي فصل-Term داخل هذا التصنيف وأحد عناصره. فإذا أنشأت فئات لمنشوراتك مثل “الأخيرة” و”المميزة”، فستكون تلك فصولًا في تصنيف واحد، تمامًا كما أن المبيعات والدعم مثلًا عبارة عن فصول في تصنيف “Ticket Categories” داخل إضافة “Support System”. ما هو الوسم-Tag إذًا؟ الوسم يشبه الفئة كثيرًا، فهو فصل في تصنيف “post_tag”، فإن كان لديك “ووردبريس” و”شروح” كوسوم لمنشوراتك، فهما فصلان في تصنيف “post_tag”. ولا تسألني لماذا سُمّيت الوسوم في ووردبريس “post_tags” ولم تُسمّ الفئات “post_categories”، فهذا أحد ألغاز ووردبريس العجيبة. لكن ما الفرق بين الوسم والفئة، ولمَ نحتاج إلى الاثنين؟ ألا يغني أحدهما عن الآخر؟ تختلف الفئات عن الوسوم في أن بنيتها هرمية، فيمكن أن تنشئ فئة فرعية من فئة موجودة أصلًا، لكن لا يمكن فعل هذا في الوسوم، لهذا ستجد نفسك تستخدم الفئات لهيكلة موقعك أكثر من الوسوم، بما أن لكل منهما بنية منفصلة. أما التصنيفات ففيها مرونة أكبر، إذ يمكن تشكيلها لتكون هرمية مثل الفئات، ويمكن استخدامها مثل الوسوم بحيث لا يتفرع تصنيف من آخر، لذا يمكن اعتبارها تتصرف مثل الفئات، غير أن الفرق بينهما أن التصنيف يمكن أن يحتوي فئة بينما العكس غير صحيح. إنشاء التصنيفات والفصول ننتقل الآن إلى كيفية إنشاء فصل أو تصنيف بما أننا فصّلنا في معانيها قبل قليل، ستجد ابتداءًا أن ووردبريس لديها تصنيفات قليلة موجودة افتراضيًا، وهي: Category Tag Link category: لا يُستخدم هذا مع المنشورات العادية، لكن مع منشورات الروابط. وهو أحد الآثار الموجودة في ووردبريس أيام ميزة كان اسمها blogroll. خلاصة الأمر أنك تستطيع تجاهل هذا التصنيف. Post format: يستخدم هذا التصنيف مع المنشورات العادية، ولتحديد نوع المنشور كذلك -فيديو، نص، إلخ-. أتخيل أن يكون هذا مفيدًا للمدونين رغم أني لم أستخدمه بنفسي أو أرى حالات استخدام كثيرة له. ومما سبق يتبيّن أن ووردبريس تأتي بأربع تصنيفات أساسية مباشرة، يمكننا الاستفادة مباشرة من اثنين منهما. وستجد تصنيف “Category” به فصل واحد وهو “uncategorized”، أما تصنيف “post_tag” لا يحتوي أي فصول حتى تضيف أنت بنفسك فيه. لكن هذا لا يشكّل نهاية الطريق للتصنيفات والفصول في موقعك، فإن ووردبريس تسمح لك بإنشاء تصنيفاتك الخاصة وتضع تحتها أي نوع من المنشورات تراه مناسبًا. ولديك طريقتين لإنشاء تصنيف خاص بك، وهي إما عبر دالة ()register_taxonomy بكتابة شفرة برمجية ، أو باستخدام إضافة CustomPress لإنشاء تصنيفات جديدة دون كتابة أي شفرة. وأي من تلك الطريقتين ستنشئ تصنيفًا جديدًا، كما يمكنك إنشاء فصول برمجيًا باستخدام دالة ()wp_insert_term . قد يفيدك هذا إن كنت تكتب إضافة بتصنيف تريد تجهيزه بفصول مسبقًا، لذا إن كنت تكتب إضافة لتذاكر الدعم كإضافتنا التي تحدثنا عنها في أول المقال واستخدمناها كمثال، فربما تود إضافة تصنيف مثل”priority” مثلًا، وتضع فيه فصولًا بأسماء مثل “high” و”medium” و”low”. غير أن أسهل طريقة يمكن إنشاء فصل بها هي من خلال صفحة داخل لوحة تحكم ووردبريس في إضافة “Support System”، تختص بإنشاء فئة تذاكر جديدة، وستجد أن إضافة فصل جديد هنا يشبه إضافة فئة جديدة في صفحة الفئات “categories” إليك صورة منها: استخدام مختلف للتصنيفات والفئات والفصول توضع الفئات منفصلة عن التصنيفات المخصصة وفصولها، لا بأس بهذا إن كنت تستخدم إضافة من طرف ثالث يجب أن تعمل على أنواع عديدة من المواقع إن كان المطور لا يعرف كيف ستستخدم التصنيفات أو المنشورات العادية في موقعك، فعندهاا لن يجعل التصنيفات التي أنشأتها الإضافة تتفاعل مع تلك العادية التي ستستخدمها. لكن إن كنت تكتب إضافتك بنفسك، فلا بأس أن تستخدم خيالك قليلًا، كما سنرى الآن: استخدام التصنيفات الخاصة لإضافة طابع مميز للمنشورات العادية قد يأتي عليك وقت لا تكفي فيه فئات موقعك لتصنيف المنشورات إن كان الموقع مبنيًا بشكل أساسي على المنشورات/المقالات وحدها، وستجد أنك تستخدم عدة طبقات من الفئات الفرعية إلى حد أن الفئات الرئيسية يجب أن تكون تصنيفات بحد ذاتها. وإحدى الطرق التي تحدد بها أن هذه هي حالتك أن تسأل نفسك إن كان هناك أي تفاعل بين الفئات الفرعية، وما إن كنت تربط الفئات الرئيسية إلى منشوراتك أم لا. فإن كان كل محتوى مدونتك عن الكتب مثلًا، ولديك فئتين رئيسيتين هما المؤلِّف ومجال الكتاب، مع فئات فرعية لعدة مؤلفين وأنواع كثيرة للكتب، فيجب أن تنشئ تصنيفين رئيسيين هما المؤلف، ومجال الكتاب، لماذا؟ لأن كل مقال عن كتاب سيكون تحت فئة واحدة فقط في تصنيف المؤلف. لن تربط تصنيفي المؤلف ومجال الكتاب لأي مقال بعد الآن. كما أن إنشاء تصنيفات جديدة يتيح لك كتابة شفرة برمجية لاستعلامات مخصصة تبحث عن الكتب في مجال ما لمؤلف معين، قد تستطيع فعل هذا باستخدام الفئات، لكن لن تكون بنفس الكفاءة. استخدام التصنيفات الخاصة مع المنشورات وأنواع المنشورات الخاصة لا يوجد سبب يمنعك من تسجيل تصنيف مخصص وتضع تحته نوع معينًا من المنشورات خصصته ليكون الخيار الافتراضي لما تنشره، فلنقل مثلًا أنك تعمل على مدونة الكتب السالفة الذكر، وأنشأت نوع منشورات سميته “review” تستخدمه لكتابة مراجعات عن الكتب التي قرأتها، فإن هذا يختلف قطعًا عن المقالات العادية في مدونتك والتي ستتحدث عن موضوعات أكثر شمولية حول الكتب. فيمكن أن تنشئ تصنيفًا مخصصًا-Custom Taxonomy من مجال الكتاب لمراجعة الكتب، كي يعرف القراء أنك تحت هذا التصنيف تكتب مراجعات لكتب في هذا المجال أو ذاك. وإن أردت استخدام التصنيفات لمنشورات مدونتك أيضًا فيمكنك كتابة منشورات عن كل مجال تهتم به ثم تستخدم خطاف pre_get_posts لترتيب المنشورات والمراجعات في هذا المجال أو ذاك في صفحة أرشيفات الفصل الخاص به. أو تنشئ قالبًا مخصصًا لهذا التصنيف (اسمه taxonomy-genre.php) كي يبدأ حلقتين-loops، واحد للمراجعات وآخر للمنشورات. إضافة التصنيفات للصفحات يمكنك أيضًا أن تضيف التصنيفات لأنواع منشورات ليس لديها تصنيف افتراضي ملحقة به، كالصفحات مثلًا. ولفعل هذا نستخدم دالة ()register_taxonomy_for_object_type ، إذ يسمح لك ذلك بإضافة أي تصنيفات موجودة مسبقًا إلى أي نوع منشور موجود أيضًا من قبل. فكي تضيف تصنيفات إلى الصفحات مثلًا ستضيف هذا إلى دوال السمة التي تستخدمها أو إلى إضافة -plugin: <?php register_taxonomy_for_object_type( 'category', 'page' ); ?> وإن أردت فعل هذا مع تصنيف أنشأته بنفسك، فأضف هذا السطر إلى شفرة إنشاء التصنيف باستخدام دالة ()register_taxonomy ، والعامل الثاني في هذه الدالة هو نوع المنشور الذي سيدخل تحت هذا التصنيف، وإن كنت تريد استخدام أكثر من نوع منشور فيجب أن تضعهم في مصفوفة. إذًا، إذا أنشأت نوع منشورات اسمه “review” وأردت إنشاء تصنيفًا اسمه “genre” سيدخل تحته أي”review” أو”page” أو”post”، فإن شفرة إنشاء التصنيف تكون هكذا: <?php register_taxonomy( 'genre', array( 'review', 'post', 'page' ), $args ); ?> وكمل تلاحظ فإن أول عامل متغير هنا هو معرّف التصنيف “genre”، ثم الثاني هو مصفوفة أنواع المنشورات، والثالث هو معاملات للتصنيف الذي أنشأته. وفائدة استخدام التصنيفات هنا هي إمكانية إنشاء تصميمات لعناصر بعينها في هذا المجال -review،posts،page لتصنيف genre في حالتنا-، كما يمكن تحديد مكان أي صفحة في أي فئة ثم إجراء استعلام-query في قالب صفحتك يخرج لك منشورات ومراجعات من تلك الفئة بعد محتوى الصفحة التي حددتها، أو عرض محتويات الصفحة بمراجعاتها، أو المنشورات في صفحة أرشيفات التصنيف. خاتمة إن القدرة على إنشاء تصنيفاتك الخاصة في ووردبريس هو أحد الأمور التي جعلتها نظام إدارة محتوى بدلًا من منصة تدوين، عبر استغلال كل طرق التصنيف الممكنة للمحتوى التي يمكنك إنشاء مواقع تعرض المحتوى الذي تريده بدقة. المهم ألا تترك نفسك تغرق في الاختلافات بين التصنيف والفئة، فالتصنيف-taxonomy هو الأشمل، وداخله فصول-terms، كل منها يمكن أن يكون فئة-category بذاتها. ترجمة -بتصرف- لمقال Using Categories, Tags and Taxonomies Properly in WordPress لصاحبته ريتشل ماكّولن.
  2. كل ما تقوم بإنشائه على Evernote قابل للبحث، من الملاحظات، إلى دفاتر الملاحظات، إلى الوسوم، وحتّى المحادثات. يتيح Evernote طرقًا متعددة للبحث، تتدرج من مستوى أساسي كالبحث باستخدام الكلمات المفتاحية، إلى مستوى متقدم كالبحث باستخدام المعاملات. وبإمكانك البحث في كافة محتويات حسابك، أو تصفية البحث حسب دفتر ملاحظات محدد. سنغطّي في هذا المقال خاصية البحث التي تساعدك في العثور على كلّ شيء تريده. وإذا كان هذا هو المقال الأول الذي تقرأه حول Evernote، راجع الدروس السابقة للتعرّف على التطبيق وكيفية استخدامه لإنشاء، حفظ وتنظيم الملاحظات. كيفية البحث عن الملاحظات، دفاتر الملاحظات، الوسوم، والمحادثات جميعنا نعرف كيفية استخدام حقول البحث، فهي تعمل بنفس طريقة محركات البحث. أي نقوم بإدخال مصطلح/عبارة البحث في الحقل لتظهر النتائج المطابقة على الفور: سيقوم البرنامج بشكل افتراضي بالبحث في دفتر الملاحظات المفتوح حاليًا، فإذا كنت تريد البحث في جميع دفاتر الملاحظات اختر All Notebooks من قائمة Viewing notes تحت حقل البحث: لديك أيضًا خيار للبحث عن الملاحظات التي تحتوي على كلمات تطابق كل مصطلحات البحث أو أيّ مصطلح منها. على سبيل المثال، عندما أبحث عن "screen send" وأحدد الخيار All من قائمة matching الموجودة تحت حقل البحث، ستُعرض الملاحظات التي تحتوي على كلمتي "screen" و"send" معًا. ولا يُشترط أن تكون الكلمات في الملاحظة بنفس ترتيب الكلمات في حقل البحث، المهم أن تحتوي الملاحظة على الكلمتين: أما عندما أبحث عن "screen send" وأحدد الخيار Any، فستُعرض الملاحظات التي تحتوي على كملة "screen" [أو] "send"، أو كلتيهما معًا. يمكنك أيضًا البحث عن دفتر ملاحظات معيّن إذا كانت لديك الكثير من دفاتر الملاحظات وتريد الوصول إليه بسرعة بدلا من البحث يدويًا في قائمة دفاتر الملاحظات. انقر على أيقونة العدسة بجانب Notebooks في الشريط الجانبي وابدأ الكتابة في حقل البحث: وبنفس الطريقة يمكنك البحث عن وسم معيّن للعثور على جميع الملاحظات الموسومة بذلك الوسم. انقر على أيقونة العدسة بجانب Tags في الشريط الجانبي وابدأ الكتابة في حقل البحث: إذا كنت ترغب في البحث عن محادثة محددة، انقر على أيقونة Work Chat ثم اكتب في حقل البحث أية كلمة مفتاحية (مثل كلمة مذكورة في المحادثة أو عنوان ملاحظة أو دفتر ملاحظات تمت مشاركتها في المحادثة) أو اسم جهة اتصال: ملاحظة: من خصائص البحث الرائعة أنّه بالإمكان البحث أيضًا عن الكلمات/العبارات داخل المرفقات، كملفات PDF، جداول البيانات، العروض التقديمية، إلخ، أو داخل الملاحظات المكتوبة بخط اليد التي تم إخالها كصورة ماسح ضوئي. لكنّ هذه الخاصية متوفّر لمشتركي الإصدار المدفوع Evernote Premium أو إصدار الشركات Evernote Business. إنشاء بحث محفوظ Saved Search إذا كنت تبحث عن كلمة أو عبارة محددة بشكل متكرر، يمكنك إنشاء البحث وحفظه للرجوع إليه عند الحاجة. ويصل عدد عمليات البحث التي تستطيع حفظها إلى 100 بحث. لحفظ بحث، اكتب الكلمة/الكلمات المفتاحية في البحث ثم اذهب إلى: File > New Saved Search قم بتسمية اسم البحث المحفوظ باسم دلالي، ثم انقر على OK. ستتم إضافة قائمة Saved Searches على الشريط الجانبي، ومن خلالها يمكنك الوصول إلى جميع عمليات البحث التي قمت بحفظها: إذا رغبت في إعادة تسمية البحث المحفوظ Rename، حذفه Delete، أو إضافته إلى شريط الاختصارات Add to Shortcuts، انقر عليه بزر الفأرة الأيمن واختر الإجراء المرغوب. تتيح خاصية إضافة البحث إلى شريط الاختصارات إمكانية الوصول السريع إلى البحث المحفوظ، استخدمها إذا كنت ترجع إلى هذا البحث بشكل منتظم. كيفية استخدام معاملات البحث المتقدم على Evernote خاصية البحث على Evernote فعّالة جدًا، ويمكنك الحصول على أقصى فائدة منها باستخدام معاملات البحث. تتيح لك هذه المعاملات إمكانية البحث عن الملاحظات حسب تاريخ إنشائها أو تحديثها، حسب موقع إنشائها، حسب نوع الوسائط التي تحتويها، إلخ. سندرج أدناه بعض المعاملات شائعة الاستخدام مع الأمثلة لتوضيحها. notebook استخدم هذا المعامل للبحث عن جميع الملاحظات المحفوظة في دفتر ملاحظات محدد. مثال: notebook:general النتيجة: عرض جميع الملاحظات المحفوظة في دفتر الملاحظات بعنوان "General". tag استخدم هذا المعامل للبحث عن جميع الملاحظات الموسومة بوسم محدد. مثال: tag:blog_post النتيجة: عرض جميع الملاحظات الموسومة بوسم "blog_post". created استخدم هذا المعامل للبحث عن الملاحظات التي تم إنشاؤها في تاريخ محدد أو بعده (كملاحظات اجتماع، حدث، أو رحلة حدثت في يوم معيّن). يجب أن تكتب التاريخ بالصيغة التالية: YearMonthDay على أن تتكون السنة من 4 أرقام، الشهر من رقمين، واليوم من رقمين. مثال: created:20160507 النتيجة: عرض جميع الملاحظات التي تم إنشاؤها في تاريخ 7 مايو 2016، أو التواريخ التي تليه. updated استخدم هذا المعامل لعرض الملاحظات التي تم تحديثها في تاريخ محدد أو بعده. إذا لم تقم بتحديث الملاحظة منذ أن قمت بإنشائها، سيتم اعتبار تاريخ الانشاء هو تاريخ التحديث. مثال: updated:20160429 النتيجة: عرض جميع الملاحظات التي تم تحديثها في تاريخ 29 أبريل 2016 أو التواريخ التي تليه. intitle استخدم هذا المعامل للبحث عن كلمة أو عبارة ضمن عنوان الملاحظة. مثال: intitle:sales النتيجة: عرض جميع الملاحظات التي يحتوي عنوانها على كلمة "sales". resource استخدم هذا المعامل للبحث عن الكلمات التي تحتوي على نوع محدد من الموارد/الوسائط (كالصور، الملفات الصوتية، ملفات PDF، إلخ). مثال: resource:application/pdf النتيجة: عرض جميع الملاحظات التي تم إرفاق ملفات pdf فيها. مثال2: resource:image/png النتيجة: عرض جميع الملاحظات التي تحتوي على صور بصيغة PNG. بإمكانك استخدام أكثر من معامل في نفس عملية البحث. على سبيل المثال عندما تكتب التركيبة التالية في حقل البحث: notebook:general resource:image/png tag:blog_post ستُعرض جميع الملاحظات المحفوظة في دفتر الملاحظات "general"، الموسومة بوسم "blog_post"، وتحتوي على صورة بصيغة PNG. وهناك المزيد من معاملات البحث، يمكنك الاطلاع على قائمة المعاملات كاملة بزيارة هذا الرابط.
  3. دفاتر الملاحظات، المقاطع، الصفحات، والصفحات الفرعية هي الأدوات الأساسية لتصنيف الملاحظات وتنظيمها على OneNote. لكن بإمكانك الارتقاء إلى مستوى أعلى وأدق في التصنيف باستخدام الوسوم. وبذلك تصبح أداة مفيدة جدًا للعثور على الملاحظات ذات الصلة بسرعة وسهولة. في هذا الدرس سنتعرّف على طريقة وسم الملاحظات باستخدام الوسوم الافتراضية، كيفية إنشاء وسوم مخصصة، وكيفية البحث عن الملاحظات بواسطة الوسوم. إضافة وسم للملاحظة يوفّر OneNote مجموعة متنوّعة من الوسوم الافتراضية الجاهزة للاستخدام بشكل مباشر. كما أنّها تكون قابلة للتعديل والتخصيص إن تطلّب الأمر ذلك. كل ما عليك فعله هو النقر على الملاحظة التي تريد وسمها لتحديدها، ثم الذهاب إلى تبويب Home واختيار الوسوم المرغوب من قائمة Tags: من الوسوم الافتراضية وسم Important للملاحظات المهمة، وسم Idea للأفكار المدوّنة، وسم Project A لتجميع الملاحظات الخاصة بمشروع معيّن (قابل للتعديل وإضافة اسم المشروع)، Discuss with <Person A> للملاحظات التي تريد مناقشتها مع أحد الأشخاص (قابل للتعديل وإضافة اسم الشخص)، إلخ. حتّى أنّ هناك لبعض الوسوم مفاتيح اختصار لتسهيل إضافتها. سنقوم مثلا بإضافة الوسم Remember for later لإحدى الملاحظات: وكما نلاحظ بعد إضافة الوسم تم تظليل الملاحظة باللون الأصفر، وهي العلامة التي تميّز هذا الوسم. سنضيف أيضًا وسم Discuss with على ملاحظة أخرى: هنا أيضًا نلاحظ إضافة أيقونة بجانب الملاحظة للدلالة على أنّها موسومة بوسم Discuss With. إذا رغبت في تعديل الوسم انقر على الأيقونة بزر الفأرة الأيمن واختر Customize Tags: من مربّع الحوار Customize Tags حدّد الوسم الذي تريد تعديله ثم انقر على زر Modify Tag. في مثالنا سنحدّد Discuss with <Person A> لتعديل اسم الشخص بين القوسين: سيُفتح مربّع حوار جديد يحتوي على مجموعة خيارات: اسم الوسم، أيقونة/رمز الوسم، لون النص ولون التظليل. ويمكن معاينة التعديلات التي نجريها بواسطة مربّع Preview: بعد إجراء التعديلات، ننقر على OK> OK لتطبيقها. ملاحظة: لن تُطبّق التعديلات على الوسم الحالي المضاف إلى الملاحظة، وفي هذه الحالة يجب إزالة الوسم (Tags> Remove Tag) ثم إعادة إضافته من جديد لتحديثه: بإمكانك إضافة الوسم مباشرة أثناء إنشاء الملاحظة، ويتم ذلك بالنقر بزر الفأرة الأيمن على أي مكان فارغ في الصفحة لفتح شريط أدوات التنسيق السريع، ومن ثم اختيار الوسم المرغوب من قائمة Tag: بعد ذلك قم بإدخال ملاحظتك. إنشاء وسوم مخصّصة إذا لم تجد ضالتك في الوسوم الافتراضية وترغب في إنشاء وسوم مخصّصة حسب نوع الملاحظات التي تقوم بإنشائها، انقر على الخيار Customize Tags من قائمة Tags في تبويب الصفحة الرئيسية: انقر على زر New Tag من مربّع الحوار Customize Tag: سنقوم مثلًا بإنشاء وسم لتصنيف الملاحظات من نوع الصور، لذا سندخل العنوان "صور" في حقل Display name، ثم نختار أيقونة مناسبة من قائمة Symbol. نكتفي بهذين الخيارين وننقر على زر OK لإنشاء الوسم: ستتم إضافة الوسم الجديد إلى قائمة الوسوم الافتراضية، ويمكن استخدامه لاحقًا لتصنيف ملاحظاتنا: ملاحظة: يمكن إضافة أكثر من وسم للملاحظة الواحدة. كيفية العثور على الملاحظات الموسومة بوسم معيّن كما أسلفنا الذكر، وظيفة الوسوم هي تصنيف الملاحظات المتشابه لكي يصبح العثور عليها سهلًا عند الحاجة. بعبارة أخرى هي عبارة عن أداة للبحث عن الملاحظات. للعثور على الملاحظات الموسومة بوسم معيّن، انقر على أمر Find Tags في تبويب Home: سيُفتح جزء Tags Summary الذي يمكنك من خلاله التحكّم في خيارات البحث: من قائمة Group tags by حدّد طريقة تجميع الوسوم في نتائج البحث، حيث يمكن عرضها في مجموعات حسب اسم الوسم (أبجديًا من الألف إلى الياء)، حسب المقطع الذي يحتوي الملاحظة الموسومة، حسب تاريخ الوسم (من الأحدث إلى الأقدم) ... إلخ. على سبيل المثال قمنا بتجميع الوسوم حسب اسم الوسم Tag Name، وكما نلاحظ عُرضت الوسوم التي تم العثور عليها، وتحت كلّ منها تندرج الملاحظات الموسومة بها (يمكن إظهار أو إخفاء الملاحظات تحت كل وسم بالنقر على أيقونة المثلث الصغير): يمكنك أيضًا التحكّم في نطاق البحث من قائمة Search، كتوسيعه والبحث في كافة دفاتر الملاحظات، أو تقليصه والبحث في مجموعة الصفحات الحالية، كما يمكنك البحث في ملاحظات الأسبوع الحالي، الأسبوع الفائت، أو غيرها: إذا كانت لديك الكثير من الوسوم ويصعب عليك استعراض نتائج البحث في جزء Tags Summary قم بإنشاء صفحة مستقلة لعرض ملخّص نتائج البحث. للقيام بذلك انقر على زر Create Summary Page: سيتم إنشاء الصفحة في المقطع الحالي، وتُعرض النتائج حسب طريقة التجميع ونطاق البحث الذي حدّدته: عند تمرير مؤشر الفأرة فوق أحد الملاحظات المندرجة تحت وسم معيّن، ستظهر أيقونة OneNote مصغّرة، مرّر مؤشر الفأرة فوقها لمعرفة اسم الصفحة التي تحتوي الملاحظة، أو انقر عليها مرّة واحدة ليتم نقلك إلى تلك الصفحة، حتّى لو كانت في مقطع آخر أو دفتر ملاحظات آخر: بذلك نكون قد وصلنا إلى نهاية درسنا. إذا كانت لديك أيّة أسئلة أو أفكار حول استخدام وسوم OneNote شاركنا بها في صندوق التعليقات.
  4. التصنيفات (categories) والوسوم (tags) هما النوعان الأساسيان من الفئات (taxonomies) التي توفرها ووردبريس لتنظيم المحتوى، لكن كيفية استخدامهما بفعالية هو موضوعٌ شائكٌ لمدراء المواقع. كان هنالك جدلٌ كبيرٌ حول مزايا كلٌ منهما على مر السنين، وحتى المستخدمين الخبراء كانوا يضيعون أوقاتهم بتفصيلات غير ضرورية، خصيصًا عندما يأتي الحديث عن موضوع SEO. سنشرح في هذا الدرس بطريقةٍ مباشرة كيف تستعمل التصنيفات والوسوم بفعالية، مع وضع المحتوى وقابلية الاستخدام في قائمة أولوياتنا. لمحة عن أساسيات التصنيفات والوسوم كانت التصنيفات هي الفئة الوحيدة المتاحة للمستخدمين، ثم أُضيفت الوسوم لاحقًا في الإصدار 2.3؛ ومن المؤكد أنَّك تعاملت معهما بعد ذاك الإصدار مئات المرات. قبل أن ندخل بالتفصيل في كليهما، لنأخذ نظرةً على الأساسيات: مكان الاستخدام: افتراضيًا، يمكن استعمال التصنيفات (categories) والوسوم (tags) في المنشورات (posts) فقط، وليس في الصفحات (pages) الاستخدام: يجب أن يملك كل منشور تصنيفًا واحدًا على الأقل، أما استعمال الوسوم فهو اختياري الهيكلية: يمكن وضع التصنيفات في هيكليةٍ ذات عدِّة مستويات (levels)، أما الوسوم فهي ذات مستوى وحيد ربما أسهل طريقة للتفكير بالاستخدامات المثلى للتصنيفات والوسوم هو أن نأخذ مثالًا ألا وهو "الكتاب". يمكن أن نعتبر أنَّ التصنيفات هي "الفصول" التي تجمع المواضيع المتشابهة، أما الوسوم فهي أشبه بالفهرس. لنأخذ مثالًا أكثر تحديدًا: إذا كان لديك موقعٌ عن الطبخ، فربما تستعمل التصنيفات (categories) لتُجمِّع المأكولات التي تنتمي لنفس الدولة (الطعام الإيطالي، أو الفرنسي، أو الهندي)؛ وقد تود إنشاء تصنيفات فرعية إن شئت. أما على الجانب الآخر، قد ترغب بتحديد المأكولات التي تستعمل مكونات معيّنة (أي تلك المعلومات التي تتوفر في أكثر من تصنيف)، وستكون الوسوم خيارًا ممتازًا لفعل ذلك. فالضغط على وسم "الطماطم" سيُظهِر لك الوصفات التي تعتمد على الطماطم في جميع أنحاء العالم. إعداد التصنيفات قبل أن نبدأ بإنشاء التصنيفات، من المفيد قضاء بعض الوقت بالتفكير حول هيكليها. ستتوسَّع قائمة التصنيفات مع مرور الزمن، وستصبح التصنيفات الفرعية أمرًا ضروريًا، لكن تريد أن تكون الأمور منظمةً هنا. تخيل التصنيفات على أنها فصولٌ في كتابٍ التي عليك أن تبدأ بها، فإن وجدتَ نفسك تبدأ بخمسة عشر تصنيفًا فعليك أن تُعيد التفكير في الأمر. في حين أنك قادرٌ على إضافة تصنيفات جديدة من واجهة تحرير المنشورات، لكن الواجهة الرئيسية لإضافتها هي في: المقالات > التصنيفات التي تُظهِر قائمةً بالتصنيفات الموجودة حاليًا مع عدد المقالات المُصنَّفة تحتها، وتمنحك طريقةً سهلةً لإضافة تصنيفات جديدة. لنشرح باختصار الخيارات الظاهرة في الصورة عند إنشاء التصنيف: الاسم (Name): هو ما ستراه في موقعك اعتمادًا على القالب (theme) الذي تستعمله، اختر أسماءً واضحةً والتي تُفهَم بسهولة من قِبل مستخدميك، والتي يمكن أن تحتوي على كلمة مفتاحية (keyword)، وأبق الأسماء مختصرة قد الإمكان. الاسم اللطيف (Slug): هو نسخة من الاسم تلائم روابط URL التي ستظهر في أرشيف التصنيفات وفي روابط منشوراتك إن كنت تستعمل الروابط الدائمة المخصصة (سنشرح كلا الأمرين لاحقًا بالتفصيل)؛ لكن كل ما عليك تذكره الآن هو أن تستعمل الشرطات "-" (dashes) لفصل الكلمات، وأن تحذف كلمات الوصل، وأن تتجنب حشو الكلمات المفتاحية أب (Parent): استخدم هذا الحقل لإضافة تصنيف فرعي، أو أبقه مشيرًا إلى "بدون" (أو None في الواجهة الإنكليزية) لإنشاء تصنيف رئيسي الوصف (Description): ربما يُستعمَل هذا الوصف في أي مكان في الموقع اعتمادًا على القالب الذي تستخدمه، أو ربما تطلب عرض الوصف يدويًا يمكن إسناد أكثر من تصنيف إلى منشورٍ ما، لكن عليك أن تبقي الأمور منظمة جدًا كيلا تثير حيرة المستخدمين. حاول أن يكون العدد الأقصى للتصنيفات لمنشورٍ ما هو تصنيفان (ويُفضَّل أن يكون تصنيفًا وحيدًا)؛ وإذا أردت أن تُشير إلى معلوماتٍ إضافية موجودة في مكانٍ آخر في موقعك، فاستخدم الوسوم. اعتمادًا على طبيعة موقعك، ربما تجد أنَّ التصنيف الافتراضي "غير مُصنَّف" (Uncategorized) ليس مفيدًا جدًا، وربما تود إسناد اسم مثل "أفكار عامة" على سبيل المثال، تستطيع فعل ذلك عبر تعديل التفاصيل في صفحة "التصنيفات" التي شاهدناها سابقًا. التصنيفات والروابط الدائمة كما شرحنا سابقًا في درسنا عن الروابط الدائمة (permalinks)، يمكنك تضمين أسماء التصنيفات في روابط URL عبر استخدام الروابط الدائمة المخصصة. وذلك بزيارة: إعدادات > روابط دائمة في لوحة التحكم ثم تستعمل الوسم البنيوي %category% جزءًا من البنية المُخصَّصة (Custom Structure). هذا مثالٌ عن ذلك: لقد قررنا استخدام التركيبة category/postname (أي اسم التصنيف يليه اسم المنشور) كتركيبة مخصصة للروابط في موقعنا؛ فلو كان عندما منشورٌ اسمه اللطيف (slug) هو my-music-post والاسم اللطيف للتصنيف هو classical، فسيبدو الرابط كما في الصورة الآتية: أبقِ في بالك أنَّ عليك اختيار تركيبة الروابط الدائمة في بدايات عمل الموقع لتجنب الفوضى الناتجة عن إعادة التوجيه. على الرغم من أنك سترى بعضهم يقول أنَّ استعمال التصنيفات في الروابط الدائمة مفيدٌ لتقييم SEO، لكنه ليس عاملًا حاسمًا أبدًا؛ فكر في استخدام التصنيفات في الروابط الدائمة إن رأيت فائدةً لمستخدميك بدلًا من محاولة جذب محركات البحث. ضبط تركيبة التصنيف إن أكملت معنا بزيارة: إعدادات > روابط دائمة في القسم السابق، لوجدت خيارًا تحت عنوان "اختياري" (Optional) للتحكم بما يُسمى "تركيبة التصنيف" (Category base). يعطيك هذا الخيار القدرة على تغيير ما يأتي قبل أسماء التصنيفات في صفحات الأرشيف الخاصة بها، ففي المثال الآتي، قمت بتغيير تركيبة التصنيف إلى "music" التي ستراها قبل اسم التصنيف "classical" في رابط صفحة الأرشيف. قرارك باستخدام تركيبة مخصصة للتصنيفات هو بعيدٌ جدًا لأن يكون القرار الوحيد الذي عليك اتخاذه فيما يتعلق بصفحات أرشيف التصنيفات؛ لكن عليك أيضًا تقرير كيف تستطيع إبراز تلك الصفحات فيما يتعلق بـ SEO أو إذا ما كنت تريد تخصيص محتواها. التعامل مع صفحات أرشيف التصنيفات هنالك الكثير من الكلام حول موضوع صفحات أرشيف التصنيفات على الويب، لكن يمكن اختصار الخيارات المتاحة أمامك إلى خيارين: تريد إبراز صفحات التصنيف الرئيسي: تتحمل عناء تخصيص المحتوى، وتفهرس الصفحة الرئيسية (وليس صفحات الأرشيف الفرعية)، وتسمح بتتبع (follow) الروابط لا تريد إبراز صفحات التصنيف الرئيسي: ستضع noindex و nofollow على جميع صفحات الأرشيف ماذا يعني ما سبق عمليًا؟ إذا كنت تُحضِّر لمعاملة صفحات أرشيف التصنيف الرئيسي عندك كصفحات هبوط (landing pages)، فعليك اتباع الخيار الأول؛ فلنقل أنَّ لديك صفحة أرشيف لتصنيفٍ ما في http://www.example.com/topics/restaurant-seo وأردت أن تكون الصفحة الرئيسية لذاك الموضوع على موقعك. ففي الحالة السابقة، عليك حتمًا أن تُخصِّص مظهر صفحة الأرشيف نفسها، وتجعلها محببة للمستخدمين؛ وهذا يتضمن عرض نص إضافي (مثلًا: وصف التصنيف الذي تحدثنا عنه سابقًا)، أو توفير قوالب مختلفة لمختلف التصنيفات، وعرض مقتبسات من المنشورات بدلًا من عرض المنشورات كلها. وستود أيضًا التحكم في كيفية معاملة محركات البحث لتلك الصفحة؛ ففي هذا المثال، ربما تريد أن تتأكد أنَّ الصفحة الرئيسية الموجودة في ‎/topics/restaurant-seo مُفهرسة وسيتم اتباع جميع الروابط فيها، وعليك أن تتأكد أنَّ الصفحات الفرعية مثل ‎/topics/restaurant-seo/2 غير مفهرسة. وبهذا ستحصل على أفضل نتيجة: إذ أنَّ مستخدميك قادرون على تصفحك ما يشاؤون، وستُبرِز محركات البحث المحتوى الذي تريد. إضافات SEO القوية مثل All in One SEO Pack تمنحك الكثير من الخيارات للتحكم بإعدادات nofollow و noindex، بالإضافة إلى تحكم دقيقة بآلية توليد خريطة الموقع (sitemap). إن لم تكن تريد أن تُخصِّص مجهودًا لصفحات أرشيف التصنيف، فاستعمل خيارَي noindex و nofollow لكي تجعل محتوى موقعك الرئيسي يجذب محركات البحث دون "مساعدة". إدارة الوسوم أولى الأمور التي يجب الإشارة إليها فيما يتعلق بالوسوم هي أنَّك لستَ مُجبرًا على استعمالها في كل منشور، العامل الحاسم الحاكم لاستعمالها هو القيمة التي تظن أنَّها ستقدمها لزوار موقعك، دون أن تحاول "العبث" مع محركات البحث. اتبع الإرشادات الآتية عند إضافة الوسوم إلى المحتوى: قلل عدد الوسوم في كل منشور إلى خمسة فقط: تُربِك الوسوم الكثير الزوار. فكر مليًا في كل وسم على حدة وتأكد أنَّه يشير إلى شيءٍ محدَّدٍ ومفيد. لا تكرر الأسماء في التصنيفات والوسوم: وذلك لتنظيم الموقع، ولتبسيط الأمر على المستخدمين. أبقِ أسماء الوسوم قصيرةً: حاول أن تكون ثلاث كلمات على الأكثر. استعمل نمطًا موحدًا من الأحرف الكبيرة: مثلًا، Hsoub Academy ليست مثل hsoub academy، وهذه المشكلة تخرج عن السيطرة في المواقع الكبيرة، لذلك عليك تحديد نمط معيّن والالتزام به دومًا. تأكد أنَّ الوسوم مستخدمة: فلن تستفيد من وسم مستخدم في منشور وحيد؛ يجب أن يكون هنالك من ثلاثة إلى خمسة منشورات يمكن إضافة الوسم إليها قبل إنشاءه. وكما في التصنيفات، يمكنك إضافة الوسوم عند تحرير المنشورات، أو تستطيع إدارتها مباشرةً عبر الصفحة: المقالات > الوسوم وكما ترى في الصورة السابقة، لديك خياراتٌ مشابهة لخيارات إدارة التصنيفات. أمر صفحات أرشيف الوسوم مشابهٌ لما جاء في صفحات أرشيف التصنيفات، ربما تستعمل إضافةً مثل All in One SEO Pack للتحكم في الفهرسة والتتبع. الخلاصة قد يكون موضوع التصنيفات والوسوم مربكًا لك في البداية، لكنك ستستطيع بعد فترةٍ أن تستعملها بسهولة عبر التفكير المنطقي بوظيفتها. يمكنك استعمال التصنيفات لإضافة هيكلية إلى منشوراتك ولإعطاء المستخدمين فكرة واضحة عن المكان الذي سيعثرون فيه عن محتوى مشابه. استعمل الوسوم للإشارة إلى بعض الأمور المشتركة بين منشوراتٍ مختلفة الموضوع. عندما يأتي الأمر إلى المخاوف من SEO، فلا تُدخِل نفسك في دوامة، اتخذ قرارًا حول تحضيرك لإبراز صفحات الأرشيف ثم عدِّل القوالب، واستعمل الوسوم بحكمة لإضفاء طابع من التناغم. إن كانت لديك أيّة أسئلة أو استفسارات حول التصنيفات والوسوم، فاترك تعليقًا وسنحاول جاهدين مساعدتك. ترجمة -وبتصرّف- للمقال Using Categories and Tags Effectively in WordPress لصاحبه Tom Ewer.
  5. تعرّفنا في الدرس السابق على تطبيق حفظ وتنظيم الملاحظات Evernote، وبدأنا بتعلّم كيفية إنشاء الملاحظات وإضافة مختلف العناصر إليها كالصور، المستندات، الجداول، الملفات الصوتية، إلخ، بالإضافة إلى كيفية تحرير وحذف الملاحظات. سنواصل في هذا الدرس تعلّم المزيد حول Evernote وسنغطّي كيفية تنظيم الملاحظات باستخدام دفاتر الملاحظات والوسوم. تنظيم الملاحظات بواسطة دفاتر الملاحظات دفتر الملاحظات هو عبارة عن مجموعة ملاحظات. ويأتي مع Evernote عند التنصيب دفتر ملاحظات افتراضي باسم "First Notebook" ستُحفظ فيه، وبشكل افتراضي، كل الملاحظات التي تقوم بإنشائها إن لم تحدّد غيره عند إنشاء الملاحظة. تُعتبر دفاتر الملاحظات من الأدوات المفيدة جدًا في تنظيم الملاحظات وخلق بيئة منظمة للعمل عليها بكفاءة. بإمكانك إنشاء دفتر ملاحظات لاحتواء الملاحظات ذات الصلة. على سبيل المثال، دفتر لملاحظات مدونتك، مشروعك، رحلاتك، مواعيدك اليومية، الأسبوعية، إلخ. إنشاء دفتر ملاحظات مرر الفأرة فوق Notebooks في الشريط الجانبي ثم انقر على أيقونة +: قم بإدخال اسم دفتر الملاحظات في حقل Notebook Name ثم انقر على OK. بعد إنشاء دفتر الملاحظات، بإمكانك أن تبدأ بنقل الملاحظات إليه. إذا رغبت بنقل الملاحظة مع الاحتفاظ بنسخة منها في دفتر الملاحظات المصدر، انقر بزر الفأرة الأيمن على الملاحظة واختر Copy to Notebook: في مربع الحوار Copy Note to Notebook، حدّد دفتر الملاحظات الذي تريد نسخ الملاحظة إليه، ثم قم بتأشير الخيار Preserve created and updated dates إذا رغبت في الحفاظ على نفس تاريخ إنشاء/تحديث الملاحظة الأصلية، والخيار Preserve tags إذا رغبت في الحفاظ على نفس وسوم الملاحظة الأصلية، ثم انقر على Copy: أما إذا كنت تريد نقل الملاحظة من دفتر إلى آخر دون الاحتفاظ بالنسخة الأصلية انقر بزر الفأرة الأيمن على الملاحظة ثم اختر Move to Notebook: بنفس الطريقة حدّد دفتر الملاحظات الذي تريد نقل الملاحظة إليه ثم انقر على Move. بإمكانك أيضًا نقل الملاحظات إلى دفتر ملاحظات محدّد باستخدام خاصية السحب والإفلات. إذا رغبت في تغيير اسم دفتر الملاحظات انقر عليه بزر الفأرة الأيمن واختر Rename ثم أدخل الاسم الجديد. هناك أيضًا خيار لتغيير نمط اسم دفتر الملاحظات، كاللون أو السمك ويتم ذلك بالنقر بزر الفأرة الأيمن على دفتر الملاحظات واختيار Style: ملاحظة: إذا كنت تستخدم إصدار الشركات من التطبيق، Evernote Business، سيتم تصنيف دفاتر الملاحظات إلى فئتين: دفاتر الملاحظات الشخصية Personal Notebooks ودفاتر ملاحظات العمل/الشركة Business Notebooks. هناك خيار لتحويل أي دفتر ملاحظات تريده إلى دفتر الملاحظات الافتراضي، ويمكن القيام بذلك بالنقر بزر الفأرة الأيمن على دفتر الملاحظات واختيار Properties: من مربع الحوار Notebook Properties قم بتأشير الخيار Make this my default notebook: إنشاء حزمة دفاتر ملاحظات Stack الحزم هي أيضًا من الأدوات المفيدة في تنظيم الملاحظات. فإذا كنت تستخدم الكثير من دفاتر الملاحظات، بإمكانك إنشاء حزمة لجمع دفاتر الملاحظات ذات الصلة. على سبيل المثال، عندما تعمل على مشروع معيّن، قم بإنشاء دفاتر ملاحظات لتضم ملاحظات كل مرحلة من مراحل المشروع، أي مرحلة الفكرة، التصميم، اللإطلاق، إلخ، ثم اجمع دفاتر الملاحظات هذه في حزمة وقم بتسمية الحزمة باسم المشروع. بهذه الطريقة تكون ملاحظاتك منظمة، وفي نفس الوقت تكون سهلة البحث والوصول. لإنشاء حزمة، انقر فوق دفتر الملاحظات، ثم اسحبه وأفلته فوق دفتر ملاحظات آخر ذا صلة به وسيتم إنشاء الحزمة مباشرة. قم بتغيير اسم الحزمة بالنقر على بزر الفأرة الأيمن واختيار Rename: بعد ذلك انقل دفاتر الملاحظات ذات الصلة إلى الحزمة الجديدة التي أنشأتها باستخدام السحب والإفلات (أو النقر بزر الفأرة الأيمن على دفتر الملاحظات واختيار Add to Stack ثم تحديد الحزمة المرغوبة). تصنيف الملاحظات بواسطة الوسوم تعمل الوسوم بنفس طريقة عمل دفاتر الملاحظات، فهي تستخدم لتنظيم الملاحظات وجعلها قابلة للتصفية والبحث وكذلك سهلة الوصول. يمكنك إضافة ما يصل إلى 100,000 وسم واستخدامها لتصنيف ملاحظاتك. كما يمكنك أن تربط الملاحظة بأكثر من وسم بشرط ألّا يتجاوز عدد الوسوم للملاحظة الواحدة 100 وسم. هناك عدة طرق لإضافة وسم جديد، نذكر منها طريقتين: إمّا بتمرير مؤشر الفأرة فوق Tags ثم النقر على أيقونة + وإدخال عنوان الوسم: أو بالنقر على Add Tag من نافذة إنشاء/تحرير الملاحظة ثم إدخال عنوان الوسم، وهذه الطريقة سريعة ومباشرة إذا رغبت في إضافة وسم جديد عند إنشاء الملاحظة: لإضافة وسم موجود مسبقًا إلى ملاحظة معيّنة، انقر على Add Tag ثم اكتب أول حرف من عنوان الوسم، ستظهر قائمة الوسوم التي تبدأ بذلك الحرف، اختر الوسم المطلوب منها: ولحذف وسم من ملاحظة معيّنة، قم بفتح الملاحظة ثم انقر على أيقونة × التي تظهر عند تمرير مؤشر الفأرة فوق الوسم الذي تريد حذفه (سيحذف الوسوم من الملاحظة وليس من قائمة الوسوم): أمّا إذا كنت تريد حذف الوسم من قائمة الوسوم وبشكل نهائي، انقر عليه بزر الفأرة الأيمن واختر Delete: تجميع الوسوم ذكرنا سابقًا أنّه بالإمكان تجميع دفاتر الملاحظات ذات الصلة في حزمة واحدة، بنفس الطريقة يمكننا تجميع الوسوم ذات الصلة في فئة واحدة. يمكنك إنشاء فئات متداخلة في بعضها البعض وحسب طريقتك في تنظيم الوسوم. توضح الصورة أدناه مثالًا على تجميع الوسوم: كما تلاحظ لدينا 4 فئات من الوسوم: "عامة"، "لغات"، "مرفقات"، و"مشاريع". وتندرج تحت كل فئة فئات أخرى لتصنيف الوسوم. على سبيل المثال تقسم فئة "مرفقات" إلى فئة "Doc" و "صور". وتندرج تحت فئة "Doc" الوسوم "PDF"، "اكسل"، ...إلخ. قد تتساءل ما الفائدة من هذا التداخل في الوسوم؟ لنفترض أنّك ترغب في البحث عن الملاحظات الموسومة بوسم معيّن. عندما تكون لديك المئات (وربما الآلاف) من الوسوم ستضيّع وقتك الثمين في البحث عن الوسم المرغوب من بين مئات الوسوم. وبالرغم من أنّ الوسوم ترتب في القائمة حسب الحروف الأبجدية، إلّا أنّ عمل تداخل في الوسوم وتصنيفها إلى فئات سيسهّل عملية البحث أكثر ويوفّر عليك الكثير من الوقت. لا تختلف الفئات الرئيسية للوسوم عن الوسوم، أي أنّ فئة "مرفقات" هي وسم أيضًا وقمنا بإنشائها بنفس طريقة إنشاء الوسوم. فإذا كنت تريد إنشاء فئة رئيسية انقر على أيقونة + بجانب Tags ثم أدخل اسمها. ولإنشاء وسم داخل هذه الفئة انقر على الفئة الرئيسية بزر الفأرة الأيمن واختر Create Tag in: إذا كانت لديك وسوم مسبقًا بإمكانك إضافتها إلى فئة الوسوم باستخدام خاصية السحب والإفلات. لاحظ (في الصورة أدناه) كيفية إضافة الوسم "لقطة شاشة" إلى فئة "صور": بعض الأمثلة على الوسوم استخدم وسومًا مثل "قيد التنفيذ"، "مكتمل"، "مؤجل"، إلخ لتصنيف ملاحظات مشاريعك أو مهامك حسب حالتها. إذا كنت مدونًا، استخدم وسومًا مثل "نصائح"، "أدلة"، "شروحات" لتصنيف ملاحظات مقالاتك حسب نوع المقال. إذا كان لديك منتج، خدمة أو شركة، استخدم أسماء عملائك كوسوم لتصنيف الملاحظات التي تتعلق بالعملاء. بإمكانك أيضًا استخدام أسماء الفرق "التخطيط"، "التصميم"، "المبيعات"، إلخ لتصنيف الملاحظات المرتبطة بكل فريق. بإمكانك استخدام أسماء الأشهر والسنوات مثل "سبتمبر"، "يناير"، "2013"، "2015" لتصنيف ملاحظات الأحداث أو الاجتماعات التي حدثت في تلك الأوقات. إذا كنت طالبًا، بإمكانك استخدام أسماء المحاضرات أو الدروس، مثل "الرياضيات"، "البرمجة"، "اللغة الإنجليزية"، وغيرها لتصنيف الملاحظات الخاصة بكلّ منها. ملاحظة: إذا كنت تستخدم أحد دفاتر الملاحظات أو الوسوم بشكل متكرر، بإمكانك إضافته إلى شريط الاختصار Shortcut bar بالنقر عليه بزر الفأرة الأيمن واختر Add to Shortcuts (أو سحبه وإفلاته في شريط الاختصار). وينطبق الأمر نفسه على الملاحظات التي ترجع إليها مرارًا وتكرارًا:
  6. بعد إنشاء متجرك الإلكتروني على WooCommerce وتهيئته و ضبط إعداداته (راجع الدروس السابقة)، ستكون خطوتك الأولى هي إنشاء المنتجات. لكن قبل أن نشرع في الحديث عن أنواع المنتجات وكيفية إنشائها، لنتعرّف أولا على كيفية إدارة فئات/تصنيفات المنتج Categories، الوسوم Tags، فئات الشحن Shipping Classes، والسّمات Attributes. فئات المنتج Product Categories على غرار فئات المنشورات على ووردبريس، بإمكانك إضافة فئات لتصنيف المنتجات، حذفها أو تعديلها. هناك بعض الخيارات الإضافية المتعلّقة بفئات المنتجات، وكذلك إمكانية رفع صور لتمثل الفئات. لإنشاء فئة جديدة اذهب إلى: Dashboard > Products > Categories من هذه النافذة تستطيع إنشاء فئات لإضافة منتجات إليها لاحقًا. علمًا أنّه يمكنك إنشاء الفئات أثناء إنشاء المنتجات أيضًا، لكن لن تملك التحكّم الكامل في خيار slug، الفئات الرئيسية Parent Categories، إلخ. في حقل Name قم بإدخال اسم الفئة، وفي حقل Slug قم بإدخال جزء العنوان URL لهذه الفئة. إذا لم تقم بإدخال slug مخصص سيقوم ووردبريس باستخدام اسم الفئة تلقائيًا عندما تنقر على Add New Product Category عند الانتهاء. إذا كانت لديك فئات رئيسية وفئات فرعية (مثلا فئة "ملابس" رئيسية وفئة "أقمصة" فرعية) يمكنك إدخال الفئة الفرعية ضمن الفئة الرئيسية من قائمة Parent. من هذه القائمة اختر الفئة الرئيسية (يُفترض أنّك قمت بإنشائها مسبقًا)، أو اختر الخيار None إن لم يكن لديك فئات متداخلة. في حقل Description قم بإدخال وصف للفئة، وهذا الخيار مفيد إذا كنت ستوفّر طريقة لبيع المنتجات حسب الفئة. عادة ما يُعرض الوصف على العملاء عندما يقومون بتصفّح المنتجات حسب الفئات، مع ذلك يعتمد الأمر على إعداداتك والقالب الذي تستخدمه. من قائمة Display Type اختر طريقة عرض الفئات على العملاء. يمكنك استخدام الخيار الافتراضي Default الذي سيعرض جميع المنتجات من جميع الفئات الفرعية، الخيار Products الذي سيعرض المنتجات فقط على صفحة الفئة، الخيار Subcategories الذي سيعرض قائمة من المنتجات الفرعية وعدد المنتجات التي تحتويها، أو الخيار Both الذي سيعرض كلّ من الفئات الفرعية في الأعلى، والمنتجات في الأسفل. وأخيرا يمكنك رفع صورة مصغّرة للفئة بالنقر على زر Upload/Add Image. وهذا الخيار مفيد إذا اخترت خيار Subcategories من طريقة العرض، حيث سيعرض قوائم من الصور المصغّرة لجميع الفئات الفرعية عند عرض الفئات مع الفئات الفرعية: وكذلك ستمثّل هذه الصورة المصغّرة الفئة عند عرض الفئات بالشكل المعتاد: بعد الانتهاء من تعديل جميع الخيارات انقر على Add New Product Category لإضافة الفئة. الوسوم Tags تعمل الوسوم بنفس طريقة عمل وسوم منشورات ووردبريس العادية. لإضافة وسم انقر على Tags من قائمة Products ثم قم بإدخال اسم الوسم في حقل Name، و slug مخصص في حقل Slug ووصف الوسوم في حقل Description: يمكن أن تكون الوسوم مفيدة إذا رغبت في توفير طريقة لتصفّح المنتجات باستخدام الوسوم، حيث يمكن إضافتها إلى قوائم التصفّح ويمكن حتّى أن تظهر على المنتجات نفسها. انقر على Add New Product Tag لحفظ الوسم. فئات الشحن Shipping Classes يمكن أن تُستخدم هذه الفئات لجمع المنتجات المتشابهة لغرض حساب سعر الشحن. لإضافة فئة شحن جديدة انقر على Shipping Classes من قائمة Products: تُستخدم هذه الفئات من قبل طرق الشحن الأساسية التي تم تحديدها ضمن إعدادات الشحن (مثل Flat Rate Shipping) أو طرق الشحن الاستثنائية premium (مثل Table Rate Shipping) لغرض المساعدة على إنشاء كُلف الشحن. على سبيل المثال لنقم بإضافة فئة شحن باسم "Book" لتساعدنا على إنشاء قواعد شحن خاصّة بمنتجاتنا من الكتب. في حقل Name قم بإدخال اسم فئة الشحن (وهو Book في مثالنا)، ثم أدخل slug هذه الفئة في حقل Slug، وضمّنها في الفئة الرئيسية إن وجدت باختيار الفئة الرئيسية من قائمة Parent، وأخيرًا اكتب الوصف المرغوب. بعد ذلك انقر على زر Add New Shipping Class لحفظ الفئة. السمات Attributes تُستخدم السمات لتعريف بيانات إضافية للمنتج كاللون، الحجم، الوزن، إلخ ومن ثم استخدامها عند إنشاء المنتجات. وهي مفيد ومطلوبة عند إنشاء المنتجات المتنوّعة variable على وجه الخصوص: يجب أن تأخذ في الاعتبار عند إنشاء السمات أنّه بعد إنشائها لن تتمكن من إعادة تسميتها لاحقًا. لنفترض أننا نبيع القمصان فقط في متجرنا، لذلك سنقوم بإنشاء سمة "Size" خاصة بالأحجام المختلفة. في حقل Name أدخل اسم السمة (وهو "Size" في هذا المثال)، ثم أدخل slug مخصص في حقل Slug. قم بتأشير الخيار Enable Archive لتفعيل صفحة أرشفة لهذه السمة، ثم حدد كيفية اختيار السمة من قائمة Type. بإمكانك تحديد طريقة الاختيار بالتحديد Select أو بإدخال نص يدويًا Text. استخدم Select إذا كنت ستقوم بإعداد المفردات terms مسبقًا في قائمة منسدلة (أي في هذا المثال نقوم بإعداد قائمة منسدلة تحتوي على الأحجام المختلفة المتوفرة). من قائمة Default Sort Order حدد طريقة فرز المفردات في قائمة السمة على الواجهة الأمامية لمتجرك. الخيارات المتوفرة هي ترتيب مخصّص Custom Order، أبجديًا حسب الاسم Name، أو حسب التسلسل (الرقمي) Name numeric، أو حسب الرمز التعريفي للمفردة Term ID. بإمكانك استخدام الترتيب المخصص لتتمكنّ من ترتيبها بسهولة بالسحب والإفلات. انقر على Add Attribute لكي تتمكّن من إضافة مفردات السمة. انقر على أيقونة الترس بجانب اسم السمة لإعداد مفرداتها. في حقل Name قم بإدخال اسم المفردة الأولى للسمة. في هذا المثال سنقوم بإضافة ثلاثة أحجام: صغير، متوسط، وكبير. لذلك سيكون اسم المفردة "Small". بعد ذلك قم بإدخال slug مخصص، وحدد السمة الرئيسية التي تتضمّن هذه السمة، إن وجدت، من قائمة Parent، ثم أدخل وصفًا مختصرًا في حقل Description. في العادة لا يظهر وصف السمة، لكن بعض القوالب توفر إمكانية عرضه. بعد ذلك انقر على زر Add New لإضافة مفردات جديدة. بعد إضافة جميع المفردات قم بترتيبها بسحب كل مفردة وإفلاتها عند الموضع المرغوب. بعد الانتهاء من إعداد جميع فئات المنتجات، الوسوم، فئات الشحن، والسمات، حان الوقت لتبدأ في إنشاء منتجاتك. تابع الدرس القادم لتتعرف على أنواع المنتجات وكيفية إنشائها.
  7. هل تحاول متابعة آخر التحديثات لعدِّة مشاريع على GitHub؟ إذًا أنت لست حديث العهد باستقبال العديد من الإشعارات حول: التبليغ عن العلل، ونشر تعليقات، وقبول طلبات إضافة (pull requests). تتطلب بعض الأمور السابقة تدخلًا منك، وعليك أن تعلم عن بعضها الآخر، والباقي مجرد ضوضاء. هذه مُرشِّحات (filters) لبريد Gmail التي أستعملها لكي أحصل على الإشعارات المفيدة بسرعة. لدى GitHub مركز إشعارات خاص به يسمح بترشيح الإشعارات لكل مشروع، بالإضافة إلى إظهار الإشعارات للأشياء التي تُشارِك فيها فقط. وكل إشعار له أيقونة خاصة به تُحدِّد ما إن كان مشكلةً أو طلبَ دمجٍ وسواءً بقي مفتوحًا/أو لم يُدمَج بعد. هذا مفيدٌ حقًا، ويقلل الوقت اللازم لتفقد اللائحة كل يوم؛ على سبيل المثال، ربما تريد تخطي المشكلات التي تم إغلاقها أو الطلبات التي تم دمجها، وتتطلع بسرعة على المشكلات التي لم تُذكَر فيها، وتُركِّز على ما أنت مشاركٌ فيه. ماذا لو كنت تفضل التعامل مع الإشعارات عبر البريد الإلكتروني؟ أنا أفضل أن يكون كل شيءٍ موجودًا في مكانٍ واحد في صندوق الوارد. لكني سأفوت على نفسي كل الميزات الموفرة للوقت التي يعطيني إياها مركز الإشعارات. لن يكون المرور على الإشعارات واحدًا واحدًا ذا إنتاجيةٍ عالية. لكن لحسن الحظ، يمكن جلب بعض ميزات مركز الإشعارات إلى بريدك الإلكتروني باستعمال "المرشحات" (filters)، وهذه هي المرشحات التي أستعملها مع Gmail. وسم جميع الإشعارات من GitHub لأنني أستقبل عددًا كبيرًا من الرسائل من GitHub، فأحب أن أوسمها (tag) جميعًا كي أميز بينها وبين الرسائل الأخرى بسهولة؛ ومن النادر أن تكون إشعارات GitHub ذات أولويةً عالية، ووسمها كلها سيسمح لي بإخفائها بسهولة كي أتأكد أنني لم أفوِّت رسالةً مهمةً. لضبط ما سبق، رشِّح حقل "From:‎" للبريد "notifications@github.com"، يبدو هذا في Gmail كالآتي: from:(notifications@github.com) التكليفات أحاول أن أهتم بما أنا مكلفٌ به، ولهذا أعلِّم تلك الرسائل بوسم "Assignment"، وعندما أكون مشغولًا، أنظر إلى هذه القائمة فقط لكي أتأكد أنَّ كل شيءٍ أنا مسؤولٌ عن إنجازه قد أُنجِز. عندما يُسنِد أحدهم مشكلةٍ إليك، فسيُرسِل GitHub تنبيهًا، ويمكن تعليم (أو توسيم) كامل الموضوع (thread) كتكليفٍ إليك عبر مطابقة هذه الرسالة التنبيهية. سيبدو مُرشِّح Gmail كالآتي (ابحث عن معرفك@ Assigned to): from:(notifications@github.com) Assigned to @pazdera هنالك بعض المحدوديات لهذه الطريقة لسوء الحظ، فلن يُرسَل إليك إشعارٌ إن أسندتَ المشكلة إلى نفسك ولن يُوسَّم الموضوع بشكلٍ صحيح في هذه الحالة؛ وإن أعيد إسناد المشكلة إلى شخصٍ آخر، فسيبقى الموضوع موسمًا على أنك مكلّف بالمشكلة. ذكر معرفك (Mentions) ربما هذا المرشح هو أكثرهم فائدةً لأنه يسمح لك برؤية الرسائل التي ذُكِرتَ فيها دون الحاجة إلى النظر إلى جميع الرسائل غير المهمة بحثًا عن مُعرِّفك على GitHub، فستعلم تمامًا أين طُلِبَت مداخلتك. استعمل مُرشِّحًا يطابق مُعرِّفك على GitHub في جسد الرسالة كما يلي: from:(notifications@github.com) @pazdera طلب pull request تم دمجه Merged لن تكون -في أغلب الأوقات- هنالك حاجةٌ لمداخلتك عندما يُدمج طلب Pull Request ويمكنك تجاوزها في أغلب الأحيان (خصيصًا إن لم تُذكَر في النقاش في طلب Pull Request ‏[PR]). يُرسِل GitHub إشعارًا يمكِّنك من إنشاء مُرشِّح لتوسيم الموضوع (thread) على أنه Merged. from:(notifications@github.com) Merged للأسف، لا يوجد دعم للتعابير النمطية (regular expressions) في Gmail، ولهذا سيُطابِق المرشح السابق التعليقات التي يذكر فيها صاحبها الكلمة "Merged". لكن -وإن كان يبدو ذلك مشكلةً كبيرةً- من النادر حدوث ذلك حسب تجربتي. مشكلة تم إغلاقها Closed في نهاية المطاف، من المفيد -عندما تُغلق مشكلة- أن تعرف عن ذلك دون الحاجة إلى النقر على الرسالة لفتحها. أستعمل المُرشِّح الآتي لتعليم كل تلك الرسائل للحذف مباشرةً. from:(notifications@github.com) Closed \# هذه هي المرشحات الخمسة التي تساعدني في التخلص من الكم الكبير من تنبيهات GitHub في بريدي. ما الذي تستعمله كيلا تقضي ساعاتٍ في بريدك؟ شارك ذلك في التعليقات أدناه. ترجمة -وبتصرّف- للمقال ‎5 Useful Gmail Filters for GitHub Users لصاحبه Radek Pazdera.
  8. تحتاج أغلب الشركات العاملة على الشبكة للانطلاق في التسويق بالمحتوى. يُعرَّف التسويق بالمحتوى بأنه "مقاربة تسويق ترتكز على إنتاج محتوى جيد، مناسب وذي قيمة ثم توزيعه من أجل جذب فئة محدّدة بدقة والحفاظ عليها، وفي آخر المطاف الحصول على إجراء ذي مردود ربحي من الزبون". هذا الدرس جزء من سلسلة تعلم Laravel والتي تنتهج مبدأ "أفضل وسيلة للتعلم هي الممارسة"، حيث ستكون ممارستنا عبارة عن إنشاء تطبيق ويب للتسوق مع ميزة سلة المشتريات. يتكون فهرس السلسلة من التالي: مدخل إلى Laravel 5.تثبيت Laravel وإعداده على كلّ من Windows وUbuntu.أساسيات بناء تطبيق باستخدام Laravel.إنشاء روابط محسنة لمحركات البحث (SEO) في إطار عمل Laravel.نظام Blade للقوالب.تهجير قواعد البيانات في Laravel. استخدام Eloquent ORM لإدخال البيانات في قاعدة البيانات، تحديثها أو حذفها. إنشاء سلة مشتريات في Laravel.الاستيثاق في Laravel. إنشاء واجهة لبرمجة التطبيقات API في Laravel.إنشاء مدوّنة باستخدام Laravel. (هذا الدرس)استخدام AngularJS واجهةً أمامية Front end لتطبيق Laravel.الدوّال المساعدة المخصّصة في Laravel.استخدام مكتبة Faker في تطبيق Laravel لتوليد بيانات وهمية قصدَ الاختبار. نفرض مثلا أنك طورت مشروع Larashop لبيع الملابس على الشبكة. يقوم مبدأ التسويق عبر المحتوى على التأسيس لنفسك بوصفك خبيرا في المجال، فتكتُب - مثلا - عن الملابس وكيفية اختيارها والحفاظ عليها وتقدم نصائح لزوار موقعك؛ مما يرفع من احتمالات الشراء من متجرك، وهو ما يمثل قيمة تجارية للموقع. تعمل مدونات المؤسسات على تنفيذ هذا المبدأ فتنشر محتوى مناسبا لجمهورها مما يكون له الأثر الإيجابي على المؤسسة أو الشركة. لا يقتصر المحتوى المنشور في المدونة على المحتوى الكتابي بل يتعداه للمرئي مثل مقاطع الفيديو، الصوتيات والصور. يغطي الدرس المواضيع التالية: أهم خاصيات المدونةالمنشورالتصنيفاتالوسوم Tagsعوامل التحسين لمحركات البحثعنوان المنشوروصف Metaدور الشبكات الاجتماعيةتهجيرات قاعدة البيانات الخاصة بمدونة Larashop.خصائص المدونةنذكر في هذه الفقرة الخصائص التي نريد تواجدها في مدونتنا. المنشورات Postsيتمثل المحتوى الأساسي للمدونة في المنشورات، إذ تحوي المعلومات التي نريد نشرها. سنحصُل على المنشورات من قاعدة البيانات وسنستخدم HTML لتهيئتها. التصنيفاتتُستخدَم التصنيفات لتجميع المنشورات ذات القاسم المشترك. مثلا يمكن أن تنشئ تصنيفا لملابس الرجال، آخر للملابس النسائية وثالث لملابس الأطفال وهكذا. الوسومتشبه الوسوم التصنيفات، إلا أنها أكثر تخصيصا. يمكنك مثلا إنشاء وسم للملابس الشتوية ثم وضعه على جميع المنشورات بغض النظر عن تصنيفها. يمكن للمنشور الواحد أن يرتبط بأكثر من وسم؛ يمكن أن تضيف للمنشور وسما بنوعية القماش المستخدم، وآخر للفصل المناسب لارتدائه. عوامل التحسين لمحركات البحثلا نريد لمنشوراتنا أن تظهر في آخر صفحة من مليون نتيجة في محركات البحث، سيكون جيدا أن نظهر في الصفحة الأولى لذا يجب الاهتمام بالتحسين لمحركات البحث، راجع مقال إنشاء روابط محسنة لمحركات البحث (SEO) في إطار عمل Laravel 5. بالنسبة لمدونتنا فسنهتم بالعاملين: عنوان المنشور، وهو العنوان الذي سيظهر في محركات البحث، يُستحسن ألا يتعدى 56 محرفا.وصف Meta، يظهر تحت العنوان في نتيجة محركات البحث. من الأفضل ألا يتعدى 160 محرفا.التهجيرات الخاصة بمنشورات مدونة Larashopحان الآن وقت التنفيذ. في ما يلي جداول قاعدة البيانات التي نحتاج لإنشائها للمدونة. الحقول التالية مشتركة بين جميع الجداول التسلسل الحقل نوع البيانات الوصف1created_atTimestampختم زمني لوقت إنشاء التسجيلة2updated_atTimestampختم زمني لوقت تحديث التسجيلةجدول تصنيفات المدونةالتسلسل الحقل نوع البيانات الوصف1idINTمعرّف التصنيف، مفتاح رئيس2categoryVARCHARاسم التصنيفجدول وسوم المدونةالتسلسل الحقل نوع البيانات الوصف1idINTمعرّف الوسم مفتاح رئيس2tagVARCHARاسم الوسمجدول الوسوم والمنشورات: بما أنه يمكن أن يكون للمنشور أكثر من وسم، فيجب إنشاء جدول خاص للربط بين الوسم والمنشور.التسلسل الحقل نوع البيانات الوصف1idINTمعرّف الحقل، مفتاح رئيس2post_idINTمفتاح خارجي إلى معرّف المنشور3tag_idINTمفتاح خارجي إلى معرّف الوسمجدول المنشوراتالتسلسل الحقل نوع البيانات الوصف1idINTمعرّف المنشور، مفتاح رئيس2urlVarchar(255)رابط المنشور3titleVarchar(140)عنوان المنشور4descriptionVarchar(170)وصف المنشور5contentTextمحتوى المنشور6blogTinyint(1)يحدد طبيعة المنشور7category_idINTمعرّف تصنيف المنشور، مفتاح خارجي8imageVarchar(255)رابط صورة المنشورملف التهجير الخاص بمنشورات المدونةأنشأنا في درس تهجير قواعد البيانات فيLaravel 5 ملف التهجير الخاص بالمنشورات إلا أننا لم نضف معرف التصنيف category_id ولا صورة المنشور image؛ سننشئ في هذا الدرس ملف تهجير لإضافة هذين الحقلين. نفذ الأمر التالي في مجلد التطبيق: php artisan make:migration add_category_id_image_to_posts --table=postsافتح ملف التهجير المنشأ بالأمر السابق وعدله ليصبح كالتالي: <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddCategoryIdImageToPosts extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('posts', function (Blueprint $table) { $table->string('image')->nullable()->after('content'); $table->unsignedInteger('category_id')->nullable()->after('blog'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropColumn('image'); $table->dropColumn('category_id'); }); } } نضيف حقلا جديدا لصورة المنشور، يُضاف الحقل بعد حقل المحتوى content ويمكن أن يكون فارغا: $table->string('image')->nullable()->after('content');نضيف أيضا حقلا لمعرِّف التصنيف بعد حقل blog $table->unsignedInteger('category_id')->nullable()->after('blog');نفذ الأمر التالي لشغيل ملف التهجير وإضافة الحقول: php artisan migrateملف التهجير الخاص بتصنيفات المدونةننتقل الآن لملف التهجير الذي سيتولى إنشاء جدول تصنيفات المنشورات. سنستخدم هذا الملف أيضا لإدراج تسجيلات في الجدول، كل تسجيلة تمثل تصنيفا: php artisan make:migration blog_categoriesعدل ملف التهجير كالتالي: <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class BlogCategories extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('blog_categories', function (Blueprint $table) { $table->increments('id'); $table->string('category')->unique(); $table->timestamps(); }); DB::table('blog_categories')->insert([ 'category' => "WOMEN" ]); DB::table('blog_categories')->insert([ 'category' => "MEN" ]); DB::table('blog_categories')->insert([ 'category' => "KIDS" ]); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('blog_categories'); } } ملف التهجير الخاص بالوسومالخطوة التالية هي إنشاء تهجير لوسوم المدونة: php artisan make:migration blog_tagsعدل ملف التهجير كالتالي: <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class BlogTags extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('blog_tags', function (Blueprint $table) { $table->increments('id'); $table->string('tag')->unique(); $table->timestamps(); }); DB::table('blog_tags')->insert([ 'tag' => "Pink" ]); DB::table('blog_tags')->insert([ 'tag' => "T-Shirt" ]); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('blog_tags'); } }ملف التهجير الخاص بربط المنشورات والوسومآخر ملف من ملفات التهجير هو الملف الخاص بجدول الوسوم-المنشورات. ننشئه بالأمر التالي: php artisan make:migration blog_post_tagsعدّل الملف على النحو التالي: <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class BlogPostTags extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('blog_post_tags', function (Blueprint $table) { $table->increments('id'); $table->unsignedInteger('post_id'); $table->unsignedInteger('tag_id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('blog_post_tags'); } }أنشأنا ملفات التهجير، ننفذ أمر migrate لتطبيق التهجيرات: php artisan migrateملحوظة: يجب دائما البدء بتهجيرات الجداول التي لا تحتاج لجداول أخرى، بمعنى أنه لا توجد بها مفاتيح خارجية Foreign keys. لتهجير جدول به مفتاح خارجي لجدول آخر يجب أن يكون هذا الجدول الأخير قد تم إنشاؤه. بذر جدول منشورات المدونةسنستخدم مكتبة Faker لإضافة منشورات وهمية نختبر بها مدونتنا. نفذ الأمر التالي لإنشاء ملف بذر لمنشورات المدونة: php artisan make:seeder BlogPostsTableSeederافتح الملف database/seeds/BlogPostsTableSeeder.php وعدله ليصبح كما يلي: <?php use Illuminate\Database\Seeder; class BlogPostsTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); for ($i = 0; $i < 10; $i++){ DB::table('posts')->insert([ //, 'url' => $faker->unique()->word, 'title' => $faker->unique()->sentence($nbWords = 6), 'description' => $faker->paragraph($nbSentences = 3), 'content' => $faker->text, 'image' => $faker->randomElement($array = array ('blog-one.jpg','blog-two.jpg','blog-three.jpg')), 'blog' => '1', 'category_id' => $faker->numberBetween($min = 1, $max = 3), ]); } } }نولد كلمة عشوائية فريدة لاستخدامها عنوانا للمنشور: 'url' => $faker->unique()->wordنختار صورة عشوائية من بين ثلاث صور لاستخدامها صورة للمنشور: 'image' => $faker->randomElement($array = array ('blog-one.jpg','blog-two.jpg','blog-three.jpg'))أنشأنا في تهجير تصنيفات المدونة ثلاثة تصنيفات، لذا سيقتصر اختيار معرفات التصنيفات على المجال [1,3]: 'category_id' => $faker->numberBetween($min = 1, $max = 3),سنستخدم الحقل created_at لعرض تاريخ المنشور في المدونة: 'created_at' => $faker->dateTime($max = 'now'),نفذ أمر artisan التالي لتطبيق البذر: php artisan db:seed --class=BlogPostsTableSeederبذر جدول الوسوم-المنشوراتننتقل الآن لبذر الجدول blog_post_tags الذي يُستخدَم لربط المنشورات بالوسوم. php artisan make:seeder BlogPostTagsTableSeederافتح ملف البذر وعدله كالتالي: <?php use Illuminate\Database\Seeder; class BlogPostTagsTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); for ($i = 1; $i < 11; $i++){ DB::table('blog_post_tags')->insert([ //, 'post_id' => $i, 'tag_id' => $faker->numberBetween($min = 1, $max = 2), ]); } } }أدرجنا عند بذر جدول الوسوم BlogPostsTableSeeder.php عشر تسجيلات فقط، لذا حرصنا ألا تتعدى قيمة معرف المنشور post_id في جدول الوسوم-المنشورات هذا الحد: for ($i = 1; $i < 11; $i++)بالنسبة لمعرّف الوسوم فقد حددنا المجال بـ[1,2] لأننا أثناء تهجير الوسوم أضفنا وسمين في جدول قاعدة البيانات. نفذ الأمر التالي لتطبيق بذر جدول الوسوم-المنشورات: php artisan db:seed --class=BlogPostTagsTableSeederنماذج المدونةننتقل بعد تنفيذ التهجيرات إلى إنشاء نماذج المدونة. سننشئ النماذج التالية: نموذج المنشور Post وسيكون مسؤولا عن التفاعل مع جدول المنشورات posts.نموذج تصنيف المدونة BlogCategory وهو مسؤول عن التفاعل مع جدول تصنيفات المدونة blog_categories.نموذج وسم المدونة BlogTag ويُعنى بالتخاطب مع جدول وسوم المدونة blog_tags.نموذج وسم منشورات المدونة BlogPostTag ويتفاعل مع جدول وسوم منشورات المدونة blog_post_tags.نفذ الأوامر التالية لإنشاء النماذج: php artisan make:model Post php artisan make:model BlogCategory php artisan make:model BlogTag php artisan make:model BlogPostTagلم نضف أمر إنشاء نموذج لمنشور المدونة لأننا أنشأناه خلال درس Eloquent من هذه السلسة. نبدأ بالتعديل على النماذج. نموذج منشور المدونةسنضيف إلى مدونتنا إمكانية الانتقال إلى المنشور السابق أو التالي؛ نستخدم معرّف المنشور لتحديد المنشور السابق و التالي. ننشئ دالتين لهذا الغرض: prevBlogPostURL (المنشور السابق) وnextBlogPostURL (المنشور التالي). <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $primaryKey = 'id'; protected $table = 'posts'; protected $fillable = array('url', 'title', 'description','content','blog','created_at_ip', 'updated_at_ip'); public static function prevBlogPostUrl($id) { $blog = static::where('id', '<', $id)->orderBy('id', 'desc')->first(); return $blog ? $blog->url : '#'; } public static function nextBlogPostUrl($id) { $blog = static::where('id', '>', $id)->orderBy('id', 'asc')->first(); return $blog ? $blog->url : '#'; } public function tags() { return $this->belongsToMany('App\BlogTag','blog_post_tags','post_id','tag_id'); } }استخدمنا دالتي where وfirst، وهما دالّتان توفرهما نماذج Eloquent، للحصول على معرّفيْ المنشورين السابق والتالي. بالنسبة لـwhere في دالة prevBlogPostUrl استخدمنا عامل المقارنة > (أصغر من) للحصول على المنشورات ذات المعرف الأصغر من معرف المنشور الحالي ثم رتبناها تنازليا (معطى desc في orderBy) وأخذنا العنصر الأول first. $blog = static::where('id', '<', $id)->orderBy('id', 'desc')->first();نفس المبدأ في دالة nextBlogPostUrl مع استخدام عامل المقارنة أكبر من < والترتيب التصاعدي asc. إن أردنا ترجمة التعليمة باستعلامات SQL فسنحصُل على التالي (مثال مع منشور ذي معرّف 3): SELECT * FROM posts where id < 3 ORDER BY id LIMIT 1;العلاقة بين الوسوم والمنشورات هي من النوع متعدّد إلى متعدّد Many to many: يمكن أن يوجد أكثر من وسم على المنشور، كما يمكن لوسم أن يوجد على أكثر من منشور. تُنفّذ هذه العلاقة بإدخال جدول وسيط للربط بين الجدولين posts وblog_tags. استخدمنا دالة belongsToMany في Eloquent لتعريف علاقة من هذا النوع: $this->belongsToMany('App\BlogTag','blog_post_tags','post_id','tag_id');تأخذ الدالة أربعة معطيات. الأول اسم النموذج الذي يرتبط بالنموذج الحالي بهذه العلاقة (BlogTag)، الثاني اسم الجدول الوسيط (blog_post_tags)، الثالث المفتاح الخارجي في الجدول المصدر (جدول المنشورات إذا كنا في نموذج المنشور) والرابع المفتاح الخارجي للجدول الوجهة (أي جدول الوسوم). تعريف الدالة ()tags واستخدام belongsToMany داخلها بالطريقة السالفة الذكر يجعل الحصول على وسوم منشور بسهولة كتابة: $tags = $post->tags استخدام هذه الدالة يكافئ تنفيذ استعلام SQL التالي: SELECT `blog_tags`.*, `blog_post_tags`.`post_id` AS `pivot_post_id`, `blog_post_tags`.`tag_id` AS `pivot_tag_id` FROM `blog_tags` INNER JOIN `blog_post_tags` ON `blog_tags`.`id` = `blog_post_tags`.`tag_id` WHERE `blog_post_tags`.`post_id` = ? ; قد يقنعك النظر في الاستعلام أعلاه بجدوى استخدام نماذج Eloquent. نموذج تصنيف المدونةنموذج التصنيفات سهل ولا يحتاج لأي شيء خاص: <?php namespace App; use Illuminate\Database\Eloquent\Model; class BlogCategory extends Model { protected $fillable = array('category'); }نموذج وسم المدونةتنطبق على نموذج الوسم علاقة متعدّد إلى متعدّد التي تنطبق على نموذج المنشور، لذا سنضيف دالة posts إلى النموذج لتعريف العلاقة بين جدولي الوسوم والمنشورات. <?php namespace App; use Illuminate\Database\Eloquent\Model; class BlogTag extends Model { protected $fillable = array('tag'); public function posts() { return $this->belongsToMany('App\Post','blog_post_tags','post_id','tag_id'); } }لاحظ استخدام belongsToMany بنفس طريقة استخدامها في نموذج المنشور. نموذج وسم منشورات المدونةيمثل هذا النموذج الجدول الوسيط blog_post_tags. <?php namespace App; class BlogPostTag extends Model { protected $fillable = array('post_id', 'tag_id'); }دوال المتحكم الخاصة بالمدونةتوجد في المتحكم Front دالتان تختصان بالمدونة: blog وblog_post. أضف السطر التالي لاستيراد نوذج المنشور Post إلى المتحكم: use App\Post;دالة Blogتُستخدَم هذه الدالة لعرض صفحة المدونة وإظهار جميع منشوراته. إذا كان عدد المنشورات كبيرا فسيكون من العبث عرضُها دفعةَ واحدة، لذا سنستخدم التّصفيح Pagination (عرض عدد محدود من المنشورات في كل صفحة). يدعم Eloquent إعداد الصفحات: public function blog() { $posts = Post::where('id', '>', 0)->paginate(3); $posts->setPath('blog'); $data['posts'] = $posts; return view('blog', array('data' => $data, 'title' => 'Latest Blog Posts', 'description' => '', 'page' => 'blog', 'brands' => $this->brands, 'categories' => $this->categories, 'products' => $this->products)); }نبحث عن منشورات المدونة ثم نُعِدّ صفحاتها، نحدّد عدد المنشورات في كل صفحة بثلاثة منشورات: $posts = Post::where('id', '>', 0)->paginate(3);نحدّد الرابط الخاص بإعداد الصفحات، اخترنا الرابط http://larashop.dev/blog: $posts->setPath('blog');ثم نحتفظ بالنتائج في المصفوفة data التي سنمررها إلى العرض. دالة Blog_postتتلقى هذه الدالة رابطا ثم تعثر على منشور اعتمادا على الرابط الممرّر إليها: public function blog_post($url) { $post = Post::where('url', '=' , $url)->first(); $previous_url = Post::prevBlogPostUrl($post->id); $next_url = Post::nextBlogPostUrl($post->id); $data['tags'] = $post->tags; $data['title'] = $post->title; $data['description'] = $post->description; $data['content'] = $post->content; $data['blog'] = $post->blog; $data['created_at'] = $post->created_at; $data['image'] = $post->image; $data['previous_url'] = $previous_url; $data['next_url'] = $next_url; return view('blog_post', array('data' => $data, 'page' => 'blog'));لاحظ استخدام الدالة tags التي عرفناها في النموذج Post. عروض المدونةتوجد عروض المدونة في الملف المرفق. يتعلق الأمر بالعرضين blog.blade.php و blog_post.blade.php الذي عُدّل عليهما لعرض البيانات الممرّرة. لا توجد تعليمات جديدة علينا في العرضين سوى التعليمة {!! $data['posts']->render() !!}تعمل هذه التعليمة على ترقيم الصفحات لتسهيل تصفح منشورات المدونة. تذكر أننا في الدالة blog كتبنا التعليمة التالية $posts = Post::where('id', '>', 0)->paginate(3);لإعداد الصفحات بحيث تُنشَر كل ثلاثة منشورات دفعة واحدة مع إتاحة التنقل إلى بقية المنشورات. تنشئ الدالة render في قالب Blade روابط من شكل http://laravel.dev/blog?page=X حيث X رقم الصفحة. بما أننا بذرنا عشرة منشورات فسيكون لدينا أربع صفحات (3 منشورات في كل من الصفحات 1 إلى 3، ومنشور واحد في الصفحة الرابعة، الأخيرة). الملف المرفق: عروض المدونة. ترجمة -وبتصرّف- لمقال Laravel 5 Blog Tutorial لصاحبه Rodrick Kazembe.