-
المساهمات
69 -
تاريخ الانضمام
-
تاريخ آخر زيارة
المعلومات الشخصية
-
النبذة الشخصية
كاتب ومترجم ومدقق لغوي، بخبرة تربو على السبع سنوات.
- الموقع
آخر الزوار
2465 زيارة للملف الشخصي
إنجازات محمد ناولو2
عضو نشيط (3/3)
9
السمعة بالموقع
-
منذ صياغة مصطلح شبكة الويب العالمية World Wide Web عام 1990، تحولت مواقع الويب من مجرد صفحات HTML ثابتة إلى تطبيقات متقدمة تؤدي وظائف فعالة ومعقدة للغاية. يتوفر بين أيدينا اليوم آلاف الموارد الرقمية والمطبوعة التي تشرح لنا بالتفصيل كيفية تطوير أنواع مختلفة من تطبيقات الويب. كما أن بيئات التطوير ذكية إلى الحد الذي يمكّنها من اكتشاف وإصلاح العديد من الأخطاء التي عانى المطورون فيما مضى كثيرًا لإصلاحها. علاوةً على ذلك، هناك الكثير من منصات التطوير المختلفة التي تحوّل بسهولة صفحات الويب الثابتة البسيطة إلى تطبيقات تفاعلية. تشترك جميع أنماط وممارسات ومنصات التطوير هذه في عوامل مشتركة، وجميعها معرضة لأخطاء متشابهة ناجمة عن طبيعة تطبيقات الويب. الهدف من نصائح تطوير الويب التي نستعرضها في هذا المقال هو تسليط الضوء على أهم الأخطاء الشائعة التي يقع بها مطورو الويب في مراحل مختلفة من العمل، لذا فإن فهمك الجيد لهذه الأخطاء سيجنّبك الوقوع بها، ويساعدك لتصبح مطورًا أفضل. يتناول هذا المقال بعض المواضيع العامة المشتركة بين جميع مطوري الويب، مثل التحقق Validation والأمان Security وقابلية التوسع Scalability وتحسين محركات البحث SEO. وبالتأكيد فإنك لست مضطرًا إلى التقيد بالأمثلة الواردة في هذا المقال، فالهدف منها تقديم فكرة عن المشكلات المحتملة التي قد يواجهها مطورو الويب والانتباه لها عند تطوير موقعك. الخطأ الأول: عدم التحقق من صحة المدخلات Validation إن التحقق من صحة المدخلات من جانبي العميل والخادم أمر ضروري لا غنى عنه، وجميعنا سمع بالنصيحة الذهبية «لا تثق أبدًا في البيانات التي يدخلها المستخدم» ومع ذلك، فإن الأخطاء الناجمة عن التحقق من صحة المدخلات هي أخطاء متكررة الحدوث. من العواقب الشائعة لهذا الخطأ هو حقن إس كيو إل SQL Injection، إذ يتواجد هذا الخطأ سنويًا في قائمة أواسب OWASP التي تحتوي على أهم 10 مخاطر في أمن تطبيقات الويب. لذا توفر معظم أطر عمل تطوير الواجهات الأمامية قواعد تحقق مميزة وسهلة الاستخدام، كما تستخدم معظم أطر عمل تطوير الواجهات الخلفية تعليقات توضيحية بسيطة لضمان التزام البيانات المقدمة بالقواعد المتوقعة. قد تستغرق عملية التحقق وقتًا طويلًا، ولكن مع ذلك، يجب أن يأخذ التحقق من صحة الإدخال حقه من الشيفرات البرمجية لتطبيقك، ويحب ألا تتجاهل ذلك أبدًا لتحقيق أمان مواقع الويب. الخطأ الثاني: الاستيثاق Authentication دون الحصول على تصريح Authorization قبل أن نخوض عميقًا في شرح هذا الخطأ، لا بُدّ من شرح المصطلحين السابقين وتوضيح كل منهما: الاستيثاق Authentication: يُقصد به التحقق من أن الشخص الذي يدخل البيانات هو مستخدم محدد، من خلال تقديم بيانات الأمان الخاصة به على النحو الصحيح، مثل كلمة المرور، والإجابة على أسئلة الأمان، ومسح بصمات الأصابع، ونحو ذلك. التصريح Authorization: هو التأكد من أن مستخدمًا معينًا لديه حق الوصول إلى مورد محدد، أو أن لديه التصريح لتنفيذ إجراء ما. ويمكن اختصار الأمر بأن الاستيثاق هو التحقق من شخصية الكائن، بينما التصريح هو تحديد ما يمكن لهذا الكائن فعله. أما لتوضيح الخطأ الذي يحدث هنا، فدعونا نأخذ المثال التالي: ضع في الحسبان أن متصفحك يحتفظ بمعلومات المستخدم المسجلة حاليًا كما يلي: { username:'elvis', role:'singer', token:'123456789' } عند تغيير كلمة المرور، يجري تطبيقك طلب من النوع POST كما يلي: POST /changepassword/:username/:newpassword في التابع /changepassword، يمكنك التحقق من تسجيل دخول المستخدم وعدم انتهاء صلاحية المفتاح token، ومن ثم يمكنك إيجاد ملف تعريف المستخدم بناءً على المعامل :username ومن ثم تغير كلمة مرور المستخدم. لقد تحققت من أن المستخدم سجل دخوله بطريقة صحيحة، ومن ثم عملت على تنفيذ طلبه بتغيير كلمة المرور الخاصة به. إلى هنا تبدو الأمور وكأنها على ما يُرام، أليس كذلك؟ للأسف الجواب هو لا، وإليك التوضيح. في هذه المرحلة، من المهم التحقق من أن المستخدم الذي ينفذ الإجراء والمستخدم الذي تغيرت كلمة مرور حسابه هو الشخص نفسه، إذ يمكن التلاعب بالمعلومات الموجودة في المتصفح، ويمكن لأي مستخدم ذي خبرة تحديث اسم المستخدم username:'elvis' بسهولة إلى اسم المستخدم username:'Administrator' باستخدام أدوات المتصفح المضمّنة فيه. لذا فإننا في هذه الحالة ركزنا فقط على الاستيثاق Authentication معتمدين على أن المستخدم قد قدم اعتماديات الأمان. يمكننا أيضًا إضافة التحقق من أنه لا يمكن تنفيذ تابع /changepassword إلا من قِبل المستخدمين الذين تجاوزوا عملية الاستيثاق Authentication. ومع ذلك، ما تزال الخطوات غير كافية لحماية المستخدمين من محاولات الاختراق الضارة. يجب أن تحرص على أن تتحقق من الهوية الفعلية للشخص الذي يقدم الطلب، وكذلك محتوى الطلب ضمن تابع /changepassword إضافةً إلى حصول المستخدم على التصريح Authorization المناسب للطلب، مع التأكد من أن المستخدم لا يمكنه تغيير سوى بياناته. الاستيثاق Authentication والتصريح Authorization هما وجهان لعملة واحدة، لذا لا تعاملهما على نحو منفصل أبدًا. الخطأ الثالث: عدم الجاهزية للتوسع في ظل عالمنا اليوم الذي يتسم بالتطور السريع، ومسرعات الأعمال startup accelerators والوصول العالمي السريع للأفكار المميزة، تسعى العديد من الشركات إلى طرح الحد الأدنى من منتجاتها MVP في السوق في أقرب وقت ممكن، لذا فإن ضغط الوقت المستمر هذا يدفع حتى فرق تطوير الويب الجيدة إلى تجاهل بعض المشكلات أحيانًا. يُعَد التوسع من الأهداف الأساسية للكثير من فرق العمل، وهنا تبرز فكرة مفهوم الحد الأدنى من المنتج MVP، لكن إذا بالغت في إطلاق أقل حد ممكن من منتجك، فإنك ستقع ضحيةً للعديد من المشكلات الخطيرة. لسوء الحظ، لا يكفي اختيار قاعدة بيانات وخادم ويب قابليْن للتطوير، أو فصل مكونات التطبيق على خوادم مستقلة، فهناك الكثير من التفاصيل الأخرى التي يجب أن تهتم بها لكي تتجنب إعادة بناء أجزاء مهمة من تطبيقك فيما بعد، وهو ما يصبح مشكلةً كبيرةً في تطوير الويب. لنفترض مثلًا أنك اخترت تخزين صور الملفات الشخصية لمستخدمي تطبيقك مباشرةً على خادم الويب، والذي يُعد حلًا جيدًا للغاية، إذ يمكن للتطبيق الوصول إلى الملفات بسرعة، مع توفر طرق لمعالجة الملفات في كل منصة تطوير، كما يمكنك تقديم هذه الصور كمحتوى ثابت، مما يؤدي إلى الحد الأدنى من التحميل على تطبيقك. ولكن ما الذي سيحدث عندما ينمو تطبيقك وتضطر حينها إلى استخدام عدد من خوادم الويب من خلال موزع الأحمال Load balancer، حينها ستفشل عملية التوسع لسبب بسيط مثل صور الملف الشخصي، على الرغم من التوسيع الجيد الذي أجريته على مساحة تخزين قاعدة البيانات وخوادم حالة الجلسة وخوادم الويب. ستضطر في الحالة السابقة إلى تنفيذ نوع ما من خدمة مزامنة الملفات، والتي ستؤدي إلى تأخير في التحميل، ناهيك عن أخطاء 404 التي ستتسبب بها، أو قد تجد حلًا آخر لتوزيع الملفات على خوادم الويب لديك. لقد كان بالإمكان تجاوز كل المشكلات السابقة من خلال استخدام موقع تخزين ملفات مشترك أو قاعدة بيانات أو أي حل آخر للتخزين السحابي. ربما كان بإمكانك تنفيذ كل ذلك خلال بضعة ساعات عمل إضافية، والأمر يستحق ذلك المجهود. الخطأ الرابع: عدم تحسين محركات البحث SEO بطريقة صحيحة أحد أهم الأسباب وراء فشل تحسين صفحات الويب وملاءمتها مع سياسات تحسين محركات البحث SEO هو التضليل الذي يمارسه بعض الأشخاص الذين ينتحلون صفة خبراء تحسين محركات البحث. يظن الكثير من مطوري الويب أن لديهم المعرفة الكافية عن مجال تحسين محركات البحث SEO، وأن الأمر ليس معقدًا ولا يحتاج إلى خبرات متخصصة، ولكن هذا ليس صحيحًا، إذ يتطلب إتقان تحسين محركات البحث قضاء وقت طويل في البحث عن أفضل الممارسات والقواعد المتغيرة باستمرار حول كيفية فهرسة صفحات الويب في محركات البحث جوجل Google وبينغ Bing وياهو Yahoo. إذا لم تجرب بنفسك باستمرار وتعمل على تتبع النتائج وتحليلها بدقة، فكن على يقين بأنك لست خبيرًا في تحسين محركات البحث SEO، ويجب ألا تدّعي أنك متخصص في هذا المجال. تحسين محركات البحث ليس مجرد إعداد محتوى جيد، وإضافة الوسوم tags والكلمات المفتاحية والبيانات الوصفية meta-data، ونصوص بديلة عن الصور، وإعداد خريطة الموقع ونحو ذلك. بل يشمل أيضًا التخلص من المحتوى المتكرر، والحصول على بنية موقع يمكن لمحركات البحث الزحف بداخلها لفهرستها، مع زيادة سرعة تحميل صفحات الموقع، وتربيط داخلي جيد. كما هو الحال مع قابلية التوسع، يجب أن تفكر في تحسين محركات البحث منذ اللحظة التي تبدأ فيها بإنشاء تطبيقك على الويب، لأنك إن أجلت الأمر إلى أوقات متأخرة، فقد تجد أن الأمر يتطلب إعادة برمجة تطبيقك بالكامل. الخطأ الخامس: التأخر في معالجة الطلبات أحد أفضل الأمثلة على هذا الخطأ هو إرسال بريد إلكتروني بناءً على إجراء يقوم به المستخدم، إذ يعتقد الكثير من المطورين أن الحل الأمثل هو الاتصال عبر بروتوكول SMTP. وبروتوكول SMTP هو اختصار لنقل البريد البسيط الآمن، وهو بروتوكول اتصال يُستخدم لإرسال رسائل بريد إلكتروني من الخوادم إلى العملاء مباشرةً، مع ضمان سلامة البيانات وسريتها. ومع ذلك، هناك بعض المشكلات التي ستواجهها مع هذه الطريقة، فعلى سبيل المثال، لنفترض أنك أنشأت متجرًا لبيع الكتب عبر الإنترنت، وتتوقع أن تبدأ مشروعك بتلقي بضعة مئات الطلبات يوميًا، لذا يمكنك إرسال رسائل تأكيد للمستخدمين عبر البريد الإلكتروني في كل مرة يقوم فيها المستخدم بإرسال طلب لشراء كتاب. قد تكون هذه الطريقة مجدية في البداية، لكن ما الذي سيحدث عندما يتسع نشاطك التجاري، وتتلقى فجأةً آلاف الطلبات التي سيؤدي كل منها إلى إرسال رسائل تأكيد عبر البريد الإلكتروني؟ سيؤدي حينها إلى تأخر عمليات تأكيد الطلبات، أو سيتراجع وقت استجابة تطبيقك إلى حد كبير، لأنه سيتعامل مع رسائل البريد الإلكتروني عوضًا عن المستخدمين. يجب التعامل مع أي إجراء يستهلك الوقت أو يضيف عبئًا على المعالج من خلال العمليات خارج تطبيقك، بينما يعمل تطبيقك على إصدار طلبات HTTP في أقرب وقت. في هذه الحالة، يجب أن يكون لديك خدمة بريد خارجية تستلم الطلبات وترسل الإشعارات إلى المستخدمين. الخطأ السادس: عدم تحسين استخدام حيز النطاق التراسلي Bandwidth تجري معظم عمليات التطوير والاختبار في بيئة تجريبية على شبكة محلية، لذلك عندما تعمل على تنزيل 5 صور خلفية يبلغ حجم كل منها 3 ميجابايت عبر شبكتك المحلية السريعة، فقد لا تكتشف أي مشكلة تتعلق بسرعة التحميل، ولكن عندما يبدأ المستخدمون بتحميل صفحة رئيسية بحجم 15 ميجابايت عبر شبكة 3G على هواتفهم الذكية، ستبدأ حينها بتلقي العديد من شكاوى العملاء. سيساعدك تحسين استخدام حيز النطاق التراسلي Bandwidth على تعزيز أداء تطبيقك بدرجة كبيرة، ولكي تتمكن من الحصول على هذا التعزيز، ستحتاج إلى إجراء بعض الحيل التي يستخدمها العديد من مطوري الويب الخبراء، ومن الأمثلة على هذه الحيل: تصغير minification كامل نصوص جافا سكريبت. تصغير كامل نصوص CSS. ضغط compression نصوص HTTP من الخادم. تحسين حجم الصور ودقتها. الخطأ السابع: عدم تهيئة التطبيق لأحجام شاشات مختلفة لقد كان التصميم المتجاوب Responsive design مع أحجام شاشات مختلفة موضوعًا مهمًا في السنوات الأخيرة، إذ أدى ازدياد استخدام الهواتف الذكية ذات الأحجام المختلفة إلى ظهور العديد من الطرق الجديدة للوصول إلى المحتوى عبر الإنترنت، وقد رافقت هذه الطرق الجديدة مجموعة من مشكلات تطوير الويب. يتزايد يوميًا عدد زيارات المواقع الإلكترونية التي تأتي من الهواتف الذكية والأجهزة اللوحية، لذا من أجل ضمان التنقل السلس في صفحات موقعك الإلكتروني، والوصول إلى كامل المحتوى، يجب أن تتيح للمستخدمين الوصول إلى موقعك من جميع أنواع الأجهزة. هناك العديد من الأنماط والممارسات التي يمكن اتباعها لبناء تطبيقات ويب متجاوبة مع مختلف أنواع الأجهزة. الأكثر شهرة بين أطر العمل هذه هو إطار العمل بوتستراب Bootstrap، وهو إطار عمل مجاني ومفتوح المصدر مُعتمَد من كل منصة تطوير رئيسية، لذا كل ما عليك فعله هو الالتزام بأنماط وممارسات Bootstrap عند إنشاء تطبيقك، وستحصل على تطبيق ويب متجاوب دون أي مشكلة. لاستخدام إطار العمل بوتستراب Bootstrap بكفاءة عالية، يُفضَّل أن يكون لديك خبرة جيدة في كيفية التعامل مع لغات تطوير الويب الأساسية، مثل HTML و CSS و JavaScript، إضافةً إلى إدراك جيد لمفهوم التصميم المتجاوب. إذا لم يكن لديك معرفة كافية بها، فيمكنك التعرف عليها في المسار الأول من دورة تطوير واجهات المستخدم التي تقدمها أكاديمية حسوب. دورة تطوير واجهات المستخدم ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة اشترك الآن الخطأ الثامن: عدم التوافق بين المتصفحات تخضع عملية التطوير في كثير من الحالات إلى جدول زمني ضيق، إذ يسعى المطورون إلى إصدار التطبيقات في أسرع وقت ممكن، وحتى مطورو الويب الجيدون غالبًا ما يركزون على تقديم الوظائف أكثر مما يركزون على التصميم، صحيح أن معظم المطورين لديهم عدد من المتصفحات المثبتة على أجهزتهم، مثل المتصفح كروم Chrome وفايرفوكس Firefox وغيرها.. لكنهم في معظم الحالات يستخدمون برنامجًا واحدًا فقط من هذه البرامج. من الممارسات الشائعة بين المطورين هي استخدام متصفح واحد أثناء التطوير، وعندما يقترب التطبيق من الاكتمال، يبدأ المطورون في اختباره على متصفحات أخرى، وهو أمر منطقي تمامًا، على افتراض أن لديك ما يكفي من الوقت لاختبار وإصلاح المشكلات التي تظهر في هذه المرحلة. ومع ذلك، هناك بعض النصائح التي يمكنك اتباعها في تطوير الويب، والتي يمكن أن توفر لك وقتًا كبيرًا عندما يصل تطبيقك إلى مرحلة الاختبار على المتصفحات، وهي: صحيح أنك لست بحاجة إلى اختبار التطبيق على جميع المتصفحات في أثناء عملية التطوير، إذ يستغرق الأمر وقتًا طويلاً ولن يكون فعالًا، لكن لا يعني ذلك أنه لا يمكن تبديل المتصفحات بين حين وآخر، إذ يمكنك استخدام متصفحًا مختلفًا كل يومين، وستتعرف على الأقل على المشكلات الرئيسية في وقت مبكر من مرحلة التطوير. كن حذرًا عند إلغاء دعم تشغيل تطبيقك على النسخ القديمة من المتصفحات، فهناك العديد من المنظمات التي قد تكون بطيئة في اعتماد البرامج الجديدة، إذ يمكن لهذه المنظمات أن تضم آلاف المستخدمين الذين يعملون هناك والذين يحتاجون إلى الوصول إلى تطبيقك، ولا يمكنهم تثبيت أحدث متصفح مجاني لأسباب الأمن الداخلي وسياسات العمل في المنظمة. تجنب التعليمات البرمجية التي تكون خاصة بمتصفح واحد، بل ابحث عن حلول متوافقة مع جميع المتصفحات. الخطأ التاسع: عدم التخطيط لقابلية النقل Portability الافتراضات العشوائية هي رأس كل المشكلات، وعند الحديث عن قابلية النقل Portability، فإن ذلك ينطبق عليها أكثر من أي شيء آخر. والمقصود بقابلية النقل هو القدرة على تشغيل التطبيق على أي بيئة أو عتاد أو نظام تشغيل. لعلك صادفت الكثير من المشكلات في تطوير الويب، مثل تحديد مسارات الملفات أو قيم أخرى مثل السلاسل النصية المخصصة للاتصال بقاعدة البيانات بشكل ثابت داخل الشيفرة البرمجية، أو افتراض أن مكتبة معينة ستكون متاحة على الخادم الذي سيتضيف التطبيق، وغير ذلك من المشكلات. من الخطأ افتراض أن بيئة تطوير التطبيق (خلال مرحلة برمجته) ستتوافق مع بيئة الإنتاج (بعد الانتهاء منه ونشره للمستخدمين)، والتطبيق المثالي هو التطبيق الذي يحتاج الحد الأدنى من الصيانة والإصلاح maintenance-free، لذلك: تأكد من إمكانية توسيع نطاق تطبيقك وتشغيله على بيئة خوادم متعددة عبر توزيع الأحمال. توفير ملفات إعداد configuration file بسيطة وواضحة، وربما في ملف إعداد واحد. تعامل مع الحالات الاستثنائية عندما لا تكون إعدادات خادم الويب كما يجب. الخطأ العاشر: استخدامات غير فعالة لواجهة RESTful API قد يستخدم المطورون حلولًا غير مجدية لا تهدف إلى تحقيق أي فائدة ويظنون أنها ستعمل بشكل جيد، لكنها تنتهي بوقوع مشكلات أكبر، على سبيل المثال احتلت واجهات برمجة التطبيقات المعتمدة على فلسفة RESTful APIs مكانة عالية في تطوير الويب، حتى أن كل تطبيق ويب تقريبًا يعتمد على إحدى أنواع خدمات REST، سواءً للاستخدام الداخلي أو بالتكامل مع النظام الخارجي، لكن ما يزال هناك الكثير من أنماط وخدمات RESTful معطلة ولا تلتزم بالممارسات المتوقعة. لكن ثمة خطآن شائعان عند كتابة RESTful API، هما: استخدام أفعال أو توابع HTTP Verbs خاطئة: كما هو الحال مثلًا عند استخدام طريقة الطلب GET لكتابة البيانات، إذ أن طريقة الطلب GET في بروتوكول HTTP تُستخدم فقط لجلب البيانات وليس للتعديل عليها، وهي مصممة لتكون ثابتة وآمنة، لذا فإنه بغض النظر عن عدد المرات التي تُستخدم فيها طريقة GET لاستدعاء البيانات من نفس المورد، فإن الاستجابة ستكون دائمًا هي نفسها، ويجب ألا يحدث أي تغيير في حالة التطبيق. عدم إرسال رموز حالة status codes صحيحة: ومن أفضل الأمثلة على هذا الخطأ الشائع هو إرسال رسائل خطأ مع رمز إجابة 200، إذ يشير هذا الرمز في الأساس إلى أن كل شيء على ما يُرام. HTTP 200 OK { message:'there was an error' } يجب إرسال الرمز HTTP 200 OK عندما لا ينتج عن الطلب أي خطأ، أما في حالة وجود خطأ ما، فيجب إرسال الرموز 400، 401، 500 أو أي رمز حالة آخر مناسب للخطأ الذي حدث. في الختام يُعد تطوير الويب مصطلحًا واسعًا يمكن أن يشمل الكثير من المجالات، مثل تطوير المواقع الإلكترونية، أو خدمات الويب، أو تطبيقات الويب المعقدة. الهدف الرئيسي من هذا المقال هو تذكيرك بأنه يجب دائمًا الانتباه إلى الاستيثاق Authentication والتصريح Authorization، والتخطيط لإمكانية التوسع، وعدم افتراض الأشياء بسرعة، إضافةً إلى تكون على استعداد دائم للتعامل مع قائمة طويلة من مشكلات تطوير الويب التي يمكن أن تواجهها. ترجمة -وبتصرّف- للمقال The 10 Most Common Mistakes Web Developers Make: A Tutorial for Developers لصاحبه Demir Selmanovic. اقرأ أيضًا مدخل إلى OAuth 2 ما أنواع الأخطاء التي تظهر على موقع إلكتروني، وكيف نتعامل معها؟ الأخطاء الشائعة في تصميم المواقع الإلكترونية والتي تضر بتحسين محركات البحث الأخطاء القاتلة الواجب على مصممي مواقع الإنترنت تجنبها الاستيثاق عبر token authentication في تطبيق Node.js و React
-
عبدالرحيم صبري بدأ بمتابعة محمد ناولو2
-
والآن بعد أن تعرفنا على كيفية استرجاع البيانات باستخدام الاستعلامات queries وكيفية إرسال البيانات باستخدام الطفرات mutations، أصبح بإمكاننا تجربة شيء أكثر صعوبة. سنتعلم في هذا المقال كيفية إنشاء نظام لإضافة التعليقات comments والإعجابات likes. إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الأول إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الثاني إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الثالث إنشاء نظام التعليقات Comments لنبدأ بقسم التعليقات، لكن قبل الخوض عميقًا في الشيفرات البرمجية، هناك بعض الأشياء التي يجب تذكرها. أولًا، ولأسباب الحماية، يمكن فقط للمستخدمين الذين سجلوا دخولهم إضافة التعليقات. الأمر الثاني، يمكن لكل مستخدم ترك تعليقات متعددة، لكن كل تعليق لا يمكن أن يتبع إلا لمستخدم واحد، أي يمكن أن نجد تعليقات كثيرة لمستخدم واحد، لكن لا يمكن أن نجد تعليق يتبع لعدد من المستخدمين. أمر آخر يمكن تجدر الإشارة له وهي أن كل مقال يمكن أن يحتوي عدة تعليقات، لكن كل تعليق يتبع لمقال واحد فقط. وأخيرًا، يجب أن يوافق المشرف على التعليق قبل ظهوره على صفحة المقال. ما الذي يظهر للمستخدم في حال عدم تسجيل الدخول: والآن بعد تسجيل الدخول: إعداد الواجهة الخلفية مع أخذ الملاحظات السابقة في الحسبان، لنبدأ بإنشاء نموذج للتعليقات. يُفترض أن تكون الشيفرات البرمجية التالية واضحةً بالنسبة لك إذا كان لديك معرفة جيدة بكيفية العمل مع إطار العمل جانغو. # Comment model class Comment(models.Model): content = models.TextField(max_length=1000) created_at = models.DateField(auto_now_add=True) is_approved = models.BooleanField(default=False) # Each comment belongs to one user and one post user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) post = models.ForeignKey(Post, on_delete=models.SET_NULL, null=True) والآن تابع وطبِّق التغييرات التي أجريتها على النماذج. انتقل إلى الطرفية terminal وفعِّل الأوامر التالية: python manage.py makemigrations python manage.py migrate ستحتاج أيضًا إلى إعداد GraphQL في الواجهة الخلفية. يمكنك إضافة نمط بيانات جديد يسمى CommentType لتمثيل التعليقات والتعامل معها ضمن واجهة GraphQL على النحو التالي: class CommentType(DjangoObjectType): class Meta: model = models.Comment الآن بالنسبة للطفرة mutation، لاحظ أن هناك ثلاثة أشياء يحتاج جانغو إلى معرفتها لإضافة تعليق، وهي محتوى التعليق، والمستخدم الذي يريد إضافة هذا التعليق، والمقال الذي يريد ترك التعليق عليه. سنكتب الكود التالي لإضافة تعليق جديد باستخدام GraphQL: class CreateComment(graphene.Mutation): comment = graphene.Field(types.CommentType) class Arguments: content = graphene.String(required=True) user_id = graphene.ID(required=True) post_id = graphene.ID(required=True) def mutate(self, info, content, user_id, post_id): comment = models.Comment( content=content, user_id=user_id, post_id=post_id, ) comment.save() return CreateComment(comment=comment) class Mutation(graphene.ObjectType): . . . create_comment = CreateComment.Field() تذكر إضافة صنف CreateComment داخل صنف Mutation. إعداد الواجهة الأمامية لإعداد الواجهة الأمامية، لننتقل إلى الملف Post.vue حيث المكان الذي تظهر فيه التعليقات. يُرجى ملاحظة أن هناك بعض التعليمات البرمجية محذوفة في الأمثلة التالية، بهدف ألا تكون الشيفرات طويلة جدًا، لكن إذا كنت تريد الحصول على التعليمات البرمجية الكاملة، فيمكنك تنزيل التعليمات المصدرية من هنا. <script> import { POST_BY_SLUG } from "@/queries"; import CommentSectionComponent from "@/components/CommentSection.vue"; export default { name: "PostView", components: { CommentSectionComponent }, data() { return { postBySlug: null, comments: null, userID: null, }; }, computed: { // Filters out the unapproved comments approvedComments() { return this.comments.filter((comment) => comment.isApproved); }, }, async created() { // Get the post before the instance is mounted const post = await this.$apollo.query({ query: POST_BY_SLUG, variables: { slug: this.$route.params.slug, }, }); this.postBySlug = post.data.postBySlug; this.comments = post.data.postBySlug.commentSet; }, }; </script> الملف query.js: export const POST_BY_SLUG = gql` query ($slug: String!) { postBySlug(slug: $slug) { . . . commentSet { id content createdAt isApproved user { username avatar } numberOfLikes likes { id } } } } `; بدايةً، يمكنك في الخطاف create() استرجاع المقال المطلوب، إضافةً إلى التعليقات باستخدام الاستعلام POST_BY_SLUG الذي يظهر في الأعلى. ستحتاج بعد ذلك في خاصية computed إلى تصفية التعليقات التي لم يوافق عليها المشرف. وأخيرًا، ستعمل على تمرير التعليق ومعرف المنشور post ID ومعرف المستخدم user ID إلى CommentSectionComponent. الملف CommentSectionComponent.vue: <template> <div class="home"> . . . <!-- Comment Section --> <!-- Pass the approved comments, the user id and the post id to the comment section component --> <comment-section-component v-if="this.approvedComments" :comments="this.approvedComments" :postID="this.postBySlug.id" :userID="this.userID" ></comment-section-component> </div> </template> لنلقِ الآن نظرة عميقة على مكون قسم التعليقات. يحتوي هذا المكون على قسمين، القسم الأول هو نموذج يسمح للمستخدم بترك التعليقات، والذي يظهر فقط عندما يسجل المستخدم دخوله، والقسم الثاني هو قائمة بالتعليقات الموجودة. الملف CommentSection.vue <script> import { SUBMIT_COMMENT } from "@/mutations"; import CommentSingle from "@/components/CommentSingle.vue"; import { useUserStore } from "@/stores/user"; export default { components: { CommentSingle }, name: "CommentSectionComponent", setup() { const userStore = useUserStore(); return { userStore }; }, data() { return { commentContent: "", commentSubmitSuccess: false, user: { isAuthenticated: false, token: this.userStore.getToken || "", info: this.userStore.getUser || {}, }, }; }, props: { comments: { type: Array, required: true, }, postID: { type: String, required: true, }, userID: { type: String, required: true, }, }, async created() { if (this.user.token) { this.user.isAuthenticated = true; } }, methods: { submitComment() { if (this.commentContent !== "") { this.$apollo .mutate({ mutation: SUBMIT_COMMENT, variables: { content: this.commentContent, userID: this.userID, postID: this.postID, }, }) .then(() => (this.commentSubmitSuccess = true)); } }, }, }; </script> من المُفترض أنك على معرفة جيدة بكيفية استخدام الوحدة Pinia التي ثبتناها في المقال السابق للتحقق مما إذا كان المستخدم قد سجل دخوله، وكيفية استخدام props لتمرير المعلومات بين المكونات المختلفة، لذلك سنتخطى هذه الأمور وسنركز على تابع SubmitComment(). عند استدعاء هذا التابع، فإنها ستختبر ما إذا كان التعليق فارغًا، وإذا لم يكن كذلك، فسوف تستخدم طفرة SUBMIT_COMMENT لإنشاء تعليق جديد. تُعرّف طفرة SUBMIT_COMMENT كالتالي: الملف mutations.js: export const SUBMIT_COMMENT = gql` mutation ($content: String!, $userID: ID!, $postID: ID!) { createComment(content: $content, userId: $userID, postId: $postID) { comment { content } } } `; الشيفرة التالية هي كود HTML ضمن ملف CommentSection.vue وهي المسؤولة عن عرض قسم التعليقات في واجهة المستخدم. لاحظ أننا استخدمنا مكونًا آخر في نهاية الشيفرة وهو CommentSingle.vue وذلك لعرض تعليق واحد. قسم HTML من ملف CommentSection.vue <template> <div class=". . ."> <p class="font-bold text-2xl">Comments:</p> <!-- If the user is not authenticated --> <div v-if="!this.user.isAuthenticated"> You need to <router-link to="/account">sign in</router-link> before you can leave your comment. </div> <!-- If the user is authenticated --> <div v-else> <div v-if="this.commentSubmitSuccess" class=""> Your comment will show up here after is has been approved. </div> <form action="POST" @submit.prevent="submitComment"> <textarea type="text" class=". . ." rows="5" v-model="commentContent" /> <button class=". . .">Submit Comment</button> </form> </div> <!-- List all comments --> <comment-single v-for="comment in comments" :key="comment.id" :comment="comment" :userID="this.userID" > </comment-single> </div> </template> والآن دعونا نلقي نظرة عميقة على الملف CommentSingle.vue قسم HTML من ملف CommentSingle.vue: <template> <div class="border-2 p-4"> <div class="flex flex-row justify-start content-center items-center space-x-2 mb-2" > <img :src="`http://127.0.0.1:8000/media/${this.comment.user.avatar}`" alt="" class="w-10" /> <p class="text-lg font-sans font-bold"> {{ this.comment.user.username }} </p> </div> <p> {{ this.comment.content }} </p> </div> </template> قسم جافا سكريبت من ملف CommentSingle.vue: <script> export default { name: "CommentSingleComponent", data() { return { . . . }; }, props: { comment: { type: Object, required: true, }, userID: { type: String, required: true, }, }, }; </script> إنشاء نظام التفاعل بالإعجاب Like فيما يتعلق بنظام الإعجاب Like، فهناك أيضًا بعض الأمور التي يجب أخذها في الحسبان. بدايةً، يجب على المستخدم تسجيل الدخول للتفاعل والإعجاب بالتعليق، كما هو الحال مع كتابة التعليقات، لكن يمكن لأي مستخدم رؤية عدد الإعجابات حتى وإن لم يكن مسجلًا. الأمر الثاني هو أنه يمكن لكل مستخدم وضع إعجاب واحد فقط لكل مقال، وسيؤدي النقر فوق زر "أعجبني" مرةً أخرى إلى إزالة الإعجاب الأول. وأخيرًا، يمكن للمقال الواحد الحصول على إعجابات عديدة من مستخدمين مختلفين. إعداد الواجهة الخلفية لنبدأ مرة أخرى بالنماذج models. بما أنه يمكن لكل مقال الحصول على العديد من الإعجابات من عدة مستخدمين، ويمكن لكل مستخدم إضافة العديد من الإعجابات للعديد من المقالات، فإن هذه تُعَد علاقة متعدد إلى متعدد بين المنشور post والمستخدم user. لاحظ أيضًا أننا في هذه المرة أنشأنا دالة get_number_of_likes() لتحصيل إجمالي عدد الإعجابات. تذكر تطبيق هذه التغييرات على قاعدة البيانات باستخدام الأوامر التي تحدثنا عنها سابقًا. # Post model class Post(models.Model): . . . # Each post can receive likes from multiple users, and each user can like multiple posts likes = models.ManyToManyField(User, related_name='post_like') . . . def get_number_of_likes(self): return self.likes.count() ومن ثم نضيف الأنواع types والطفرات mutations. class PostType(DjangoObjectType): class Meta: model = models.Post number_of_likes = graphene.String() def resolve_number_of_likes(self, info): return self.get_number_of_likes() لاحظ التعليمة self.get_number_of_likes() في السطر 8 التي تستدعي الدالة get_number_of_likes() التي عرّفتها في النموذج. ولإضافة إعجاب إلى منشور، يجب عليك معرفة كل من معرّف id المقال، ومعرّف id المستخدم الذي يريد التفاعل بإعجاب مع هذا المقال. لاحظ الكود المكتوب من السطر 11 إلى السطر 14، إذا كان المنشور يحتوي على إعجاب من المستخدم الحالي، فسيؤدي الضغط على زر الإعجاب إلى إزالة الإعجاب السابق، وإذا لم يكن كذلك، سيُضاف إعجاب إلى المقال. إعداد الواجهة الأمامية سنحتاج الآن إلى إضافة زر الإعجاب إلى صفحة النشر، لذا ارجع إلى Post.vue. قسم HTML من Post.vue. <template> <div class="home"> . . . <!-- Like, Comment and Share --> <div class=". . ."> <div v-if="this.liked === true" @click="this.updateLike()"> <i class="fa-solid fa-thumbs-up"> <span class="font-sans font-semibold ml-1">{{ this.numberOfLikes }}</span> </i> </div> <div v-else @click="this.updateLike()"> <i class="fa-regular fa-thumbs-up"> <span class="font-sans font-semibold ml-1">{{ this.numberOfLikes }}</span> </i> </div> . . . </div> . . . </div> </template> قسم جافا سكريبت من Post.vue <script> import { POST_BY_SLUG } from "@/queries"; import { UPDATE_POST_LIKE } from "@/mutations"; . . . export default { . . . async created() { . . . // Find if the current user has liked the post let likedUsers = this.postBySlug.likes; for (let likedUser in likedUsers) { if (likedUsers[likedUser].id === this.userID) { this.liked = true; } } // Get the number of likes this.numberOfLikes = parseInt(this.postBySlug.numberOfLikes); }, methods: { updateLike() { if (this.liked === true) { this.numberOfLikes = this.numberOfLikes - 1; } else { this.numberOfLikes = this.numberOfLikes + 1; } this.liked = !this.liked; this.$apollo.mutate({ mutation: UPDATE_POST_LIKE, variables: { postID: this.postBySlug.id, userID: this.userID, }, }); }, }, }; </script> لاحظ أننا حذفنا بعض التعليمات البرمجية في المثال السابق كي لا تكون طويلةً جدًا، ولكن ما تزال هناك أربعة أمور نحتاج إلى التحدث عنها في هذا المثال. أولاً، فيما يتعلق بالاستعلام POST_BY_SLUG الذي تستخدمه لاسترجاع المقال، يجب التأكد من أنه يجلب عدد الإعجابات والمستخدمين الذين تفاعلوا مع المقال. الملف query.js: export const POST_BY_SLUG = gql` query ($slug: String!) { postBySlug(slug: $slug) { . . . numberOfLikes likes { id } . . . } } `; الخطوة التالية، في الخطاف created()، وبعد أن تسترجع المنشور، يجب عليك تحديد ما إذا كان المستخدم الحالي موجودًا في قائمة المستخدمين الذين تفاعلوا مع المنشور. فيما بعد، عند استدعاء الدالة updateLike()، ستعمل هذه الدالة على تغيير عدد الإعجابات وذلك في حال تفاعل المستخدم مع بالمنشور أو لم يتفاعل. وأخيرًا، ستعمل الدالة updateLike()،على تحديث عدد إعجابات المنشور في الواجهة الخلفية باستخدام طفرة UPDATE_POST_LIKE. الملف mutations.js: export const UPDATE_POST_LIKE = gql` mutation ($postID: ID!, $userID: ID!) { updatePostLike(postId: $postID, userId: $userID) { post { id title likes { id } } } } `; تحدي برمجي والآن بعد أن تعلمنا كيفية إنشاء نظام التعليقات ونظام التفاعل بالإعجاب، دعنا نفكر في تحدٍّ أكبر، فماذا لو أردنا إنشاء نظام تعليق متداخل، بحيث نتيح للمستخدمين إمكانية التعليق على تعليق آخر؟ إذًا كيف يمكننا تغيير الشيفرات البرمجية السابقة لجعل ذلك ممكنًا؟ جرب العمل على ذلك وفكر وكيف يمكننا إنشاء نظام للتفاعل بإعجاب على التعليقات. يمكنك الاطلاع على كامل الكود المصدري الذي يحتوي على التطبيق العملي للوظائف التي مرت معنا في سلسلة المقالات هذه. الخلاصة بهذا نكون قد تعرفنا على طريقة إضافة التعليقات والإعجابات على المقالات ووصلنا لنهاية هذه السلسلة من المقالات التي شرحنا من خلالها كيفية إنشاء تطبيق ويب حديث من صفحة واحدة باستخدام إطارالعمل جانغو Django كواجهة خلفية، وإطار العمل فيو Vue كواجهة أمامية، مع استخدام GraphQL كلغة للتفاعل مع واجهة برمجة التطبيقات API التي تربط بينهما. ترجمة -وبتصرّف- للمقال Create a Modern Application with Django and Vue #3. اقرأ أيضًا المقال السابق: إنشاء تطبيق حديث باستخدام Django و Vue | الجزء الثاني: ربط الواجهة الخلفية والأمامية مدخل إلى المكتبة GraphQL واستعمالاتها في بناء تطبيقات الويب الحديثة بناء تطبيق ويب لإدارة معلومات العملاء باستخدام جانغو Django وريآكت React إنشاء نماذج جانغو Django Models وربطها بقاعدة البيانات تعرف على أمان تطبيقات جانغو
-
لا يمكن أن تخفى على أحد الشعبية الكبيرة التي تحظى بها المدونات الصوتية، أو ما تُعرف بمصطلح البودكاست Podcast في يومنا هذا، فهي وسيلة رائعة لجذب الجمهور والتفاعل معهم بطرق لا يمكن للمحتوى المكتوب تحقيقها. ونتيجةً لهذه الشعبية المتزايدة للبودكاست، يتطلع الكثير من الأشخاص إلى إطلاق بودكاست جديد خاص بهم، ويتساءلون عن الطريقة الأفضل لبدء هذا العمل، لذلك ترجمنا هذا الدليل الشامل الذي نضع فيه خبرات متراكمة في صناعة البودكاست وجني الأرباح منه؛ فسواءً كنت ترغب في إطلاق بودكاست مستقل، أو دمجه مع مدونتك العادية، فإن الدخول إلى عالم البودكاست خطوة صائبة ومهمة في هذا الوقت. هذا المقال هو المقال الأول من سلسلة صناعة البودكاست، التي سنتناول فيها تاريخ البودكاست وأنواعه، والمعدات التي يمكن العمل بها؛ إلى جانب تقديم نصائح حول كيفية إنجاح هذا المجال. تاريخ البودكاست Podcast قبل أن نتطرق إلى كيفية إطلاق البودكاست، دعونا نرجع خطوةً إلى الوراء ونتحدث عن بدايات البودكاست تاريخيًا. في الواقع، بدأ البودكاست لأول مرة عام 2004 عندما تعاون أحد منتجي فيديو MTV مع مطور البرامج ديف وينر Dave Winer لإنشاء شيء جديد أطلقوا عليه اسم iPodder. أتاح هذا البرنامج الجديد إمكانية تنزيل بث الراديو عبر الإنترنت على جهاز iPod، كما أنشأ مطور البرامج وينر خدمة Real Simple Syndication Feed والتي تُعرف اختصارًا بـ RSS، وهي مكون رئيسي في البث الصوتي. بعد إنشاء جهاز iPodder، عمل المطورون الآخرون على تطوير وتحسين الفكرة الأصلية، وفي ذاك الوقت، لم يكن للبودكاست أو البث الصوتي أي اسم خاص به، وبقي على هذا الحال حتى أواخر عام 2004، حين صيغت كلمة Podcasting لأول مرة من قِبل الكاتب بن هامرسلي Ben Hammersley في مقال له نُشر في صحيفة الغارديان؛ فقد كتب هامرسلي حينها: كان كريستوفر ليندون Christopher Lyndon الصحفي السابق في مجلة نيويورك تايمز والإذاعة الوطنية العامة من أوائل رواد التدوين الصوتي Podcasting؛ فقد كان أول من سجل صوته على على ملف MP3 ونُشر عبر خدمة RSS. وفي ذات المقال السابق الذي نُشر على صحيفة الجارديان، نُقل عن ليندون قوله: كما هو الحال مع التدوين الكتابي، قدم البودكاست فرصةً للشخص العادي ليوصل صوته إلى الناس، فأنت لا تحتاج إلى الاستثمار في معدات باهظة الثمن أو التسجيل في إستوديو احترافي لإصدار التسجيلات الصوتية للمستمعين. ومع مرور الوقت، ازدادت شعبية البودكاست وأضحى مجالًا متناميًا؛ إذ يستمع المزيد من الأشخاص إلى برامج البودكاست ويسجل آخرون لجماهيرهم. وإن كنت تسأل عن سبب قبول الناس لهذا المحتوى وتعلقهم به، فإليك السبب. ما الأمر الجذاب في البودكاست؟ إذا كنت ما تزال متشككًا حول مدى نجاح البودكاست، فإليك بعض الأسباب المشجعة على دخول عالم البودكاست. المحتوى الصوتي مناسب للكثيرين فكر في الأمر على هذا النحو: يقضي الكثير من الأشخاص وقتًا لا بأس فيه في التنقل بين المنزل ومكان العمل، لذا يمكنهم الاستماع إلى الراديو أو الموسيقى أو البودكاست خلال ذلك؛ فوفقا لصحيفة نيويورك بوست، يقضي الأمريكيون ما معدله 35 دقيقة يوميًا في التنقل، أو بعبارة أخرى، 19 يوم عمل كامل في كل عام، وبالنسبة لبعض الأشخاص الآخرين، فإن المدة قد تكون أطول من ذلك؛ وبما أنهم لا يستطيعون القراءة بأمان خلال القيادة، فإن خيار الاستماع مناسب جدًا لهم. علاوةً على ذلك، لا ينحصر الأمر على استماع الأشخاص للملفات الصوتية أثناء تنقلاتهم اليومية، بل قد يشمل أوقات إعداد وجبة الإفطار في الصباح، أو خلال تنظيف المنزل وطي الغسيل والاعتناء بحديقة المنزل، أو خلال الاعتناء بالأطفال ونحو ذلك. الشعبية المتزايدة للبودكاست من الأسباب المهمة أيضًا للانضمام إلى مجتمع البودكاست، هي الشعبية الهائلة للبودكاست؛ فعلى الرغم من أنك قد اعتقدت ذات مرة أن شعبية البودكاست مجرد موضة مؤقتة وستنتهي، إلا أن الإحصائيات تثبت عكس ذلك؛ فوفقًا لتقارير أبحاث أجرتها شركة Statista، كان 22% فقط من السكان البالغين في الولايات المتحدة يعرفون معنى كلمة البودكاست عام 2006؛ بينما في عام 2022 ارتفع هذا الرقم ليصل إلى 79%، ومن المتوقع أن يصل عدد المستمعين إلى البودكاست إلى أكثر من 100 مليون مستمع بحلول نهاية عام 2024 في الولايات المتحدة الأمريكية. تحسن إمكانية البحث لعل أحد العيوب الرئيسية للبودكاست في بداياته هو ضعف إمكانية البحث والاستكشاف، فقد كان من الصعب البحث عن ملفات البودكاست والوصول إليها، مما اضطر عدد كبير من صناع محتوى البودكاست إلى تسجيل محتوى مع عدم القدرة إلى إيصاله إلى عدد كبير من المستمعين. لكن مع تزايد شعبية البودكاست، تكافح الكثير من الشركات ذات الأسماء الكبيرة، مثل سبوتيفاي Spotify، وجوجل Google، لحل هذه المشكلة. وبدءًا من عام 2021، عملت جوجل على فهرسة ملفات البودكاست، بحيث يمكن البحث عنها عبر محرك البحث الخاص بها، والاستماع إليها مباشرةً على صفحة البحث. نشرت مجلة فوربس مؤخرًا مقالًا تناولت فيه هذه المشكلة، وقد أوضح رواد الأعمال سيرجي ريفزين Sergei Revzin وفاديم ريفزين Vadim Revzin المشكلة بقولهم: وأضاف سيرجي ريفزين Sergei Revzin وفاديم ريفزين Vadim Revzin: عملت سبوتيفاي أيضًا مع صناع البودكاست لتعزيز وصول محتواهم إلى المهتمين به؛ ففي فبراير من عام 2020، قال المؤسس والرئيس التنفيذي لشركة سبوتيفاي في بيان صحفي: كانت الأخبار السابقة نبأً رائعًا لصناع محتوى البودكاست، وواعدةً للأشخاص الذين يحاولون تنمية جمهورهم. البودكاست وسيلة رائعة لتقديم محتوى ممتع لقد تحدثنا عن الكثير من الأسباب المشجعة على الدخول إلى عالم صناعة محتوى البودكاست، لكن لا يمكن لهذه الفقرة أن تنتهي دون أن نتطرق إلى سبب مهم للغاية، وهو أنه يمكنك إنشاء محتوى بودكاست ترفيهي أو مسلٍ للمستمعين. على الرغم من أن صناعة البودكاست موجودة منذ عام 2004، لكن ما تزال الفرص متاحةً أمامك للإبداع؛ إذ يمكنك تقديم بودكاست حول أي شيء يهمك. يمكن أن يكون مجال تخصصك ضيقًا، مثل الحديث عن لعبة معينة، كما يمكن أن يكون واسعًا وتتحدث فيه عن مجال عام، مثل الحديث عن الرياضة عمومًا، أو الحديث عن تطوير الذات، وسنناقش هذه الجزئية بتوسع في الأجزاء القادمة من المقال، لكن ما يجب أن تعرفه الآن هو أن لديك خيارات عديدة لمحتوى البودكاست. يمكنك إجراء مقابلات مع الضيوف، بحيث يتحدث كل ضيف في المجال الذي يتقنه، أو يمكنك تقديم محتوى قصص خيالية كانت أو واقعية؛ وفي كلتا الحالتين، يجب أن تتقن عناصر سرد القصص؛ إذ يبدو الأمر كما لو أننا عدنا بالزمن إلى منتصف القرن الماضي، حين كانت تجتمع العائلة حول الراديو لسماع الأخبار، أين كان الأمر ممتعًا جدًا آنذاك. خاتمة بهذا نكون قد وصلنا إلى نهاية هذا المقال، وسنتحدث في المقال القادم حول أنواع البودكاست. ترجمة -وبتصرّف- للمقال How to Start a Podcast and Make Money لصاحبه Ryan Robinson. اقرأ أيضًا إنشاء المحتوى وصناعة الآراء: التدوين والبودكاست الكلمات المفتاحية وأنواع مطابقتها دليل البحث عن الكلمات المفتاحية للمسوق بالمحتوى
-
سنوضح في مقال اليوم الخطوات اللازمة لربط الواجهة الخلفية backend مع الواجهة الأمامية frontend من سلسلة مقالات تطوير تطبيق مدونة حديث باستخدام جانغو وفيو. هذا المقال هو جزء من سلسلة مقالات تتحدث حول كيفية إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue: إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الأول. إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الثاني. إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الثالث. إن الشائع حاليًا في ربط الواجهتين الأمامية والخلفية لتطبيق ما هو استخدام تقنية تسمى REST API. ومصطلح API هو اختصار للواجهة البرمجية للتطبيقات Application Programming Interface، وهي تشير إلى الاتصال بين تطبيقين برمجيين، أما REST فهو اختصار لنقل الحالة التمثيلية Representational State Transfer، وهو يشير إلى بنية محددة يتبعها هذا النوع من الاتصال. يتكون طلب REST API عادةً من نقطة وصول endpoint تتصل مع الخادم، إضافةً إلى طريقة HTTP وترويسة Head وجسم Body. تحتوي الترويسة على عناصر التعريف meta، مثل التخبئة caching واستيثاق المستخدم user authentication واختبار AB، بينما يحتوي الجسم على البيانات التي يريد العميل إرسالها إلى الخادم. ومع ذلك، فإنه ثمة خلل بسيط في REST API، وهو أنه من المستحيل تصميم واجهات برمجية تجلب البيانات التي يحتاجها العميل بالضبط، إذ من الشائع أن تجلب REST API بيانات زائدة أو ناقصة. ولذلك، طُوّرت لغة الاستعلام غراف كيو إل GraphQL بهدف حل هذه المشكلة، إذ تستخدم المخططات schemas للتأكد من جلب البيانات المحددة فقط لكل طلب، وسنرى كيف يحدث ذلك لاحقًا. إعداد غراف كيو إل GraphQL باستخدام جانغو Django لنبدأ بإعداد غراف كيو إل GraphQL في الواجهة الخلفية، ستحتاج إلى تثبيت حزمة جديدة تسمى graphene-django وهي حزمة توفر مجموعة من الأدوات والميزات التي تسهل عملية تطوير واجهات GraphQL داخل تطبيقات Django عبر تفعيل الأمر التالي: pip install graphene-django انتقل بعد ذلك إلى مجلد settings.py وابحث عن المتغير INSTALLED_APPS. يجب عليك إضافة graphene-django داخل المجلد لكي يتمكن جانغو من العثور على هذه الحزمة. INSTALLED_APPS = [ . . . "blog", "graphene_django", ] إعداد graphene-django ما زال هناك بعض المهام التي يجب عليك إنجازها قبل أن تتمكن من استخدام GraphQL. أولاً، ستحتاج إلى إعداد نمط الرابط URL pattern لخدمة الواجهات البرمجية للتطبيقات APIs في GraphQL، والذي يحدد كيفية تطابق عناوين URL مع عرض معين في تطبيق Django ويستخدم لتحويل طلبات المستخدم إلى العرض المناسب لمعالجتها. للقيام بذلك انتقل إلى الملف urls.py وأضف الشيفرة التالية: from django.views.decorators.csrf import csrf_exempt from graphene_django.views import GraphQLView urlpatterns = [ . . . path("graphql", csrf_exempt(GraphQLView.as_view(graphiql=True))), ] وبعد ذلك، أنشئ المخططات schemas وحدد لجانغو مكان العثور عليها في مجلد settings.py. تتبع مخططات GraphQL نمطًا يسمح لجانغو بترجمة نماذج قاعدة البيانات database إلى GraphQL وبالعكس، ولنأخذ فيما يلي نموذج الموقع Site model كمثال: class Site(models.Model): name = models.CharField(max_length=200) description = models.TextField() logo = models.ImageField(upload_to='site/logo/') class Meta: verbose_name = 'site' verbose_name_plural = '1. Site' def __str__(self): return self.name أنشئ ملف schema.py داخل مجلد المدونة blog. import graphene from graphene_django import DjangoObjectType from blog import models # Define type class SiteType(DjangoObjectType): class Meta: model = models.Site # The Query class class Query(graphene.ObjectType): site = graphene.Field(types.SiteType) def resolve_site(root, info): return ( models.Site.objects.first() ) كما هو واضح، يُقسم هذا الملف إلى ثلاثة أجزاء. أولًا، يجب عليك استيراد الحزم والنماذج اللازمة. ثم يُصرّح عن صنف SiteType ويُربط مع نموذج الموقع. وأخيرًا، يستخدم الصنف Query الذي يسمح لك باسترداد المعلومات عبر GraphQL API. أما لإنشاء معلومات أو تحديثها، فستحتاج إلى استخدام صنف آخر يُدعى Mutation والذي سنتحدث عنه بالتفصيل في المقال الثالث من السلسلة. توجد الدالة Resolve_site داخل الصنف Query وهي تعمل على استرجاع السجل الأول من النموذج Site model (أي تعيد الكائن الأول الموجود في قاعدة البيانات المرتبطة بهذا النموذج). ترتبط هذه الدالة تلقائيًا مع متغير يحمل نفس الاسم site، هذا يعني أنه عند استدعاء الدالة، ستكون النتيجة متاحة مباشرةً من خلال المتغير site دون الحاجة إلى تحديد اسم جديد له، إذ يعمل هذا الجزء تمامًا مثل Django QuerySet لاسترجاع البيانات من قاعدة البيانات. إذَا عندما تستدعي الدالة Resolve_site فإنها سترجع لك السجل الأول من نموذج Site ووتخزنها في المتغير site تلقائيًا، مما يسهل الوصول إلى هذه البيانات لاحقًا. إنشاء المخططات Schemas يمكنك الآن تكرار نفس الطريقة لجميع النماذج، ولكي تتجنب الحجم الكبير لملف المخطط، يمكنك فصله إلى ثلاثة ملفات، وهي: schema.py types.py queries.py ملف schema.py import graphene from blog import queries schema = graphene.Schema(query=queries.Query) ملف types.py import graphene from graphene_django import DjangoObjectType from blog import models class SiteType(DjangoObjectType): class Meta: model = models.Site class UserType(DjangoObjectType): class Meta: model = models.User class CategoryType(DjangoObjectType): class Meta: model = models.Category class TagType(DjangoObjectType): class Meta: model = models.Tag class PostType(DjangoObjectType): class Meta: model = models.Post queries.py import graphene from blog import models from blog import types # The Query class class Query(graphene.ObjectType): site = graphene.Field(types.SiteType) all_posts = graphene.List(types.PostType) all_categories = graphene.List(types.CategoryType) all_tags = graphene.List(types.TagType) posts_by_category = graphene.List(types.PostType, category=graphene.String()) posts_by_tag = graphene.List(types.PostType, tag=graphene.String()) post_by_slug = graphene.Field(types.PostType, slug=graphene.String()) def resolve_site(root, info): return ( models.Site.objects.first() ) def resolve_all_posts(root, info): return ( models.Post.objects.all() ) def resolve_all_categories(root, info): return ( models.Category.objects.all() ) def resolve_all_tags(root, info): return ( models.Tag.objects.all() ) def resolve_posts_by_category(root, info, category): return ( models.Post.objects.filter(category__slug__iexact=category) ) def resolve_posts_by_tag(root, info, tag): return ( models.Post.objects.filter(tag__slug__iexact=tag) ) def resolve_post_by_slug(root, info, slug): return ( models.Post.objects.get(slug__iexact=slug) ) والآن، يجب عليك إخبار جانغو بمكان العثور على ملف المخطط، لذا انتقل إلى settings.py وأضف الشيفرة التالية: # Configure GraphQL GRAPHENE = { "SCHEMA": "blog.schema.schema", } ولكي تتأكد من عمل المخططات على النحو الصحيح، افتح المتصفح وانتقل إلى http://127.0.0.1:8000/graphql، يجب أن تشاهد واجهة GraphiQL على النحو التالي: لاحظ كيف نسترجع المعلومات في هذا المثال، هذه لغة GraphQL، وهذه هي الطريقة التي سنسترجع بها البيانات في الواجهة الأمامية، والتي سنشرحها لاحقًا. إعداد CORS قبل أن ننتقل إلى الواجهة الأمامية، ثمة شيء يجب الاهتمام به. افتراضيًا، لا يمكن نقل البيانات إلا داخل التطبيق نفسه لأسباب الحماية، ولكننا نحتاج إلى تدفق البيانات بين تطبيقين مختلفين، ولمعالجة هذه المشكلة، يجب تمكين وظيفة CORS، وهي اختصار لـ Cross Origin Resource Sharing والتي تعني مشاركة الموارد ذات الأصول المختلفة. أولاً، ثبِّت حزمة Django-cors-headers. ومن داخل تطبيق الواجهة الخلفية، فعِّل الأمر التالي: pip install django-cors-headers أضف "corsheaders" إلى المتغير INSTALLED_APPS: INSTALLED_APPS = [ . . . "corsheaders", ] ثم أضف "corsheaders.middleware.CorsMiddleware" إلى المتغير MIDDLEWARE لتمكين دعم CORS في تطبيق جانغو: MIDDLEWARE = [ "corsheaders.middleware.CorsMiddleware", . . . ] وأخيرًا، أضف الشيفرة التالية إلى settings.py: CORS_ORIGIN_ALLOW_ALL = False CORS_ORIGIN_WHITELIST = ("http://localhost:8080",) # Matches the port that Vue.js is using إعداد Apollo باستخدام Vue.js والآن، حان الوقت للانتقال إلى الواجهة الأمامية. أولًا، يجب تثبيت مكتبة Apollo، إذ تتيح لك استخدام GraphQL في تطبيق Vue. ويمكنك تثبيتها من خلال تفعيل الأمر التالي: npm install --save graphql graphql-tag @apollo/client ضمن مجلد src، أنشئ ملف جديد باسم apollo-config.js وأضف له الشيفرة التالية: import { ApolloClient, createHttpLink, InMemoryCache, } from "@apollo/client/core"; // HTTP connection to the API const httpLink = createHttpLink({ uri: "http://127.0.0.1:8000/graphql", // Matches the url and port that Django is using }); // Cache implementation const cache = new InMemoryCache(); // Create the apollo client const apolloClient = new ApolloClient({ link: httpLink, cache, }); ثم انتقل إلى main.js واستورد apolloClient كي تتيح لتطبيقك القدرة على التفاعل مع واجهات GraphQL واسترجاع البيانات بشكل ديناميكي: import { apolloClient } from "@/apollo-config"; createApp(App).use(router).use(apolloClient).mount("#app"); أصبح بإمكانك الآن استخدام لغة GraphQL لاسترجاع البيانات من الواجهة الخلفية، ولتطبيق مثال عملي على ذلك، سننتقل إلى App.vue وهناك سنستعيد اسم موقعنا بكتابة الكود التالي: <template> <div class="container mx-auto max-w-3xl px-4 sm:px-6 xl:max-w-5xl xl:px-0"> <div class="flex flex-col justify-between h-screen"> <header class="flex flex-row items-center justify-between py-10"> <div class="nav-logo text-2xl font-bold"> <router-link to="/" v-if="mySite">{{ mySite.name }}</router-link> </div> . . . </header> . . . </div> </div> </template> <script> import gql from "graphql-tag"; export default { data() { return { mySite: null, }; }, async created() { const siteInfo = await this.$apollo.query({ query: gql` query { site { name } } `, }); this.mySite = siteInfo.data.site; }, }; </script> يُفضِّل البعض إنشاء ملف منفصل لجميع الاستعلامات queries، ومن ثم استيراده إلى ملف فيو كما في الكود التالي: ملف src/queries.js import gql from "graphql-tag"; export const SITE_INFO = gql` query { site { name } } `; ملف App.vue . . . <script> import { SITE_INFO } from "@/queries"; export default { data() { return { mySite: null, }; }, async created() { const siteInfo = await this.$apollo.query({ query: SITE_INFO, }); this.mySite = siteInfo.data.site; }, }; </script> صفحة الصنف Category تبقى لدينا الآن مشكلة من المقال السابق، عندما نستدعي موجه router، فكيف لهذا الموجه أن يعرف الصفحة التي يجب إعادتها؟ فعلى سبيل المثال، عندما نضغط على رابط Category One يجب إرجاع قائمة المنشورات التي تنتمي إلى الصنف الأول Category One، ولكن كيف يمكن للموجه القيام بذلك؟ دعونا نرى مثالًا. أولًا، في ملف router/index.js الذي عرفنا فيه جميع الوجهات لدينا، يجب علينا تعيين جزء من نمط الرابط URL pattern كمتغير. ففي المثال التالي، سيتم تعيين الكلمة بعد /category/ كمتغير Category. وسيكون بالإمكان الوصول إلى هذا المتغير في مكون CategoryView. import { createRouter, createWebHistory } from "vue-router"; . . . const routes = [ { path: "/", name: "Home", component: HomeView, }, { path: "/category/:category", name: "Category", component: CategoryView, }, . . . ]; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes, }); export default router; وبعد ذلك، في عرض AllCategories (الذي سيُظهر قائمة بجميع التصنيفات)، سنعمل على تمرير بعض المعلومات إلى المتغير Category. <template> <div class="flex flex-col place-content-center place-items-center"> <div class="py-8 border-b-2"> <h1 class="text-5xl font-extrabold">All Categories</h1> </div> <div class="flex flex-wrap py-8"> <router-link v-for="category in this.allCategories" :key="category.name" class=". . ." :to="`/category/${category.slug}`" >{{ category.name }}</router-link > </div> </div> </template> وفي عرض Category يمكننا الوصول إلى المتغير Category باستخدام الخاصية this.$route. <script> // @ is an alias to /src import PostList from "@/components/PostList.vue"; import { POSTS_BY_CATEGORY } from "@/queries"; export default { components: { PostList }, name: "CategoryView", data() { return { postsByCategory: null, }; }, async created() { const posts = await this.$apollo.query({ query: POSTS_BY_CATEGORY, variables: { category: this.$route.params.category, }, }); this.postsByCategory = posts.data.postsByCategory; }, }; </script> وأخيرًا، يمكن استرجاع المنشورات باستخدام الاستعلام POSTS_BY_CATEGORY. export const POSTS_BY_CATEGORY = gql` query ($category: String!) { postsByCategory(category: $category) { title slug content isPublished isFeatured createdAt } } `; ومع هذا المثال، من المفترض أن تكون قادرًا الآن على إنشاء صفحتي المنشور post التي تعرض محتوى منشو أو مقالة معينة، وصفحة الوسم tag التي تظهر قائمة بالمنشورات المرتبطة بوسم معين. إنشاء وتحديث المعلومات باستخدام الطفرات Mutations ذكرنا في المقال السابق من هذه السلسلة أنه يمكننا استخدام الاستعلامات queries لاسترجاع المعلومات من الواجهة الخلفية وإرسالها إلى الواجهة الأمامية. ومع ذلك، من الشائع في تطبيقات الويب الحديثة أن ترسل المعلومات من الواجهة الأمامية إلى الواجهة الخلفية. وللقيام بذلك، لا بُدّ من الحديث عن مفهوم جديد في GraphQL يُسمى الطفرة mutation. ملاحظة: تُستخدم الطفرات mutations لتغيير البيانات في الخادم. فإذا أراد المستخدم مثلًا إضافة أو تحديث أو حذف بيانات عليه أن يستخدم mutation لإرسال طلب بالتعديل المطلوب والخادم يقوم بتحديث البيانات وإرجاع النتيجة. نعود إلى الواجهة الخلفية وننتقل إلى ملف cd في مجلد blog وننشئ ملف باسم Mutations.py. سنكتشف في المثال التالي كيفية نقل البيانات إلى الواجهة الخلفية لإنشاء مستخدم جديد. import graphene from blog import models, types # Mutation sends data to the database class CreateUser(graphene.Mutation): user = graphene.Field(types.UserType) class Arguments: username = graphene.String(required=True) password = graphene.String(required=True) email = graphene.String(required=True) def mutate(self, info, username, password, email): user = models.User( username=username, email=email, ) user.set_password(password) user.save() return CreateUser(user=user) لاحظ في السطر 7 من الكود أعلاه أن UserType مرتبط بنموذج المستخدم User model. أما في الأسطر من 9 إلى 12، فلاحظ أنه لإنشاء مستخدم جديد، يجب إضافة ثلاث عناصر هي اسم المستخدم وكلمة المرور والبريد الإلكتروني. أما الأسطر من 15 إلى 18، فيجب أن تكون واضحة لك، فهي ذات الطريقة التي تنشئ من خلالها عنصرًا جديدًا باستخدام Django QuerySet. السطر 19 مسؤول عن تعيين كلمة المرور، ولأسباب تتعلق الحماية لا يمكنك حفظ كلمة المرور الأصلية للمستخدم في قاعدة البيانات لديك، ويمكن تشفيرها من خلال التابع set_password(). والآن، يجب عليك تضمين ملف Mutation.py في مخطط GraphQL، لذا انتقل إلى schema.py: import graphene from blog import queries, mutations schema = graphene.Schema(query=queries.Query, mutation=mutations.Mutation) ولتتأكد من أنه يعمل على النحو الصحيح، افتح المتصفح وانتقل إلى http://127.0.0.1:8000/graphql للوصول إلى واجهة GraphiQL. mutation { createUser( username: "testuser2022" email: "testuser2022@test.com" password: "testuser2022" ) { user { id username } } } من المفترض أنك تعرف كيفية استخدام ذلك في الواجهة الأمامية. على سبيل المثال: <script> import { USER_SIGNUP } from "@/mutations"; export default { name: "SignUpView", data() {. . .}, methods: { async userSignUp() { // Register user const user = await this.$apollo.mutate({ mutation: USER_SIGNUP, variables: { username: this.signUpDetails.username, email: this.signUpDetails.email, password: this.signUpDetails.password, }, }); // Do something with the variable user . . . }, }, }; </script> src/mutations.js import gql from "graphql-tag"; export const USER_SIGNUP = gql` mutation ($username: String!, $email: String!, $password: String!) { createUser(username: $username, email: $email, password: $password) { user { id username } } } `; استيثاق المستخدم User authentication مع جانغو وفيو جي إس والآن بعد أن تعرفت على كيفية إرسال البيانات إلى الواجهة الخلفية، لن تواجه صعوبةً كبيرةً في استيثاق المستخدم User authentication. في البداية، ستطلب من المستخدم إدخال اسم المستخدم وكلمة المرور الخاصين به وإرسال تلك المعلومات إلى الواجهة الخلفية، ثم في الواجهة الخلفية، سيعثر جانغو على المستخدم بناءً على الاسم، وسيحاول مقارنة كلمة المرور المُدخلة مع كلمة المرور المخزنة في قاعدة البيانات، وإذا تطابقت الكلمتان، سيكون بإمكان المستخدم تسجيل الدخول. ومع ذلك، قد تواجه هذه العملية بعض العقبات في الممارسة العملية. فبدايةً، تُعد عملية إرسال كلمة مرور المستخدم ذهابًا وإيابًا عملية غير آمنة تمامًا. لذا ستحتاج إلى طريقة ما لتشفير البيانات. الطريقة الأكثر استخدامًا هي تقنية JWT، وهو اختصار لـ JSON Web Token. إذ تعمل هذه الطريقة على تشفير بيانات بصيغة JSON إلى ترميز بصيغة token. يمكنك رؤية مثال عليها من هنا. سيُحتفظ بهذا الترميز ضمن التخزين المحلي للمتصفح، وطالما بقي هذا الترميز ضمن ذاكرة المتصفح، سيبقى تسجيل الدخول قائمًا. المشكلة الثانية سببها نظام مكونات فيو Vue. فكما تعلم كل مكون مستقل بذاته فإذا تغير أحد المكونات، فإنه لا يؤثر على المكونات الأخرى. لكننا في هذه الحالة نريد أن تشترك جميع المكونات في نفس الوضعية، فإذا سجل المستخدم دخوله، نريد أن تتعرف جميع المكونات الأخرى على حالة المستخدم أثناء تسجيل الدخول. لذلك ستحتاج إلى مكان مركزي لتخزين هذه المعلومات حين يقوم المستخدم بتسجيل الدخول، ويجب أن تكون جميع المكونات قادرة على قراءة البيانات من ذلك المكان. ولتحقيق بذلك، ستحتاج إلى استخدام Pinia، وهي مكتبة Vue جديدة أُنشئت من خلال Vuex. دمج JWT في الواجهة الخلفية في البداية، سندمج JWT مع الواجهة الخلفية لجانغو، لذلك ستحتاج إلى تثبيت حزمة أخرى باسم django-graphql-jwt: pip install django-graphql-jwt انتقل الآن إلى ملف settings.py وأضف برنامجًا وسيطًا، وكذلك الاستيثاق في الواجهة الخلفية. ستحل هذه الإعدادات مكان الإعدادات الافتراضية لجانغو، وهو ما يتيح استخدام JWT. MIDDLEWARE = [ "django.contrib.auth.middleware.AuthenticationMiddleware", ] # Configure GraphQL GRAPHENE = { "SCHEMA": "blog.schema.schema", 'MIDDLEWARE': [ 'graphql_jwt.middleware.JSONWebTokenMiddleware', ], } # Auth Backends AUTHENTICATION_BACKENDS = [ 'graphql_jwt.backends.JSONWebTokenBackend', 'django.contrib.auth.backends.ModelBackend', ] لاستخدام هذه الحزمة، انتقل إلى موقع muts.py وأضف الشيفرة التالية: import graphql_jwt class Mutation(graphene.ObjectType): token_auth = graphql_jwt.ObtainJSONWebToken.Field() verify_token = graphql_jwt.Verify.Field() refresh_token = graphql_jwt.Refresh.Field() يمكننا الآن اختباره في واجهة GraphiQL: في حال كلمة مرور خاطئة في حال مستخدم موثوق كما هو واضح، فإن متطلبات تسجيل الدخول هي اسم المستخدم وكلمة المرور، وإذا تم التحقق من وثوقية هذا المستخدم بنجاح (أي أدخل اسم مستخدم وكلمة مرور صحيحة) سيُرسل من الواجهة الخلفية ترميز مشفر token. ويمكن حفظ هذا الترميز في ذاكرة المتصفح. يمكنك أيضًا تخصيص سلوك ObtainJSONWebToken من خلال العودة إلى Mutions.py: # Customize the ObtainJSONWebToken behavior to include the user info class ObtainJSONWebToken(graphql_jwt.JSONWebTokenMutation): user = graphene.Field(types.UserType) @classmethod def resolve(cls, root, info, **kwargs): return cls(user=info.context.user) class Mutation(graphene.ObjectType): token_auth = ObtainJSONWebToken.Field() لاحظ أن ObtainJSONWebToken يتوسع إلى JSONWebTokenMutation الافتراضي، ومن ثم في صنف Mutation، ويمكنك استخدام ObtainJSONWebToken عوضًا عن ذلك. يمكن الآن الحصول على مزيد من المعلومات حول المستخدم عبر GraphQL. استخدام حزمة بينيا Pinia في الواجهة الأمامية حان الوقت الآن لحل المشكلة الثانية في الواجهة الأمامية. والخطوة الأولى هي تثبيت بينيا Pinia. npm install pinia اذهب الآن إلى main.js وتأكد من أن تطبيقك يستخدم بينيا Pinia. import { createPinia } from "pinia"; createApp(App).use(createPinia()).use(router).use(apolloProvider).mount("#app"); ارجع الآن إلى مجلد src وأنشئ مجلد باسم stores، وهو المجلد الذي سنخزن فيه جميع بيانات التطبيق. في الوقت الحالي، كل ما تحتاج إليه هو تخزين القيم الخاصة بالمستخدم (بيانات تسجيل الدخول) وسنحافظ على المعلومات فيه حتى بعد تحديث الصفحة، لذا أنشئ ملف باسم user.js من أجل التعامل مع التخزين كما يلي: import { defineStore } from "pinia"; export const useUserStore = defineStore({ id: "user", state: () => ({ token: localStorage.getItem("token") || null, user: localStorage.getItem("user") || null, }), getters: { getToken: (state) => state.token, getUser: (state) => JSON.parse(state.user), }, actions: { setToken(token) { this.token = token; // Save token to local storage localStorage.setItem("token", this.token); }, removeToken() { this.token = null; // Delete token from local storage localStorage.removeItem("token"); }, setUser(user) { this.user = JSON.stringify(user); // Save user to local storage localStorage.setItem("user", this.user); }, removeUser() { this.user = null; // Delete user from local storage localStorage.removeItem("user"); }, }, }); لاحظ أن هذا مخزن البيانات يتكون من ثلاثة أقسام، وهم state و getters و actions. تساعد هذه الأقسام الثلاثة في إدارة حالة التطبيق بطريقة منظمة وسهلة وإذا كنت على معرفة جيدة بكيفية إنشاء تطبيق فيو Vue فيُفترض أن يكون ذلك مفهومًا بالنسبة لك. تشبه state في Pinia الدالة data() في مكون فيو Vue، إذ تعمل على تحديد المتغيرات، باستثناء أن يمكن لجميع المكونات الوصول إلى هذه المتغيرات. في مثالنا، سيحاول فيو Vue الحصول على الترميز المشفر في ذاكرة المتصفح، فإذا لم يكن موجودًا، سيأخذ المتغير قيمة null. أما getters فهي توازي المتغيرات computed، إذ تنفذ إجراءات بسيطة، وعادةً ما يقتصر عملها على إرجاع قيمة state فحسب. وهنا أيضًا يمكن لجميع المكونات والصفحات الوصول إلى المتغيرات. وأخيرًا، يمكن تشبيه actions بـ methods الموجودة في مكون فيو Vue. كما أنها تؤدي بعض الإجراءات باستخدام الحالات states. وفي هذه الحالة، أنت تعمل على حفظ أو إزالة الترميز المشفر للمستخدم ومعلوماته. ثمة شيء آخر عليك ملاحظته، وهو أنه لا يمكنك حفظ الكائنات objects في الذاكرة المحلية، وإنما يمكنك حفظ السلاسل النصية strings فقط. لذا يجب عليك استخدام stringify() و parse() لتحويل البيانات إلى سلسلة، ومن ثم إعادتها إلى كائن. ستحتاج بعد ذلك إلى استخدام هذا المخزن عند تسجيل دخول المستخدم، وقد أنشأنا ملف SignIn.vue مثل هذا: <script> import { useUserStore } from "@/stores/user"; import { USER_SIGNIN } from "@/mutations"; export default { name: "SignInView", setup() { const userStore = useUserStore(); return { userStore }; }, data() { return { signInDetails: { username: "", password: "", }, }; }, methods: { async userSignIn() { const user = await this.$apollo.mutate({ mutation: USER_SIGNIN, variables: { username: this.signInDetails.username, password: this.signInDetails.password, }, }); this.userStore.setToken(user.data.tokenAuth.token); this.userStore.setUser(user.data.tokenAuth.user); }, }, }; </script> نلاحظ في السطر 2 استيراد مخزن المستخدم User store الذي أنشأته. في السطور 9-12، استدعاء مخزن المستخدم User store في الخطاف setup، وهو ما يجعل التعامل مع بينيا Pinia أسهل دون أي وظائف خريطة إضافية. في السطرين 32-33، استدعاء الإجراءين setToken() و setUser() اللذيْن أنشأناهما منذ قليل، وهو ما سيحفظ المعلومات داخل الذاكرة المحلية. هذه هي الطريقة التي يمكنك من خلالها تسجيل دخول المستخدم، ولكن ماذا لو كان المستخدم قد سجل دخوله أساسًا، لنلقي نظرة على هذا المثال: <script> import { SITE_INFO } from "@/queries"; import { useUserStore } from "@/stores/user"; export default { setup() { const userStore = useUserStore(); return { userStore }; }, data() { return { menuOpen: false, mySite: null, user: { isAuthenticated: false, token: this.userStore.getToken || "", info: this.userStore.getUser || {}, }, dataLoaded: false, }; }, async created() { const siteInfo = await this.$apollo.query({ query: SITE_INFO, }); this.mySite = siteInfo.data.site; if (this.user.token) { this.user.isAuthenticated = true; } }, methods: { userSignOut() { this.userStore.removeToken(); this.userStore.removeUser(); }, }, }; </script> نحاول في السطرين 18- 19 الحصول على الترميز المشفر token ومعلومات المستخدم user info من المخزن Store. في السطور 31-33، إذا كان الترميز المشفر token موجودًا، فسيُعد المستخدم مستوثقًا authentication . في السطور 38-41، ستعمل الطريقة userSignOut() على تسجيل خروج المستخدم عند استدعائها. بعد أن تعرفنا على كيفية استرجاع البيانات باستخدام الاستعلامات queries ووضحنا كيفية إرسال البيانات باستخدام الطفرات mutations، سنشرح في المقال التالي طريقة إنشاء نظام تعليقات وتفاعلات إعجاب لتطبيق المدونة الخاص بنا. ترجمة -وبتصرّف- للمقال Create a Modern Application with Django and Vue #2. اقرأ أيضًا المقال السابق: إنشاء تطبيق حديث باستخدام Django و Vue | الجزء الأول: الأساسيات تطوير الواجهة الأمامية لمواقع الويب Frontend Web Development تطوير الواجهة الخلفية لمواقع الويب Backend Web Development مقارنة بين أطر الواجهات الأمامية: Angular و React و Vue
-
يعد إطار العمل جانغو Django إطار ويب كامل full-stack قائم على لغة بايثون Python، ويتبع نمط تصميم MTV (اختصار للنمط البنائي للبرمجيات نموذج-قالب-عرض Model-Template-View). والمقصود بمصطلح إطار ويب متكامل full-stack أنه يمكننا من خلاله إنشاء كل من الواجهة الأمامية frontend والواجهة الخلفية backend معًا. ومع ذلك، ثمة عيب صغير في هذا الحل، فعندما يطلب المستخدم النهائي صفحة ويب، هنا يجب تصيير rendering الصفحة أولًا في الواجهة الخلفية، ومن ثم تُرسل صفحة HTML المُكوَّنة إلى المستخدم. وفي هذه الحالة، عندما يكون لديك عدد كبير من المستخدمين، سيضع ذلك ضغطًا كبيرًا على خادمك. لحل هذه المشكلة، عادةً ما يُقسِّم المطورون التطبيق إلى قسمين؛ الواجهة الخلفية والواجهة الأمامية. وفي هذه الحالة، عندما يطلب المستخدم صفحة ويب، لن تُكوِّن الواجهة الخلفية صفحة الويب، بل يكفي أن تجمع البيانات الضرورية فقط وتنقلها إلى الواجهة الأمامية. وهنا يأتي دور جهاز العميل الذي يتمتع عادةً بقدرات حاسوبية عالية، إذ يستخدم هذه البيانات لعرض صفحة الويب داخل المتصفح مباشرةً، وبالتالي تخفيف الضغط على الخادم. سنتحدث في سلسلة المقالات هذه حول كيفية إنشاء تطبيق حديث من صفحة واحدة باستخدام جانغو Django كواجهة خلفية، وفيو Vue كواجهة أمامية، وغراف كيو إل GraphQL كلغة معالجة API تربطهما معًا. هذا المقال هو جزء من سلسلة مقالات تتحدث حول كيفية إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue: إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الأول. إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الثاني. إنشاء تطبيق حديث باستخدام جانغو Django وفيو Vue - الجزء الثالث. مراجعة سريعة عن جانغو لنبدأ بمراجعة سريعة حول إطار عمل جانغو Django، جانغو هو إطار عمل ويب يعتمد على لغة بايثون ويتبع النمط البنائي MTV، الذي هو اختصار لثلاث كلمات: النموذج M = Model: عبارة عن واجهة تتيح لنا التفاعل مع قاعدة البيانات، مثل استرجاع السجلات أو إنشائها أو تحديثها أو حذفها. القالب T = Template: يمثل الواجهة الأمامية من إطار العمل، وهو الجزء الذي سيراه المستخدمون النهائيون. العرض V = View: يمثل الواجهة الخلفية للتطبيق، إذ يستخدم النموذج Model للتفاعل مع قاعدة البيانات، مثل استرجاع البيانات التي يطلبها المستخدم، ثم يعمل العرض View على معالجة هذه البيانات بطريقة ما، وتظهر النتيجة للمستخدم عبر القالب Template الذي عادةً ما يكون مخصصًا. في سلسلة المقالات الحالية؛ سنستخدم جانغو للواجهة الخلفية فقط، أي لن نستخدم القوالب والعروض في جانغو، ونستستخدم عوضًا عن ذلك Vue.js لبناء الواجهة الأمامية و GraphQL كطريقة للتواصل بين الواجهة الأمامية والخلفية. إنشاء مشروع جانغو جديد الطريقة التي سنعتمد عليها هي فصل مجلد الواجهة الخلفية عن مجلد الواجهة الأمامية، لذا فإن أول خطوة هي إنشاء هيكل المشروع بالطريقة التالية: blog ├── backend └── frontend انتقل إلى مجلد backend، وأنشئ بيئة بايثون افتراضية جديدة. وبيئة بايثون الافتراضية هي بيئة معزولة لكل تثبيت بايثون جديد، لذا عندما تعمل على تثبيت حزم داخل هذه البيئة الافتراضية لن يؤثر ذلك على بيئة بايثون الخاصة بنظامك، وهو أمر بالغ الأهمية لاسيما إذا كنت تستخدم نظام تشغيل لينكس Linux أو ماك أو إس macOS، ولا تريد التأثير على ملفاتهما الأساسية. cd backend python3 -m venv env سيؤدي الأمر السابق إلى إنشاء مجلد جديد يُدعى env مع إنشاء البيئة الافتراضية بداخله. ولتنشيط هذه البيئة الافتراضية، استخدم الأمر التالي: source env/bin/activate إذا كنت تستخدم نظام تشغيل ويندوز Windows، فاستخدم الأمر التالي عوضًا عن السابق، كما يُنصح بتثبيت WSL: env/Scripts/activate بعد تنشيط البيئة الافتراضية، ستبدو الطرفية Terminal كما في الشكل أدناه. لاحظ وجود (env) أمام اسم المستخدم، منا يدل على أنك تعمل حاليًا في البيئة الافتراضية. يمكنك الآن إنشاء مشروع جانغو جديد. python -m pip install Django django-admin startproject backend بعدها يمكنك إنشاء تطبيق جديد باسم blog: python manage.py startapp blog في النهاية، يجب أن يكون هيكل المشروع كما يلي: . ├── backend │ ├── backend │ ├── blog │ ├── manage.py │ └── requirements.txt └── frontend إنشاء النماذج Models تذكر أن النماذج هي عبارة عن واجهة يمكننا استخدامها للتفاعل مع قاعدة البيانات، وواحدة من المزايا الرائعة في جانغو هي أنه يمكنك تلقائيًا معرفة التغييرات التي أجريتها على النماذج، وتوليد ملفات التهجير migration files المقابلة، والتي يمكن استخدامها لإجراء تغييرات على قاعدة البيانات. نموذج الموقع Site Model لنبدأ بالنموذج Site الذي يخزن المعلومات الأساسية لموقعك على الويب. class Site(models.Model): name = models.CharField(max_length=200) description = models.TextField() logo = models.ImageField(upload_to='site/logo/') class Meta: verbose_name = 'site' verbose_name_plural = '1. Site' def __str__(self): return self.name نلاحظ في السطر الرابع الأمر ImageField الذي يخبر جانغو بتحميل الصورة إلى مجلد 'site/logo/' ولتحقيق ذلك، عليك القيام بشيئين اثنين. أولاً، يجب عليك تثبيت حزمة Pillow، إذ يحتاجها جانغو لمعالجة الصور. python -m pip install Pillow ثانيًا، ستحتاج إلى إعداد توجيه جديد لمكان التخزين في settings.py إذ يجب أن تخبر جانغو بالمكان الذي ستخزن فيه هذه الوسائط، وما هي عناوين URL التي ستستخدمها للوصول إلى هذه الملفات. import os # Media Files MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles') MEDIA_URL = '/media/' تشير الإعدادات السابقة إلى أن ملفات الوسائط ستُخزن داخل ملف /mediafiles وسنحتاج إلى استخدام البادئة /media/ قبل عنوان URL للوصول إلى الملفات. فعلى سبيل المثال، سيؤدي عنوان URL التالي http://localhost:3000/media/example.png إلى استرجاع الصورة /mediafiles/example.png. نموذج المستخدم User Model النموذج التالي هو نموذج المستخدم User model، ولحسن الحظ، فإن جانغو يأتي مزودًا بنموذج مستخدم مدمج، والذي يوفر الوظائف الأساسية المتعلقة بالأذونات permission والتراخيص authorization. ومع ذلك، سنجرب في مشروعنا هذا شيئًا أكثر تعقيدًا، مثل إضافة صور أفاتار avatar للملف الشخصي وإضافة سيرة ذاتية وبعض المعلومات الأخرى، ولتحقيق ذلك، ستحتاج إلى إنشاء نماذج مستخدم جديدة، والتي نوسع فيها الصنف AbstractUser، ومعنى نوسعه extends أي نرث منه صنف جديد لنخصصه وفق حاجتنا أو نضيف له المزيد من الميزات. from django.contrib.auth.models import AbstractUser # New user model class User(AbstractUser): avatar = models.ImageField( upload_to='users/avatars/%Y/%m/%d/', default='users/avatars/default.jpg' ) bio = models.TextField(max_length=500, null=True) location = models.CharField(max_length=30, null=True) website = models.CharField(max_length=100, null=True) joined_date = models.DateField(auto_now_add=True) class Meta: verbose_name = 'user' verbose_name_plural = '2. Users' def __str__(self): return self.username هكذا يبدو صنف AbstractUser في جانغو: from django.contrib.auth.models import AbstractUser # New user model class User(AbstractUser): avatar = models.ImageField( upload_to='users/avatars/%Y/%m/%d/', default='users/avatars/default.jpg' ) bio = models.TextField(max_length=500, null=True) location = models.CharField(max_length=30, null=True) website = models.CharField(max_length=100, null=True) joined_date = models.DateField(auto_now_add=True) class Meta: verbose_name = 'user' verbose_name_plural = '2. Users' def __str__(self): return self.username كما هو واضح، يوفر هذا النموذج بعض الحقول الأساسية، مثل الاسم الأول واسم العائلة ونحو ذلك. ستحتاج بعد ذلك إلى التأكد من أن جانغو يستخدم نموذج المستخدم الجديد كنموذج مستخدم افتراضي، لذلك انتقل إلى ملف إعدادات التطبيق settings.py وأضف له التوجيه directive التالي: # Change Default User Model AUTH_USER_MODEL = 'blog.User' نماذج الفئة Category والوسم Tag والمنشور Post class Category(models.Model): name = models.CharField(max_length=200) slug = models.SlugField() description = models.TextField() class Meta: verbose_name = 'category' verbose_name_plural = '3. Categories' def __str__(self): return self.name class Tag(models.Model): name = models.CharField(max_length=200) slug = models.SlugField() description = models.TextField() class Meta: verbose_name = 'tag' verbose_name_plural = '4. Tags' def __str__(self): return self.name class Post(models.Model): title = models.CharField(max_length=200) slug = models.SlugField() content = RichTextField() featured_image = models.ImageField( upload_to='posts/featured_images/%Y/%m/%d/') is_published = models.BooleanField(default=False) is_featured = models.BooleanField(default=False) created_at = models.DateField(auto_now_add=True) modified_at = models.DateField(auto_now=True) # Each post can receive likes from multiple users, and each user can like multiple posts likes = models.ManyToManyField(User, related_name='post_like') # Each post belong to one user and one category. # Each post has many tags, and each tag has many posts. category = models.ForeignKey( Category, on_delete=models.SET_NULL, null=True) tag = models.ManyToManyField(Tag) user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) class Meta: verbose_name = 'post' verbose_name_plural = '5. Posts' def __str__(self): return self.title def get_number_of_likes(self): return self.likes.count() لاحظ كيف تنفذ ميزة الإعجاب بالمنشورات (Like system) في السطر 13، وهو لا يعتمد على النوع البسيط IntegerField (وهو حقل لتخزين القيم الصحيحة) ولكنه يعمل تمامًا مثل الوسوم Tags. ويمكنك استخدام الدالة get_number_of_likes() لتحصل على عدد الإعجابات لكل منشور. نموذج التعليقات Comment model والآن دعونا نخطو خطوةً نحو الأمام، وننشئ قسمًا مخصصًا للتعليقات لهذا التطبيق: class Comment(models.Model): content = models.TextField(max_length=1000) created_at = models.DateField(auto_now_add=True) is_approved = models.BooleanField(default=False) # Each comment can receive likes from multiple users, and each user can like multiple comments likes = models.ManyToManyField(User, related_name='comment_like') # Each comment belongs to one user and one post user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) post = models.ForeignKey(Post, on_delete=models.SET_NULL, null=True) class Meta: verbose_name = 'comment' verbose_name_plural = '6. Comments' def __str__(self): if len(self.content) > 50: comment = self.content[:50] + '...' else: comment = self.content return comment def get_number_of_likes(self): return self.likes.count() إعداد لوحة التحكم في جانغو والآن حان الوقت لإعداد لوحة التحكم أو لوحة الإدارة في جانغو، لذا افتح ملف admin.py واكتب فيه التالي: from django.contrib import admin from .models import * # Register your models here. class UserAdmin(admin.ModelAdmin): list_display = ('username', 'first_name', 'last_name', 'email', 'date_joined') class CategoryAdmin(admin.ModelAdmin): prepopulated_fields = {'slug': ('name',)} class TagAdmin(admin.ModelAdmin): prepopulated_fields = {'slug': ('name',)} class PostAdmin(admin.ModelAdmin): prepopulated_fields = {'slug': ('title',)} list_display = ('title', 'is_published', 'is_featured', 'created_at') class CommentAdmin(admin.ModelAdmin): list_display = ('__str__', 'is_approved', 'created_at') admin.site.register(Site) admin.site.register(User, UserAdmin) admin.site.register(Category, CategoryAdmin) admin.site.register(Tag, TagAdmin) admin.site.register(Post, PostAdmin) admin.site.register(Comment, CommentAdmin) فيما يتعلق بـ CommentAdmin، فإن __str__ تشير إلى الدالة __str__() في نموذج التعليق. والتي ستعيد أول 50 حرفًا في السلسلة وتدمجها مع السلسلة .... والآن، فعِّل خادم التطوير وتأكد ما إذا كانت كل وظيفة تعمل على النحو الصحيح: python manage.py runserver وقبل الانتقال إلى الخطوة التالية، لا تنسَ إضافة بعض المعلومات الجانبية إلى مدونتك. مراجعة سريعة حول فيو جي إس Vue.js والآن بعد أن انتهينا من إعداد الواجهة الخلفية، حان الوقت للانتقال إلى الواجهة الأمامية، وبذلك الانتقال سنبدأ باستخدام فيو جي إس Vue.js في الجزء الثاني من مقالنا هذا لإعداد الواجهة الأمامية في تطبيقنا. قبل الخوض عميقًا، سنبدأ بمراجعة سريعة حول فيو جي إس Vue.js في حال لم تستخدمه من قبل، ويمكنك أيضًا الاطلاع على مقال مقدمة إلى Vue.js. فيو جي إس Vue.js هو أحد إطارات عمل جافا سكريبت JavaScript المخصصة لبناء الواجهات الأمامية، إذ يوفر لك نظامًا بسيطًا معتمدًا على المكونات، ما يسمح لك بإنشاء واجهات مستخدم تفاعلية. المقصود بـ "معتمدًا على المكونات" يعني أن المكون الجذري (App.vue) بإمكانه استيراد مكونات أخرى، وهي الملفات ذات الامتداد .vue، ويمكن لهذه المكونات استيراد المزيد من المكونات الأخرى، ما يسمح لك بإنشاء أنظمة معقدة ومتطورة للغاية. يحتوي الملف النموذجي ذو الامتداد .vue على ثلاثة أقسام، القسم الأول هو <template> يتضمن شيفرات بلغة HTML أما القسم الثاني فهو <script> ويتضمن شيفرات بلغة JavaScript، والقسم الأخير <style> يتضمن شيفرات بلغة CSS. في قسم <script> يمكنك التصريح عن ارتباطات bindings جديدة داخل التابع data() ، ويمكنك بعد ذلك عرض هذه الارتباطات داخل قسم <template> باستخدام الأقواس المزدوجة المتعرجة {{Binding}}. ستُغطى هذه الارتباطات المُصرَّح عنها في التابع data() تلقائيًا داخل نظام تفاعل فيو Vue، وهذا يعني أنه عندما تتغير قيمة الارتباط Binding، سيتغير المكون المقابل تلقائيًا، دون الحاجة إلى تحديث الصفحة. يمكن أن يحتوي القسم <script> أيضًا على توابع أخرى غير data() ، مثل computed وprops. كما يتيح لنا <template> ربط البيانات باستخدام توجيهات مثل v-bind و v-on و v-model. إنشاء مشروع فيو جي إس Vue.js جديد يمكن تثبيت وإنشاء تطبيق Vue باستخدام أداة سطر الأوامر Vue، لكننا في هذه المرة سنتبع طريقةً مختلفةً، إذ سنستخدم أداة إنشاء واجهات أمامية تسمى Vite، مع ملاحظة أن الكلمة تُنطق "veet" وتعني سريع باللغة الفرنسية، والتي أنشأها ذات الشخص الذي أنشأ Vue.js. انتقل الآن إلى مجلد frontend ونفذ الأمر التالي: npm init vue@latest سيُطلب منك العديد من الخيارات، ولهذا المشروع، كل ما عليك فعله إضافة Vue Router: ✔ Project name: … <your_project_name> ✔ Add TypeScript? … No / Yes ✔ Add JSX Support? … No / Yes ✔ Add Vue Router for Single Page Application development? … No / Yes ✔ Add Pinia for state management? … No / Yes ✔ Add Vitest for Unit testing? … No / Yes ✔ Add Cypress for both Unit and End-to-End testing? … No / Yes ✔ Add ESLint for code quality? … No / Yes ✔ Add Prettier for code formating? … No / Yes Scaffolding project in ./<your_project_name>. . . Done. إذا كنت ترتاح أكثر مع لغة برمجة جيدة، فيمكنك اختيار تثبيت TypeScript وإن كنت تحتاج إلى التصحيح التلقائي والتنسيق التلقائي للتعليمات البرمجية التي تكتبها، فيمكنك تثبيت ESlint وPrettier، ستؤدي عملية التثبيت هذه إلى إنشاء ملف package.json في دليل مشروعك، والذي يقوم بتخزين الحزم المطلوبة وإصداراتها. ستحتاج بعد ذلك إلى تثبيت هذه الحزم داخل مشروعك. cd <your_project_name> npm install npm run dev ثمة شيء أخير قبل أن نبدأ في إنشاء الواجهة الأمامية للتطبيق، نحن نستخدم في مشروعنا هذا إطار عمل بلغة CSS يُدعى TailwindCSS، لذا لتثبيته، نفذ الأمر التالي: npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p سيؤدي ذلك إلى إنشاء ملفين، الأول هو tailwind.config.js والثاني postcss.config.js، وإذا كنت تريد معرفة المزيد عن Tailwind فيمكنك الاطلاع على مقال مقارنة بين Bootstrap و Tailwind CSS، كما يمكنك الاطلاع على الدليل الرسمي لـ Tailwind. انتقل إلى tailwind.config.js وأضف المسار إلى جميع ملفات قالبك: module.exports = { content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], theme: { extend: {}, }, plugins: [], }; أنشئ ملف ./src/index.css وأضف توجيهات @tailwind لكل طبقة من طبقات Tailwind’s layers. @tailwind base; @tailwind components; @tailwind utilities; والآن، استورد الملف الذي أنشأته حديثًا ./src/index.css إلى ملف ./src/main.js. import { createApp } from "vue"; import App from "./App.vue"; import router from "./router"; import "./index.css"; const app = createApp(App); app.use(router); app.mount("#app"); والآن، من المفترض أن تكون قادرًا على استخدام Tailwind داخل ملفات .vue، وللتأكد، دعنا نختبر ذلك. <template> <header> . . . <div class="wrapper"> <HelloWorld msg="You did it!" /> <h1 class="text-3xl font-bold underline">Hello world!</h1> . . . </div> </header> . . . </template> لاحظ أننا أضفنا عنوان <h1> بعد <HelloWorld>، إذ يستخدم العنوان أصناف Tailwind. مكتبة Vue Router لاحظ أن مجلد مشروعك مختلف قليلًا في هذه المرة: يوجد داخل المجلد الرئيسي src مجلد router ومجلد views، إذ يحتوي مجلد router على ملف index.js، والذي يمكنك من خلاله تحديد وُجهات مختلفة، بحيث تشير كل وجهة route إلى مكون view موجود داخل مجلد views، ويمكن أن يوسع كل view بعد ذلك إلى مكونات أخرى داخل مجلد المكونات Components. تزودنا Vue بمثال على ذلك في ملف index.js: import { createRouter, createWebHistory } from "vue-router"; import HomeView from "../views/HomeView.vue"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: "/", name: "home", component: HomeView, }, { path: "/about", name: "about", // route level code-splitting // this generates a separate chunk (About.[hash].js) for this route // which is lazy-loaded when the route is visited. component: () => import("../views/AboutView.vue"), }, ], }); export default router; لاستدعاء موجه router ما، انظر في داخل ملف App.vue، وعوضًا عن الوسم <a>، يُستخدم الوسم <RouterLink> المُستورد من حزمة vue-router لإدارة التنقل بين الصفحات في تطبيق Vue.js. <script setup> import { RouterLink, RouterView } from "vue-router"; . . . </script> <template> <header> . . . <div class="wrapper"> . . . <nav> <RouterLink to="/">Home</RouterLink> <RouterLink to="/about">About</RouterLink> </nav> </div> </header> <RouterView /> </template> عند إخراج الصفحة، سيُستبدل الوسم <RouterView/> بالعرض المطابق، وإذا لم تكن ترغب في استيراد هذه المكونات، فكل ما عليك هو استخدام الوسمين router-link to="">> وكذلك <router-view> عوضًا عن ذلك. إنشاء وُجهات routes باستخدام موجه فيو Vue router سنحتاج في مدونة تطبيقنا إلى إنشاء 6 صفحات على الأقل، سنحتاج إلى صفحة رئيسية والتي تعرض قائمة بأحدث الصفحات في المدونة، كما سنحتاج إلى صفحة الأقسام والتي تعرض جميع الأقسام أو الوسوم في المدونة، وصفحة أخرى لتعرض قائمة بالمقالات التي تنتمي إلى الأقسام أو الوسوم، وأخيرًا صفحة المقال التي تعرض محتوى المقال إضافةً إلى التعليقات. فيما يلي الموجهات التي أنشأناها، إذ يوجه الوسم @ نحو مجلد src. import { createRouter, createWebHistory } from "vue-router"; import HomeView from "@/views/main/Home.vue"; import PostView from "@/views/main/Post.vue"; import CategoryView from "@/views/main/Category.vue"; import TagView from "@/views/main/Tag.vue"; import AllCategoriesView from "@/views/main/AllCategories.vue"; import AllTagsView from "@/views/main/AllTags.vue"; const routes = [ { path: "/", name: "Home", component: HomeView, }, { path: "/category", name: "Category", component: CategoryView, }, { path: "/tag", name: "Tag", component: TagView, }, { path: "/post", name: "Post", component: PostView, }, { path: "/categories", name: "Categories", component: AllCategoriesView, }, { path: "/tags", name: "Tags", component: AllTagsView, }, ]; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes, }); export default router; يرجى ملاحظة أننا نعمل في هذا المقال على إنشاء الواجهة الأمامية فقط، ولم نصل إلى مرحلة نقل البيانات حتى الآن، لذا لا تقلق حول كيفية العثور على المنشورات أو الأقسام أو الوسوم في الوقت الحالي. إنشاء العروض والصفحات والمكونات توضح الصور التالية واجهة المستخدم الأمامية التي أنشأناها لهذا المشروع، ويمكنك إنشاؤها لديك إما باعتماد الشيفرات البرمجية في هذا المقال، أو كتابة الشيفرات البرمجية الخاصة الخاص بك كما يمكنك العثور على الكود البرمجي الكامل من هنا. الصفحة الرئيسية Home Page جميع التصنيفات All Categories جميع الوسوم All Tags صفحة تسجيل الدخول Sign In صفحة إنشاء حساب Sign Up صفحة المنشور المفرد Post قسم التعليقات على المنشور Comments صفحة الملف الشخصي للمستخدم Profile قسم تعليقات المستخدمين User Comments ترجمة -وبتصرّف- للمقال Create a Modern Application with Django and Vue #1 اقرأ أيضًا تطبيق عملي لتعلم إطار عمل جانغو - الجزء الأول: إنشاء موقع ويب هيكلي لمكتبة محلية معالجة طلبات الويب عبر العروض views في تطبيق جانغو بناء تطبيق ويب لإدارة معلومات العملاء باستخدام جانغو Django وريآكت React إنشاء تطبيق بسيط من خلال Vue.js إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات
-
سنقدم في هذا الدليل 10 نصائح تساعدك على كتابة محتوى بطريقة أسرع، والتغلب على مشكلة قفلة الكاتب writer’s block التي تصيب بعض الكتاب؛ ليس بسبب نقص المهارة، إنما نتيجة عوامل نفسية؛ كما يشرح المقال كيفية بناء عادة منتظمة تساعدك على نشر محتوى قيّم وإيجابي للقراء. لا شك أن تعلم الكتابة السريعة يُعَد أمرًا ضروريًا لتصبح مدونًا ناجحًا، لأنك تحتاج إلى نشر محتوى ثابت بانتظام لجذب الجمهور والمحافظة عليهم؛ أما أن تنشر بعض المقالات من حين إلى آخر وتنتظر لحظات الإلهام لتأتيك، فهو أمر لا ينفع مع من يسعى إلى بناء مدونة ناجحة، إذ لا بُدّ من اتباع إيقاع نشر منتظم، حتى يستمر القراء بزيارتك مدونتك وقراءة المزيد من مقالاتك. قد تبدو الكلمات السابقة رائعةً من الناحية النظرية، وربما أعطتك دفعةً من الحماسة، لكن كيف يبدو الأمر من الناحية الواقعية؟ عندما تفتح مستندًا فارغًا لكتابة محتوى جديد، قد تجد نفسك محدقًا فيه لفترة طويلة دون كتابة أي شيء، ومن ثم تعلن استسلامك. في ذات الصدد، قد تتمكن من كتابة شيء ما، ولكنك تشعر أنك تكتب بعشوائية دون اتباع منهج واضح، أو أنها مجرد جمل إنشائية لا تقدم للقارئ أي قيمة حقيقية؛ كما قد تنتهي من كتابة منشوراتك، ثم تشعر أنها متخبطة تأخذ القارئ في متاهة من المعلومات المتداخلة، فينتهي به المطاف دون تحقيق أي فائدة. قد تظن في قرارة نفسك أنك غير مؤهل لتكون كاتبًا ناجحًا وسريعًا، لكن كن على ثقة بأنه يمكنك تحقيق هدفك إذا فهمت النصائح التالية وبذلت جهدك في تطبيقها. 1. اكتب كل يوم إن أمكن ذلك إذا سألت الكتاب الناجحين من كل المجالات -وليس المدونات فقط- عن سر نجاحهم، فسيخبرك الكثير منهم عن أهمية الكتابة اليومية؛ وهو ما يمكنك تطبيقه عمليًا من خلال منح الكتابة جزءًا أساسيًا من برنامجك اليومي، وقد تستمر في ذلك حتى في أيام العطل والأعياد، أو يمكنك الاقتصار على أيام العمل. الجميل في الانتظام اليومي للكتابة هو أنك ستصل إلى نتائج رائعة بعد فترة دون أن تشعر أنك قد بذلت وقتًا طويلًا في الكتابة. فعلى سبيل المثال، إذا كتبت 500 كلمة فقط يوميًا، ستصل في نهاية العام إلى أكثر من 100 ألف كلمة، حتى وإن لم تكن تكتب في عطلات نهاية الأسبوع وأخذت إجازة لبضعة أسابيع. مع العلم أنك عندما تصبح سريعًا في الكتابة، لن تستغرق في كتابة 500 كلمة ٱكثر من 30 دقيقة. من المهم أن تجد وقتًا من برنامجك اليومي تركز فيه جيدًا على الكتابة، وقد يكون ذلك في الصباح الباكر، أو خلال استراحة الغداء، أو ربما في المساء المتأخر بعد أن ينام أطفالك، أو أيًا كان الوقت الذي يناسبك. إذا لم تكن الكتابة اليومية مناسبةً لطبيعة حياتك، أو إذا كنت تفضل جلسات كتابة بعدد أقل ولمدة أطول، فاحرص على أن تكتب مرتين على الأقل أسبوعيًا. 2. ابدأ بكتابة الخطوط العريضة لهيكلة منشورك الخطوة الأولى لكتابة أي محتوى هي وضع حجر الأساس له، وهذا من خلال تحديد الٱفكار الرئيسية التي سيتناولها منشورك، فهي أشبه بالهيكل العظمي الذي من خلالها ستتمكن من معرفة ما يجب كتابته في بداية المنشور وفي منتصفه وفي نهايته، وستكون أمامك بعض الأفكار الأساسية التي يمكن أن تشكل العناوين الفرعية لمنشورك. إذا كنت تهدف إلى أن كتابة منشورك بسرعة، فقد تظن أن وضع مخطط المنشور ما هو إلا مضيعة للوقت، لكن الحقيقة أن البدء بمخطط المنشور سيساعدك على أن تنجز عملك بسرعة أكبر. سيساعدك مخطط المنشور في البقاء على المسار الصحيح، حتى لا ينتهي بك الأمر في التخبط بين الأفكار والتنقل العشوائي بين المواضيع. علاوةً على ذلك، يمكن لمخطط المنشور أن يبقيك متحفزًا حتى النهاية، كونه يتيح لك معرفة المقدار الذي أنجزته من منشورك، والمقدار المتبقي الذي ما يزال عليك كتابته. 3. اكتب مسودتك الأولى على شكل نقاط في البداية، لن تحتاج إلى كتابة فقرات كاملة أو حتى جمل كاملة، لأنك بالتأكيد ستراجع ما كتبت وترتبه ضمن جمل وفقرات متناسقة؛ لذلك ابدأ عملك بكتابة بعض الأفكار والإلهامات التي تدور في رأسك، واترك ترتيب هذه الأفكار إلى المرحلة التالية. أمور مثل العناوين والاقتباسات والصور وأي محتوى داعم آخر يمكنك تأجيله حتى الانتهاء من كتابة المسودة، لكن الأمر المهم في الوقت الحالي أن تدون أهم الأفكار لديك على الصفحة. وأخيرًا، احرص على تدوين أفكارك على شكل نقاط بسيطة، ولا تشغل نفسك كثيرًا بأمور التنسيق التي غالبًا ما تشتت انتباه الكتاب وتمنعهم من الوصول إلى أفضل مستوياتهم في الكتابة. 4. اكتب بالترتيب الذي تريده ليس من الضروري أن تبدأ عملك بكتابة المقدمة ومن ثم إكمال المقال بالترتيب حتى كتابة الخاتمة، بل يمكنك أن تبدأ بكتابة القسم الذي يجذبك أكثر؛ فإذا كنت تكتب مقالًا من النوع "10 نصائح …" لتعلم القارئ كيفية القيام بشيء ما، فيمكنك أن تبدأ بكتابة النصيحة 3، ثم النصيحة 7، ومن ثم تعود إلى كتابة باقي النصائح. إن وجود المخطط الأولي لمنشورك سيسهل عليك مهمة التنقل كثيرًا، وهي إحدى الأسباب الرئيسية التي يجب أن تدفعك إلى كتابة المخطط الأولي في البداية، فقد ترغب في كتابة الأقسام الأصعب أولًا، وبالتالي تتشجع لإنهاء القسم السهل المتبقي، أو قد ترغب في البدء في الأقسام السهلة كنوع من الإحماء قبل الانتقال إلى الأجزاء الأكثر تعقيدًا في منشورك. 5. اكتب تحت الضغط من خلال تحديد موعد نهائي ثابت من الجيد أن تحدد لنفسك تاريخًا ووقتًا معينًا يجب أن تنشر فيه مقالتك، وعند حلول ذلك الوقت، يجب أن تنشر كل ما كتبته. ولا تقلق حول ما إذا كان المحتوى مثاليًا أو أنه ليس كذلك، إذ يمكنك العودة إليه وتحديثه في اليوم التالي أو الأسبوع التالي أو حتى الشهر المقبل. يكتشف العديد من الكتاب قدرتهم على الكتابة السريعة عندما يواجهون موعدًا نهائيًا عليهم الالتزام به. وبصفتك مدونًا، ليس من المُتوقع أن يكون لديك محررًا أو مديرًا ينتظر عملك، وهذا صحيح، لكن تذكر أن لديك قراءً وجمهورًا ينتظرون منشوراتك. ولكي تزيد حماستك في الكتابة، يمكنك إخبار القراء بأنك ستنشر منشورًا جديدًا كل يوم جمعة مثلًا على مدونتك، مما يمنحك موعدًا نهائيًا محددًا عليك الالتزام به؛ أو في حال كنت تنشر على وسائل التواصل الاجتماعي، فيمكنك إخبار أصدقائك والمتابعين بأنك ستنشر منشورًا جديدًا بحلول الساعة السادسة مساءً كل يوم، أو في أي وقت آخر قد تختاره. يمكن أن يكون الشعور بالمسؤولية العلنية دافعًا قويًا للغاية، ومن المرجح أن تنجز كتابتك بسرعة ٱكبر بكثير، لأنك تتسابق مع الزمن لتوفي بالموعد الذي قدمته لجمهورك، كما قد تجد في الموعد الثابت للنشر عاملًا يساعدك على زيادة التركيز. سيساعدك الموعد الثابت أيضًا على استغلال الوقت بالطريقة المثالية، فعلى سبيل المثال، قد تكتب لمدة ساعة قبل أن تذهب لاصطحاب أطفالك من المدرسة، أو ربما تكتب لمدة 30 دقيقة قبل بداية مباراة كرة القدم التي ترغب في مشاهدتها. 6. إضافة مؤقت للمحافظة على تركيزك في الكتابة السريعة إذا كنت عاجزًا عن الالتزام بموعد نهائي ثابت، فيمكنك تجربة استخدام مؤقت، والذي قد يساعدك على زيادة تركيزك أثناء الكتابة. الطريقة الأكثر شيوعًا لاستخدام مؤقت هي تقنية الطماطم أو تقنية البومودورو Pomodoro Technique، والتي تشير إلى العمل لمدة 25 دقيقة، مقابل استراحة لمدة 5 دقائق؛ إذ يمكنك تكرار ذلك 3 مرات قبل أخذ استراحة لمدة أطول (20-30 دقيقة). ومع ذلك، ليس من الضروري ٱن تتقيد بالأرقام السابقة، إذ يمكنك ضبط مؤقتك بالمدة الزمنية التي تناسبك، كما يمكنك التنويع ما بين المهام التي تحتاج إلى تركيز عالٍ والمهام التي تحتاج إلى تركيز أقل. على سبيل المثال، يمكنك كتابة مقال لمدة 20 دقيقة، ثم الرد على رسائل البريد الإلكتروني لمدة 20 دقيقة أخرى، ومن ثم العودة مجانًا إلى الكتابة لمدة 20 دقيقة أخرى. تُعَد عملية ضبط المؤقت بمثابة التزام تجاه نفسك، وكأنك تقدم لنفسك وعدًا بأنك ستكتب ولن تتشتت بشيء آخر لمدة 25 دقيقة. إذا كنت ما تزال تواجه صعوبةً في المحافظة على تركيزك، فيمكنك تجربة مكون إضافي للمتصفح مثل Strict Workflow لحظر مواقع الويب التي تشتت انتباهك أثناء فترات العمل؛ وإذا لم يكن لديك تطبيق مؤقت، فيمكنك ببساطة البحث على جوجل "المؤقت" ومن ثم اختيار المدة التي تريدها والضغط على زر التشغيل. 7. وضع هدف محدد لرفع الإنتاجية علاوةً على ضبط مؤقت، قد تجد أن من المفيد لك تحديد هدف واضح لنفسك حول عدد الكلمات التي تريد كتابتها، فقد تضع على سبيل المثال هدفًا يوميًا من الكلمات يجب إنجازه، أو قد تحدد مدة معينة لإنجاز ما تبقى من مقالك. ستساعدك الأهداف الذكية على تحسين تركيزك وزيادة سرعة عملك، فإذا كنت تعمل على مشروع طويل، مثل كتابة كتاب إلكتروني، فإن تعيين هدف لعدد الكلمات قد يكون أسلوبًا فعالًا للبقاء على المسار الصحيح. وهنا قد يتبادر إلى ذهنك سؤال "ما هو الهدف الجيد لعدد الكلمات؟" الإجابة في الواقع تختلف من شخص إلى آخر بناءً على سرعة الكتابة ومقدار الوقت المتاح لديك. واحدة من الطرق التي يمكنك اتباعها هي كتابة مقال بطول ألف كلمة، وحساب المدة المستغرقة لكتابته، ومن ثم وضع هدف لإكمال الألف كلمة التالية بمدة زمنية أقل من المدة المستغرقة في المرة الأولى. إذا كنت تعاني من نقص التحفيز، فحاول تحديد هدفين مختلفين لعدد الكلمات، هدف الحد الأدنى وهدف مثالي. فعلى سبيل المثال، يمكنك تعيين 100 كلمة يوميًا كحد أدنى لعدد الكلمات المنجزة، وتحديد 500 كلمة يوميًا كهدف مثالي تسعى إلى تحقيقه، ففي الأيام الصعبة والمشغولة، قد تكتفي بكتابة 100 كلمة ويكون ذلك بمثابة نجاح لك؛ ولكن عندما تكون كل الأمور على ما يُرام ولديك متسع من الوقت، فقد تسعى إلى الوصول إلى 500 كلمة كاملة. 8. بناء عادات كتابة خاصة بك لدى العديد من المدونين عادات خاصة لبدء يومهم، ويمكن أن يكون ذلك أمرًا بسيطًا، مثل قراءة أهدافهم، وفتح مستنداتهم التي يعملون عليها وتدوين 3-5 أفكار رئيسية يخططون لتغطيتها خلال اليوم. يحب بعض الأشخاص إضافة عناصر حسية إلى طقوس الكتابة، مثل إضاءة شمعة أو شرب فنجان من القهوة المفضلة، كما قد يبدأ آخرون بوقت قصير من التأمل أو قراءة بعض الاقتباسات الملهمة. مع ذلك، لا تجعل طقوس كتابتك طويلة جدًا أو معقدة، لأن ذلك لن يخدمك في تعلم الكتابة السريعة، بل الأفضل أن تختار أشياء تستغرق بضعة دقائق فقط؛ كذلك، يجب أن تكون مرنًا ولا تتشبث بعاداتك دائمًا، لا سيما إذا كنت تكتب في أكثر من مكان مختلف، فليس من المناسب مثلًا أن تضيء شمعتك إذا كنت تعمل في مكتبة عامة. قد يكون من المناسب لك أيضًا أن تبني عادات فائقة السرعة لاستخدامها في الأوقات التي تكون فيها بحاجة إلى إعادة التركيز أثناء جلسة الكتابة، فقد تقاطعك مكالمة هاتفية، ثم تتشتت على منصات التواصل الاجتماعي مثلًا؛ حينها، يمكنك إعادة التركيز عن طريق إغلاق التطبيقات وعلامات التبويب غير المهمة على متصفحك قبل أخذ بعض الأنفاس العميقة. 9. لا تحرر أثناء الكتابة إحدى الأخطاء المؤكدة التي تؤدي إلى إبطاء وتيرة عملك هي التحرير أثناء الكتابة، إذ لا يمكن القيام بالأمرين معًا في آن واحد؛ فإذا كتبت جملةً ثم حذفتها، ثم كتبت جملة أخرى وحذفت نصفها، ثم كتبت أكثر قليلًا، ثم رجعت وأصلحت بعض الأخطاء المطبعية أو عدلت عنوان منشورك، فمن الصعب حقًا إحراز أي تقدم بهذه الطريقة. حاول قدر الإمكان أن تكتب منشورًا كاملًا قبل البدء بتحريره، لأنك عندما تدخل في عملية الكتابة، سيكون من السهل الاستمرار فيها، وبمجرد حصولك على مسودة كاملة، يمكنك مراجعة منشورك بالكامل ومعرفة ما يجب تغييره، وقد تكون التعديلات أقل مما تظن. إضافةً إلى عدم التحرير أثناء الكتابة، حاول ألا تتوقف ٱثناء الكتابة وتتشتت في البحث عن الأشياء، وإذا كنت بحاجة إلى التحقق من معلومة معينة أو إضافة رابط ما، فما عليك سوى إضافة تعليق على المستند أو تمييز النص بلون مختلف حتى تتمكن من العودة إليه لاحقًا. صحيح أن الأمر قد يستغرق 30 ثانيةً فقط للتحقق من معلومة ما، ولكنه سيعرقل تقدمك، وقد ينتهي بك الأمر في حلقة تشتت الانتباه؛ إذ يؤدي التحقق من رابط في مدونة صديقك إلى قراءة أحدث مقالاته، والنقر على رابط آخر، والتمرير عبر منصات التواصل الاجتماعي، وما إلى ذلك. 10. استخدم أداة تعديل النصوص Text Expander للعبارات الشائعة هل تجد نفسك تستخدم ذات العبارات في عدد كبير من منشورات مدونتك؟ هل تفكر أحيانًا في الإشارة إلى مدونة أخرى باسم طويل وترى أن ذلك يستغرق وقتًا في الكتابة؟ أو هل ترغب في تدوين الاسم الكامل للمنتج بسرعة؟ يمكنك الحصول على كل المزايا السابقة باستخدام أداة تعديل النصوص text expander، والتي تتيح لك استبدال الاختصار أو الرمز القصير بالاسم الكامل تلقائيًا. على سبيل المثال، يمكنك تحويل الاختصار "SME" تلقائيًا إلى الاسم الكامل "Social Media Examiner". يمكنك أيضًا استخدام أداة تعديل النصوص لتصحيح الأخطاء الإملائية، أو لتعديل الأحرف الكبيرة والصغيرة في بداية الكلمات، بحيث إذا كتبت كلمة ووردبريس باللغة بالإنجليزية بهذه الطريقة "Wordpress" مثلًا، فستعمل الأداة على تصحيحها تلقائيًا إلى الشكل "WordPress". هناك الكثير من أدوات تعديل النصوص المختلفة، يمكنك استخدام أداة Text Expander التي تحتوي على نسخة تجريبية مجانية لمدة 30 يومًا، وكذلك أداة Beeftext التي تُعَد خيارًا مجانيًا جيدًا لنظام التشغيل Windows. يمكنك أيضًا استخدام أدوات تعديل النصوص لأغراض أخرى، مثل الردود التلقائية على رسائل البريد الإلكتروني الشائعة التي تتلقاها من القراء. يجب أن تلاحظ أن هذه الٱدوات لا تساعدك على تسريع كتابتك فوريًا، لكنك مع الوقت ستلاحظ نتائجها الرائعة وقدرتها على توفير الوقت الذي تقضيه في الكتابة. في الختام مهما كانت سرعة كتابتك الحالية، كن على يقين بأنك قادر على تحسينها، وقد عايش الكثير من المدونين التطورات الهائلة التي طرأت على مستوياتهم في الكتابة مع استمرارهم الدؤوب في العمل بانتظام ومحاولة تطوير أنفسهم وزيادة سرعتهم في الكتابة. قد تجد أن بعض هذه النصائح لا تتماشى مع طبيعة عملك أو أنها لا تساعدك على تسريع كتابتك، كما قد تجد أنك ملتزم فعلًا ببعض منها، مثل الكتابة اليومية؛ أو ربما تشعر أن بعض هذه النصائح تزيد الضغط عليك، مثل استخدام المؤقت، لذا اختر النصائح التي تشعر أنها تناسبك، فليس من الضروري أن تطبقها كلها. ومع ذلك، حاول تجربة كل النصائح الواردة في هذا المقال، حتى وإن كنت قد جربت شيئًا من قبل وفشلت في تنفيذه بالكامل، فقد تتمكن من الاستفادة منه في هذه المرة وتكتشف كيفية الكتابة بطريقة أسرع. في هذا الأسبوع، يمكن أن تركز على نصيحة واحدة أو نصيحتين، وسترى خلال وقت قصير الفرق الذي طرأ على كتابتك، ولا تيأس إذا لم تتحسن سرعة كتابتك من يوم إلى آخر، فمجرد تحسنك بنسبة 10% كل أسبوع يعني مضاعفة سرعة كتابتك بعد 9 أسابيع. ترجمة -وبتصرّف- للمقال How to Write Faster Blog Content لصاحبه Ryan Robinson. اقرأ أيضًا كيف تنظم جدول أعمالك ككاتب حر بدوام كامل؟ 9 خطوات لكتابة مقالات بشكل أسرع وزيادة أرباحك كمُستقل مدخل إلى التدوين ونشر المدونات وما يتعلق بها عبر منصة ووردبريس
-
عندما تريد دخول عالم التجارة الإلكترونية، يجب أن تكون لديك فكرة واضحة عن المنصة المناسبة لعملك، إذ ليس من الصائب أن تختار منصةً عشوائيةً لإنشاء متجرك الإلكتروني، لأن ذلك مرتبط إلى حد كبير بمصير نشاطك التجاري ومستقبلك ونجاحك. ستصادف خلال رحلتك العديد من أصحاب الأعمال غير الراضين عن منصات متاجرهم الإلكترونية، لذا يجب أن تحرص على ألا تندرج ضمن هذه القائمة. وسواءً كان عملك صغيرًا أم كبيرًا، يجب أن تختار منصة التجارة الإلكترونية بعناية، لأن تغيير المنصة لاحقًا قد يفرض عليك تكاليفًا وأعباءً أنت في غنى عنها. هنا، إن فشلت في اختيار المنصة المناسبة، فسينعكس ذلك على نمو ونجاح متجرك الإلكتروني في المستقبل. ولهذا السبب، يُعدّ البحث الاستباقي حول المنصات والميزات التي تقدمها أمرًا في غاية الأهمية. إذا ذهبت إلى أي شركة برمجيات لتطوير متجرك الإلكتروني، فإن إحدى الأسئلة الأساسية التي ستُطرح عليك هي عن المنصة التي تريد بناء متجرك الإلكتروني عليها، وصحيح أنهم سيرشدونك إلى بعض الخيارات، ولكن القرار النهائي لك. إن اختيار منصة التجارة الإلكترونية المناسبة لنشاطك التجاري يعني إيجاد التوازن الصحيح بين متطلباتك كتاجر من جهة، وبين متطلبات عملائك من جهة أخرى. لذلك سنُجري في مقالنا هذا مقارنةً بين منصتين رائدتين في التجارة الإلكترونية، هما شوبيفاي Shopify وماجنتو Magento. ما هو شوبيفاي Shopify؟ شوبيفاي Shopify هو منصة مختصة بالتجارة الإلكترونية، تتيح للمطورين أو أصحاب الأعمال إمكانية إنشاء مواقعهم على الإنترنت دون الحاجة إلى أي خبرات تقنية، وهو يأتي مع خيارين: شوبيفاي العادي Shopify: هو حل استضافة يمنح أصحاب الأعمال التجارية حرية تخصيص واجهات متاجرهم الإلكترونية وبيع المنتجات وإدارة أعمالهم التجارية عبر الإنترنت. شوبيفاي متقدم Shopify Plus: منصة متعددة القنوات تتمتع بمستوى تخصيص أعلى، مع دعم وميزات أقوى من شوبيفاي العادي. ما هو ماجنتو Magento؟ ماجنتو Magento هو منصة للتجارة الإلكترونية طُوِّرت عام 2007 باستخدام تقنيات مفتوحة المصدر، وهي منصة مرنة قابلة للتخصيص والتطوير بدرجة كبيرة. وهي تأتي أيضًا في شكلين: ماجنتو مفتوح المصدر Magento Open Source: هو منصة مجانية ذاتية الاستضافة توفر جميع الوظائف لتطوير المتاجر الإلكترونية من الصفر. متجر ماجنتو Magento Commerce: هي النسخة المدفوعة من ماجنتو، ويستخدمها أصحاب الأعمال التجارية والمطورين الذين يريدون حلًا شاملًا وسريعًا لتحسين متاجرهم الإلكترونية وتعزيز مبيعاتهم. الاختلافات الرئيسية بين ماجنتو وشوبيفاي ثمة جوانب عديدة يختلف فيها ماجنتو وشوبيفاي عن بعضهما البعض، لذا إليك فيما يلي مقارنة سريعة في كل جانب: الانتشار في الوقت الحالي، يُعدّ ماجنتو منصة التجارة الإلكترونية الأكثر استخدامًا، إذ يعتمد عليه 14% من المتاجر الإلكترونية، بينما تبلغ نسبة مستخدمي شوبيفاي 6% من المتاجر الإلكترونية حول العالم. إذا كنت تريد مقارنة شوبيفاي مع ماجنتو من حيث الانتشار، فإن أفضل طريقة هي معرفة نسبة العلامات التجارية الشهيرة التي تستخدم كل منصة. وهنا نلاحظ أن الشركات الكبرى مثل نايك Nike وروزيتا ستون Rosetta Stone وأوليمبوس Olympus تستخدم ماجنتو؛ في حين أنه لدى شوبيفاي بعض الأسماء الكبيرة، مثل تسلا Tesla ومتجر Los Angeles Lakers، لذا فإن كلا المنصتين تفتخران بشركات ناجحة تعتمد عليها. من الناحية البرمجية ثمة فارق كبير جدًا بين شوبيفاي وماجنتو من الناحية البرمجية، إذ يستخدم ماجنتو لغة PHP، بينما يستخدم شوبيفاي لغة Liquid. إضافةً إلى ذلك، شوبيفاي ملكية خاصة، أي أنه مغلق المصدر؛ بينما ماجنتو منصة مفتوحة المصدر، ما يعني أنه متاح مجانًا ويمكنك تعديل التعليمات البرمجية وإجراء أي تغييرات وفقًا لاحتياجاتك ومتطلباتك، ولكن النظام المغلق لا يسمح لك بهذه التسهيلات. يمكن مع ماجنتو التعديل على الشيفرات البرمجية للقالب حتى يناسب الاحتياجات المحددة للمتاجر، في حين لا يمكن ذلك مع شوبيفاي. ولذلك فإن شوبيفاي هو الحل الأمثل والمناسب للمتاجر البسيطة، لكنه لا يناسب المتاجر المعقدة التي تتطلب تغييرات في الشيفرات المصدرية. السعر يجب عليك في البداية تحديد ميزانيتك لأعمالك في التجارة الإلكترونية، نظرًا لأن بعض المنصات أغلى بكثير من غيرها. عند اختيار النظام الأساسي لمتجرك الإلكتروني، احرص على مراعاة جميع التكاليف، وليس فقط التكاليف الأولية لإنشاء المتجر، وقد تشمل التكاليف البعيدة أشياء مثل الصيانة والأمن والاستضافة وغير ذلك. شوبيفاي: حل بأسعار مقبولة لدى شوبيفاي عدد من خطط الاشتراك التي تختلف في أسعارها، لكن خطة شوبيفاي الأساسية تبدأ بسعر 29 دولارًا وتحتوي على الحد الأدنى من الميزات؛ أما الخطط الثانية فهي أكثر تقدمًا، ويتراوح سعرها بين 79 إلى 299 دولارًا شهريًا؛ بينما شوبيفاي المتقدم Shopify Plus، يعتبر مخصص للشركات الكبيرة، وتبدأ أسعار الاشتراك فيه من حوالي 2000 دولار شهريًا. كلما اخترت خطة اشتراك أعلى، ستتمكن من الوصول إلى المزيد من الميزات، مثل استعادة سلة التسوق المهجورة، والحصول على تقارير وإحصائيات متقدمة، وبطاقات الهدايا. وفيما يلي صورة توضح أسعار خطط الاشتراك في شوبيفاي، مع مميزات كل خطة. أما رسوم المعاملات، فإن شوبيفاي يفرض رسوم على المدفوعات التي تتم من خلال بوابات الدفع الخارجية، وتتراوح نسبة الرسوم بين 0.5% إلى 2%؛ لذا كلما زاد عدد المعاملات التي تجريها، زادت تكلفة رسوم المعاملات شهريًا. لكن باستخدام بوابة الدفع المباشرة الخاصة بشوبيفاي، يمكنك تجنب دفع أي رسوم. ماجنتو: مرتفع الثمن ماجنتو هو إطار عمل مفتوح المصدر يمكن تنزيله مجانًا، والاستضافة فيه ذاتية، لكن يجب الدفع مقابل خدمات الاستضافة الخارجية. تعتمد تكلفة ماجنتو على المنتج الذي تستخدمه؛ كما يجب عليك تغطية جميع رسوم الاستضافة والأمان والتطوير والتصميم، ويمكن أن تصل تكلفة الاستضافة إلى 3.95 دولارًا شهريًا من شركات مثل SiteGround أو HostGator. يُعدّ حل الاستضافة الذي تختاره مهمًا جدًا، إذ يمكن أن يؤثر على سرعة الموقع ومساحة تخزينه وعدد المنتجات التي يمكن لموقعك إدارتها. لذلك إذا كنت تستخدم ماجنتو، فيمكنك اختيار أي حلول استضافة تريدها حسب احتياجاتك، على عكس استضافة شوبيفاي. وإذا كنت تبحث عن التكلفة النهائية لكل من ماجنتو وشوبيفاي، فأنت بحاجة إلى حساب الملحقات الإضافية أيضًا. علاوةً على ذلك، عادةً ما يلجأ مستخدمو ماجنتو إلى توظيف مطور ماجنتو لتطوير الموقع وإعداد المتجر، لذلك ينبغي حساب تكلفة المطورين ضمن التكلفة التقريبية للمشروع. لا يتقاضى ماجنتو أي رسوم مقابل تنزيله واستخدامه، لكن ستحتاج إلى شراء خطة استضافة. وإذا كنت تريد اختيار خطة استضافة، فيُفضَّل ألا تلجأ إلى الاستضافات الرخيصة. بل اختر عرض نطاق ترددي Bandwidth أفضل وحزمة تحسين إضافية. يتحسن أداء ماجنتو مع الاستضافات الجيدة، لذلك يجب دراسة خدمات الاستضافة جيدًا قبل اختيار واحدة منها، لأن ذلك سيؤثر بالتأكيد على أداء متجرك الإلكتروني، لا سيّما عندما يصبح متاحًا للجمهور ويزداد عدد زواره. إذا كنت تبحث عن الخيار الأوفر، فإن شوبيفاي هو الأنسب لك، كما أن تكلفته النهائية واضحة ويمكن التنبؤ بها، فهي تشمل تكلفة شهرية حسب الخطة، إضافةً إلى رسوم محددة لكل عملية بيع. الأمان لا بُدّ للأمان أن يتربّع على قمة أولوياتك عندما تخطط لإنشاء متجرك الإلكتروني، فوفقًا لإحدى التقارير، 61% من المتسوقين لن يشتروا أي منتجات من موقع إلكتروني يفتقد إلى إشارات الأمان، مثل شهادة SSL. لا يمكن للمتاجر الإلكترونية تحمل أي هجمات يمكن أن تقلل من عدد الزوار وتدمر ثقتهم في العلامة التجارية أيضًا، لذلك من الضروري بذل جهد إضافي لتأمين موقعك الإلكتروني، وإليك فيما يلي مقارنة بين شوبيفاي وماجنتو من ناحية الأمان: شوبيفاي: آمن شوبيفاي عبارة عن منصة قائمة على نظام البرمجيات كخدمة SaaS، لذا فهي آمنة، وهذه ميزة لصالح شوبيفاي. فضلًا عن ذلك، يحقق شوبيفاي جميع الفئات الستة لمعايير PCI، كما تتضمن المواقع التي يستضيفها شهادة أمان SSL. ماجنتو: يعتمد الأمان فيه على معاييرك يعتمد الأمان في ماجنتو على المطورين ومدى الأمان الذي يريدون تحقيقه. فحتى بالنسبة للأشياء البسيطة مثل شهادة SSL، يجب على المطورين الاهتمام بالموقع للحصول عليها. سيصحح ماجنتو بعض المخاطر الأمنية المعروفة، مثل ثغرة حقن SQL التي عرّضت حوالي 300 ألف متجر ماجنتو للخطر عام 2019، لكن تبقى مسؤولية تحديث موقعك وحمايته بالكامل ضمن مسؤوليات مطوري ماجنتو. تحسين محركات البحث SEO يشتري معظم المستخدمين منتجاتهم عبر الإنترنت من خلال استخدام محركات البحث، لذلك من المهم جدًا تهيئة صفحات متجرك الإلكتروني لملائمة محركات البحث، بحيث تظهر صفحات منتجاتك في أول نتائج محركات البحث. في الواقع، عند الحديث عن تحسين محركات البحث SEO، فإن منصات التجارة الإلكترونية متساوية إلى حد ما، خاصةً عندما تنظر إلى المكونات الإضافية. يُعدّ شوبيفاي أفضل في هذا المجال بالنسبة للمبتدئين، لكن بالنسبة لمن لديهم بعض الخبرات في مجال تحسين محركات البحث، فسيكون من الأفضل لهم تثبيت ماجنتو. لا يسمح ماجنتو بتحرير البيانات الوصفية، لكنه يتيح إمكانية إنشاء منتجات حيوية وتخصيص صفحات منتجاتك، مما يعزز تحسين محركات البحث في موقعك، وهو أمر لن تجده مع نظام البرمجيات كخدمة SaaS، مثل شوبيفاي. والآن، من الواضح أن ماجنتو يأتي في المركز الأول في مجال تحسين محركات البحث، نظرًا لقدرته على تخصيص عملية تحسين محركات البحث يدويًا، بينما يأتي شوبيفاي في المرتبة الثانية. السرعة والأداء تُعدّ سرعة متجرك الإلكتروني وأدائه من العوامل الرئيسية التي قد تؤثر على تحسين محركات البحث الخاصة بمتجرك، ومن الأمور المثبتة عمليًا أنه كلما زادت مدة تحمل صفحات موقعك الإلكتروني، زادت احتمالية خسارة العملاء المحتملين، ليذهبوا إلى متاجر المنافسين. شوبيفاي: أداء متوسط يقدم شوبيفاي حل استضافة، لذا لا داعي للقلق بشأن سرعة موقعك وأدائه، إذ لا يمكنك أساسًا التحكم في بيئة الاستضافة أو ضبط مستوى الخادم. وفي حال واجهت أي مشكلات تتعلق بالسرعة، فيجب التواصل مع فريق الدعم الفني في شوبيفاي. ماجنتو: أسرع وأكثر سلاسة على عكس شوبيفاي، يُعرف ماجنتو بمرونة التحكم فيه واختيار مزود الاستضافة، لأن ماجنتو عبارة عن منصة ذاتية الاستضافة، فهي تسمح لك باختيار الخادم الذي تريده، وإجراء جميع التعديلات اللازمة لتعزيز أداء موقعك الإلكتروني. ستتحمل بالتأكيد تكاليف كبيرة إذا قررت الاعتماد على خدمات مزودي استضافة ماجنتو Magento Web Hosting Providers، لكنك ستحصل على تجربة بسرعات تحميل عالية وأداء مستقر وحرية تخصيص موقعك الإلكتروني كما تشاء. إذًا مرةً أخرى، ماجنتو يتفوق من ناحية السرعة والأداء على شوبيفاي. ملخص سريع إليك في الصورة التالية مقارنةً سريعةً بين كل من شوبيفاي وماجنتو: في الختام يعتمد الأمر بأكمله على الميزات التي تبحث عنها والخدمات التي تريد الحصول عليها، ويمكن القول بأن ماجنتو خيار أفضل إذا كنت تريد رحلات عملاء مخصصة لا يجدونها في أي مكان آخر؛ أما شوبيفاي، فهو خيار مفيد للتجار الذين يريدون إنشاء متجر إلكتروني مع امتلاكهم خبرات برمجية متواضعة. إذا كنت ما تزال محتارًا، فانظر إلى ميزانيتك، إذا كنت تستطيع تغطية تكاليف ماجنتو، فهو الخيار الأفضل؛ أما إذا لم تكن لديك الميزانية والوقت لإنشاء موقع فريد، فإن شوبيفاي هو الخيار المناسب للحصول على موقع بواجهة متجر جيدة تقدم للعملاء المعلومات التي يحتاجون إليها. ترجمة -وبتصرّف- للمقال ?Shopify vs Magento – Which One to Choose For Your e-Commerce Website لصاحبه Kiran Beladiya. اقرأ أيضًا مقارنة بين ووردبريس WordPress وشوبيفاي Shopify للتجارة الإلكترونية أيهما أفضل، شوبيفاي أم ووكومرس؟ نقل متجرك الإلكتروني من شوبيفاي Shopify إلى ووكومرس WooCommerce
-
يُعدّ وجود تطبيقات شوبيفاي جيدة لبيئات مختلفة مثل التطوير والإنتاج أمرًا مهمًا في سوق تطبيقات شوبيفاي. وعلى الرغم من أنها فكرة واضحة ومباشرة، إلا أن الكثير من المطورين مازالوا يواجهون صعوبةً في إتقان هذا المجال، لا سيّما المطورين الجدد، وذلك بسبب عدم إصدار شوبيفاي أي أدلة موثقة تشرح كيفية تطوير تطبيقات شوبيفاي، وهو ما يؤدي إلى قضاء المطورين ساعات طويلة في محاولة فهم العملية. المشكلة لاختبار أي تطبيق على شوبيفاي، من الضروري إنشاء اتصال بين التطبيق الموجود على جهازك المحلي والتطبيق الموجود في لوحة تحكم شوبيفاي بارتنر Shopify Partner Dashboard. عملية إنشاء تطبيق جديد في لوحة التحكم بارتنر partner dashboard والاتصال مع التطبيق الجديد تتم تلقائيًا عند إنشاء تطبيق جديد باستخدام واجهة سطر أوامر شوبيفاي Shopify CLI عبر (npm init @shopify/app@latest). وبعد ذلك، حالما تطلق خادم التطوير عن طريق تشغيل الأمر npm run dev، ستعمل واجهة سطر أوامر شوبيفاي Shopify CLI على تحديث عنوان الويب URL في إعدادات التطبيق للإشارة إلى عنوان الويب URL الجديد، وهو ما ينقل الطلبات إلى ذ لديك. عند نقل التطبيق إلى مرحلة الإنتاج، سيتعيّن عليك تحديث عنوان الويب URL للتطبيق يدويًا مع عناوين الويب URL التي تستضيف تطبيقك عليها؛ لذا لا يُنصح باستخدام التطبيق نفسه في مراحل التطوير المتقدمة، لأن تفعيل الأمر npm run dev سيؤدي إلى تحديث عناوين الويب URL للإشارة إلى خادم التطوير المحلي لديك، مما يؤدي إلى تعطل التطبيق، وهذه نقطة مهمة يجب أخذها في الحسبان خلال تطوير تطبيقات شوبيفاي. توضح الصورة أدناه ما ذكرته منصة شوبيفاي في أدلتها الرسمية حول الموضوع السابق: يحافظ بعض الأشخاص على تعليمات برمجية متطابقة لإصدارات مختلفة من نفس التطبيق، وهو ليس بالحل المثالي، إذ تفرض هذه الطريقة العديد من التحديات في الحفاظ على تزامن قواعد التعليمات البرمجية. عوضًا عن الطريقة السابقة، إليك فيما يلي حلًا بسيطًا يتضمن إنشاء وصيانة تطبيقات مختلفة لبيئات متعددة باستخدام قاعدة تعليمات برمجية واحدة. وعلى الرغم من أننا سنستخدم قالب بلغة Node كمثال، لكن يمكن تطبيق هذا الحل مع لغة روبي Ruby ولغة php. الحل يتكون التطبيق من جزأين، الجزء الأول هو التطبيق نفسه، والذي يتضمن الواجهة الأمامية والخلفية وتكون استضافته من عندك؛ أما الجزء الثاني فهو امتداد قالب التطبيق، والتي يستضيفها شوبيفاي. وبما أن هذين المكونين يتطلبان استضافةً منفصلة، فيجب إدارة كل منهما على حدة. الجزء الأول: التطبيق أنشئ تطبيقًا جديدًا من لوحة تحكم بارتنر partner dashboard واستخدم معرف العميل ID الذي أُنشئ حديثًا وكلمة سر العميل لنقل التطبيق إلى مرحلة الإنتاج، وإليك فيما يلي شرحًا مفصلًا أكثر: 1. إنشاء تطبيق جديد أنشئ تطبيقًا جديدً يدويًا في لوحة تحكم شوبيفاي بارتنر Shopify Partner Dashboard، ويمكنك متابعة لقطات الشاشة أدناه لفهم الخطوات جيدًا: 2. استخدام بيانات اعتماد التطبيق الجديد خلال إنشاء التطبيق في مرحلة الإنتاج ستختلف الخطوات الآن اعتمادًا على مزود الاستضافة الذي تستخدمه، لكن يبقى المبدأ الأساسي على حاله، إذ يجب أن تحتوي متغيرات البيئة على بيانات اعتماد التطبيق الجديد، والتي تتكون من معرف العميل وكلمة سر العميل. على سبيل المثال، إذا كنت تريد نشر تطبيق باستخدام fly.io، فستحتاج إلى إضافة بيانات اعتماد التطبيق الجديد في ملف fly.toml. سيؤدي الآن تفعيل الأمر npm run dev على جهازك المحلي إلى إنشاء التطبيق الجديد وربطه مع التطبيق الأقدم في لوحة التحكم بارتنر partner dashboard. لكن عند نقل التطبيق إلى مرحلة الإنتاج (مثلًا باستخدام الأمر flyctl Publish --build-arg في fly.io)، فسيؤدي ذلك إلى إنشاء التطبيق وتوصيله مع التطبيق الجديد في لوحة تحكم بارتنر partner dashboard. الجزء الثاني: امتداد قالب التطبيق عملية نقل امتداد قالب التطبيق إلى مرحلة الإنتاج عملية واضحة ومباشرة، فعوضًا عن استخدام الأمر npm run، يجب عليك استخدام الأمر npm run deploy -- --reset سيؤدي هذا إلى مسح الإعدادات المحفوظة لأمر النشر، وهو أمر ضروري لأن الامتداد أُنشئ في تطبيق أقدم، وعند استخدام الأمر --reset سيطالبك Shopify CLI باختيار التطبيق الذي تريد نشر امتداد قالب التطبيق عليه. لاحظ أن هذه الخطوة لا تؤثر على الإعدادات المحفوظة للأمر npm run dev، مما يعني أن تفعيله سيستمر في نشر امتداد قالب التطبيق في التطبيق الاختباري الأقدم. في الختام باتباع هذه الخطوات، سيكون بإمكانك تحقيق النتائج المرجوّة، إذ يؤدي تشغيل الأمر npm run dev إلى نقل كل من التطبيق وامتداد قالب التطبيق إلى مرحلة اختبار التطبيق؛ بينما يؤدي تشغيل الأمر npm runploy -- --reset إلى نقل امتداد قالب التطبيق فقط إلى مرحلة الإنتاج، وفي الأخير، يؤدي تشغيل نص التفعيل مثل flyctl Publish --build-arg إلى نقل التطبيق فقط إلى مرحلة الإنتاج. الفائدة الرئيسية لهذا الأسلوب هي أنه يمكنك الاحتفاظ بتطبيقات متعددة لبيئات مختلفة باستخدام قواعد تعليمات برمجية واحدة، لكن بإعدادات تكوين مختلفة. ترجمة -وبتصرّف- للمقال Design a Separate Production App in Shopify لصاحبه Aditya Malani. اقرأ أيضًا شرح تفصيلي لكيفية إنشاء متجر إلكتروني على شوبيفاي Shopify كيف تزيد حركة المرور لمتجرك على شوبيفاي Shopify 20 من أفضل قوالب شوبيفاي Shopify مقارنة بين ووردبريس WordPress وشوبيفاي Shopify للتجارة الإلكترونية
-
هل تفكر في نقل متجرك الإلكتروني من شوبيفاي Shopify إلى ووكومرس WooCommerce؟ قد تبدو عملية نقل متجرك الإلكتروني من منصة إلى أخرى أمرًا صعبًا، لكن نقل منتجاتك وعملائك وطلباتك إلى ووكومرس WooCommerce أسهل مما قد تعتقد. في الواقع، ثمة حل لا يتطلب أي تدخل فعلي، ويضمن لك نقل متجرك الإلكتروني بكل سلاسة؛ كما أنك لا تحتاج إلى امتلاك أي معرفة تقنية، فكل ما عليك فعله هو ربط المنصتين معًا وستكون جاهزًا للانطلاق. سنتعرف في هذا المقال على مزايا ووكومرس WooCommerce وعلى طريقة نقل متجرك الإلكتروني بسلاسة من شوبيفاي Shopify إلى ووكومرس WooCommerce. لماذا قد تختار ووكومرس بدلا من شوبيفاي؟ إليك فيما يلي بعض الأسباب التي قد تدفعك إلى نقل متجرك الإلكتروني من شوبيفاي إلى ووكومرس: تحكم أفضل في متجرك الإلكتروني يتيح لك ووكومرس إمكانية التحكم الكامل في متجرك الإلكتروني كونه مفتوح المصدر، مما يمنحك القدرة على تخصيصه كيفما تريد، إذ يمكنك تصميم متجرك الإلكتروني الذي تريده بالضبط دون أي قيود. فعلى سبيل المثال، يعتمد ترتيب صفحات متجرك الإلكتروني في نتائج محركات البحث على العمل الذي تقوم به في موقعك والمحتوى ضمنه، لذا يتيح لك ووكومرس تعديل أي جانب من جوانب تحسين محركات البحث، بغض النظر عن ارتباط هذا الجانب بالأمور التقنية. علاوةً على ذلك، ستستفيد من تكامل ووكومرس السلس مع ووردبريس، وهو ما يساعدك على نشر محتوى منظم وعالي الجودة. على سبيل المثال، تؤدي شركة The Coffee Bros عملًا رائعًا في دمج محتوى مدونتها مع متجرها الإلكتروني، إذ تجيب منشورات المدونة على أسئلة المستخدمين، مثل "ما هي أفضل درجة حرارة ماء لصنع القهوة؟"، بحيث يتمكن العملاء من العثور على المعلومات التي يحتاجون إليها دون مغادرة الموقع. دمج بوابة الدفع يتيح كل من ووكومرس وشوبيفاي التكامل مع حلول الدفع الرئيسية، لكن ما يميز ووكومرس أنه يتيح الاتصال ببوابات الدفع المتخصصة الأقل شهرة، والتي قد تكون ضروريةً لبعض المتاجر، ويمكنك من هنا معرفة بوابات الدفع المتاحة مع ووكومرس. وعلى النقيض من ووكومرس، تفرض شوبيفاي رسوم معاملات إضافية على جميع بوابات الدفع الخارجية. فبعد أن عمل أصحاب المتاجر الإلكترونية بكل طاقاتهم على إضافة منتجات رائعة وتسويقها لعملاء جدد، فإن أسوأ ما يمكنهم مواجهته هو تضييق هوامش أرباحهم، إذ يمكن أن تصل رسوم المعاملات الإضافية إلى آلاف الدولارات من الإيرادات المفقودة حتى في المتاجر الإلكترونية الصغيرة. النسخ الاحتياطي يتيح لك شوبيفاي إمكانية تصدير بيانات العملاء وطلباتهم، لكنه يفرض عليك دفع رسوم مالية مقابل إنشاء نسخة احتياطية لتصميم متجرك الإلكتروني وإعداداته. على الجانب الآخر، يوفر ووكومرس مجموعةً متنوعةً من خيارات النسخ الاحتياطي الممتازة والمجانية. ومع نمو متجرك الإلكتروني، سيكون من الضروري امتلاك أكبر قدر ممكن من التحكم في متجرك، لكي تتمكن من اتخاذ القرار الأفضل حسب كل حالة. على سبيل المثال، عند توسيع نطاق متجرك الإلكتروني، قد تحتاج إلى نقله إلى استضافة ويب أفضل، بحيث يتحمل عدد الزوار المتزايد، ويوفر خيارات أمان متقدمة، وهو ما يوفره لك ووكومرس، إذ يمكنك اختيار أي مزود استضافة تريده. مرونة وتخصيص لا حدود لهما واحدة من أكبر الفوائد التي ستحصل عليها مع ووكومرس هي مرونته، إذ يُعَد ووكومرس مفتوح المصدر، مما يعني أنه يمكن لأي شخص نسخ الشيفرة المصدرية والتعديل عليها بالطريقة التي يريدها. على الجانب الآخر، لا يمكنك التعديل على شوبيفاي كونه مغلق المصدر، إذ تحتفظ المنصة بالملكية الكاملة على الشيفرة البرمجية الأساسية. تتيح لك الأنظمة مفتوحة المصدر مثل ووردبريس خيارات تخصيص واسعة، إذ يمكن للمطورين إنشاء مكونات إضافية أو قوالب لتوفير وظائف وخصائص جديدة. يحتوي متجر إضافات ووردبريس على أكثر من 54000 خيار مجاني لتطوير كل جوانب متجرك الإلكتروني، مثل التصميم والتسويق وغير ذلك؛ كما يحتوي ووكومرس على متجر واسع يضم أكثر من 300 إضافة تختص بالمتاجر الإلكترونية. إذا كانت منتجاتك معقدة أو فريدة، فيمكنك إعداد متجرك بالطريقة التي تريدها باستخدام ووكومرس، وإليك فيما يلي بعض الطرق التي تمكّنك من ذلك: قبول الودائع من العملاء أو تقديم خطط دفع متنوعة. السماح للمتسوقين بدمج المنتجات وتشكيل مجموعات. بيع صورك عبر الإنترنت بطريقة ممتعة بصريًا. إضافة الحقول وإزالتها والتعديل عليها في صفحة الدفع. عرض ترقيات إضافية على المنتجات، مثل تخصيصها أو تغليفها على شكل هدايا. كما يمكنك بالتأكيد بيع أي شيء تريده، بما في ذلك المنتجات والخدمات وحتى التنزيلات والاشتراكات والعضويات والحجوزات، وإليك فيما يلي بعض الأمثلة على الأنشطة التجارية التي تستخدم ووكومرس: شركة Phi Phi Pirate Boat: هي شركة تقدم رحلات بالقوارب، لذا فهي تبيع حجوزات لرحلات خاصة حول جزر Phi Phi التايلاندية. برنامج PHLearn: يقدم عضويات التي تتيح للمستخدمين الوصول إلى مكتبة من قوالب التصميم والبرامج التعليمية. متجر TipoType: يختص ببيع تراخيص المنتجات الرقمية. مشروع It Gets Better: هي منظمة غير ربحية تبيع منتجات ملموسة وتقبل التبرعات عبر الإنترنت. متجر Mike's Organic Delivery: يختص ببيع اشتراكات في برامج غذائية صحية مع توصيل المنتجات أسبوعيًا للعملاء. أما من ناحية تصميم متجرك الإلكتروني، فإن تكامل ووكومرس مع ووردبريس يوفر لك مزايا كثيرة؛ فمن خلال محرر قوالب ووردبريس المجاني مثلًا، يمكنك إنشاء أي تصميم تريده، سواءً لصفحات الهبوط أو منشورات المدونة أو تصنيفات المنتجات أو غيرها من الصفحات، إذ يمكنك إضافة العناصر التي تريدها، من نصوص وصور ومقاطع فيديو وأعمدة وغير ذلك، وكل ذلك ببضع نقرات فقط دون الحاجة إلى امتلاك أي خبرات برمجية أو توظيف مطور. هناك أيضًا الكثير من قوالب المواقع الإلكترونية التي يمكنك الاعتماد عليها، منها قوالب قابلة للتخصيص، ومنها قوالب يمكنك تصميمها بنفسك عبر سحب العناصر إلى المكان الذي تريده، لذا يمكن أن تختار تصميمًا بسيطًا أو معقدًا كما تريد. فيما يلي بعض الأمثلة على المتاجر التي تستخدم ووكومرس لإنشاء تصميمات جميلة: يدمج متجر AeroPress رسومًا متحركة ورسومات مخصصة في صفحته الرئيسية. يحظى متجر Good Dye Young بتجربة مدونة فريدة مثل علامته التجارية. لدى متجر ShadowTrader صفحات هبوط فعالة لكل خيار من خيارات الطلبات لديهم. يوفر متجر Green Dinner Table لعملائه صفحة أسئلة وأجوبة سهلة الاستخدام، وتحمل علامتهم تجارية. يعرض متجر Magna-Tiles صور المنتجات بطريقة ممتعة ومميزة. تحكم أكبر في عملية التسعير الاشتراك في ووردبريس أو ووكومرس مجاني، لكنك ستتحمل تكاليف اسم النطاق Domain Name والاستضافة وأي توسعات أخرى ترغب في إضافتها. يمكنك اختيار أي مزود وإضافة التوسعات حسب احتياجاتك، أي لن تكون مضطرًا إلى الدفع مقابل الوظائف التي لا تستخدمها. على الجانب الآخر، إذا كنت تستخدم شوبيفاي، فستتحمل تكاليف ما يلي: الخطط الشهرية: اعتمادًا على خطة شوبيفاي التي اخترتها، يمكن أن تدفع بين 29 إلى 299 دولارًا شهريًا. وكلما زادت المزايا التي تريدها، كان عليك أن تدفع أكثر. على سبيل المثال، إذا كنت ترغب في تقديم أسعار شحن لحظية، فأنت بحاجة إلى استخدام الخطة المتقدمة من شوبيفاي. الإضافات: تتطلب العديد من إضافات شوبيفاي رسومًا شهريةً، فإذا كنت تريد إضافة قوائم انتظار لمنتجاتك مثلًا، فستتكلف حوالي 14.99 دولارًا شهريًا، وهو ما يعادل حوالي 180 دولارًا سنويًا. بالمقابل، العديد من إضافات ووكومرس مجانية، وغالبًا ما تفرض الإضافات المدفوعة رسومًا سنويةً مقبولة، مما يساعدك على توفير الكثير من الأعباء المالية. فعلى سبيل المثال، تكلفك إضافة قائمة الانتظار 49 دولارًا سنويًا فقط. المعاملات: إذا كنت تستخدم بوابة دفع خارجية، فإن شوبيفاي يأخذ ما من 0.5% إلى 2% مقابل كل معاملة، إضافةً إلى أي رسوم تفرضها بوابة الدفع، فحتى لو كان لديك عدد قليل من المعاملات يوميًا، فقد تخسر أرباحًا تقدر بآلاف الدولارات سنويًا. بالمقابل، لن تُفرض عليك أي رسوم إضافية في ووكومرس، ما يعني أنه بإمكانك توفير تكاليف إضافية. تكاليف الشحن والأدوات يسمح شوبيفاي للتجار بفرض رسوم الشحن وطباعة الملصقات من حساباتهم، كما يتضمن تطبيق الخصومات من شركات الشحن، لكن لكي تتمكن من عرض الأسعار اللحظية من شركات الشحن، يجب أن يكون لديك اشتراك في الخطة المقدمة، والتي تأتي بسعر مرتفع وهو 299 دولارًا شهريًا. تقدم ووكومرس ملحق WooCommerce Shipping الذي يتيح لك إمكانية طباعة الملصقات بسهولة من لوحة التحكم، مع إمكانية حساب الخصومات من شركات الشحن؛ كما يتيح لك إمكانية عرض أسعار الشحن اللحظية من شركات النقل مقابل 79 دولارًا سنويًا. واحدة من أكبر الاختلافات التي يجب ملاحظتها بين ووكومرس وشوبيفاي هو أن ووكومرس يدعم أصحاب الأنشطة التجارية الصغيرة، فعلى الرغم من أن نظامهم الأساسي مجاني تمامًا، لكنهم لا يكتفون ذلك، بل يقدمون موارد وأدوات إضافية مثل ملحق WooCommerce Shipping دون أي تكلفة مرتفعة. عندما تبدأ رحلتك في عالم التجارة الإلكترونية أو تحاول توسيع نشاطاتك التجارية، فإنه من المهم بالنسبة لك أن تحتفظ بأقل قدر ممكن من التكاليف، وهو ما يتيحه لك ووكومرس، فهو يساعدك على استثمار أموالك في المجالات التي تنمّي أعمالك وتجعلها أكثر نجاحًا. خيارات منتجات غير محدودة خيارات المنتجات هي الخيارات المقدمة للعملاء لكل منتج، فإذا كنت تبيع قمصانًا مثلًآ، فيمكنك تقديم قمصان باللون الأحمر والأزرق والأخضر والأصفر، وبمقاسات XS - 3XL؛ لذا سيصل عدد خيارات القمصان إلى 28 اختلافًا. واعتمادًا على طبيعة منتجاتك، قد يكون لديك عدد كبير من خيارات المنتجات، وهنا سترغب بكل تأكيد في أن يتمكن عملاؤك من اختيار المنتج المناسب لاحتياجاتهم. يحدد شوبيفاي خيارات المنتجات بـ 100 خيار فقط، فإذا كنت تبيع أحذيةً رجاليةً متوفرةً بثلاثة مقاسات عرض (ضيقة وعادية وواسعة)، وأحجام قياسية من 6 إلى 15 (بما في ذلك نصف المقاسات)، وثلاثة ألوان؛ فسيكون لديك 153 اختلافًا، وفي هذه الحالة ستتجاوز الحد الذي يسمح به شوبيفاي. لكن مع ووكومرس، يمكنك عرض أي عدد تريده من خيارات المنتجات. الانضمام إلى مجتمع متماسك استخدامك لووكومرس يعني أنك انضممت لمجتمع من الأشخاص الذين يرغبون في التعلم والنمو معًا. يجتمع سنويًا مئات الآلاف من المطورين وأصحاب المواقع من أكثر من 400 مدينة حول العالم ليبحثوا سبل تطوير ووكومرس. وفي كل تحديث لووردبرس، يساهم مئات المتطوعين المتحمسين لإنشاء برامج رائعة، كما يقدم هذا المجتمع المساعدة في منتديات الدعم الممتازة، حيث يمكنك إرسال أي سؤال والحصول على إجابات من مجموعة متنوعة من الآراء. وبغض النظر عن المشكلة التي تواجهك، هناك دائمًا شخص جاهز لمساعدتك. كيفية الانتقال من شوبيفاي إلى ووكومرس إذا كان لديك متجر إلكتروني على شوبيفاي وترغب في الانتقال إلى ووكومرس، فقد تشعر بأن المهمة مرهقة، فأنت لا تريد فقد بيانات العملاء وطلباتهم الحالية، وتريد أن تكون العملية سهلة وسلسة قدر الإمكان، لذا إليك الحل! ستحتاج أولًا إلى اختيار خطة استضافة، وتثبيت ووردبريس وتفعيل ووكومرس. وإليك فيما يلي كتاب من أكاديمية حسوب يشرح بالتفصيل كيفية إنشاء المواقع والمتاجر الإلكترونية عبر ووردبريس مع ووكومرس، كما يمكنك تصفح الكتاب على شكل مقالات تشرح كل خطوة من العملية، مثل مقال تثبيت إضافة WooCommerce وضبطها وبدء العمل على إنشاء متجر إلكتروني. من المهم ملاحظة أن نقل بيانات متجرك الإلكتروني من شوبيفاي إلى ووكومرس لا يعني نقل التصميم أيضًا، لكن هناك العديد من القوالب المجانية والمدفوعة التي يمكنك الاختيار من بينها وإنشاء أي تصميم تريده. وبعد ذلك، سيكون بإمكانك نقل بيانات متجرك من شوبيفاي إلى ووكومرس، وهناك عدة طرق آمنة لذلك، وهي: 1. التصدير والاستيراد اليدوي على الرغم من أن الأمر قد يستهلك بعض الوقت، لكن يبقى نقل البيانات اليدوي أمرًا مجانيًا، وإليك الخطوات فيما يلي: تصدير وتحميل بيانات منتجاتك من شوبيفاي. في لوحة التحكم الخاصة بك على ووردبريس، انتقل إلى ووكومرس WooCommerce ثم المنتجات Products. اضغط على "استيراد Import" في الأعلى، وستجد هناك أداة product CSV importer التي تسهّل عليك عملية استيرادات الملفات التي تضم بيانات منتجاتك. انقر فوق "اختيار ملف Choose File" وحدد ملف CSV الذي تريد استيراده، ثم انقر فوق "متابعة Continue". ستشاهد شاشة تخطيط الأعمدة، إذ يحاول ووكومرس تلقائيًا مطابقة الأعمدة في ملف CSV مع حقول المنتجات في ووكومرس. قد ترى أنك بحاجة إلى تخطيط بعض الأشياء بنفسك، لذا يمكنك إجراء ذلك باستخدام القوائم المنسدلة الموجودة على يمين كل صف. أخيرًا، انقر فوق "Run the Importer" لبدء الاستيراد، وانتظر حتى تنتهي العملية بأكملها. إذا كنت ترغب أيضًا في استيراد بيانات العملاء والطلبات من شوبيفاي، فيمكنك استخدام بعض الملحقات مثل Migrate & Import Shopify to WooCommerce أو Customer/Order/Coupon CSV Import Suite. 2. توظيف أحد الخبراء إذا لم تكن ترغب في نقل بيانات متجرك بنفسك، فيمكنك الاستعانة بمتخصص ليتولى الأمر نيابةً عنك. ويمكنك الوصول إلى أحد هؤلاء المتخصصين عبر منصة مستقل، أكبر منصة عربية للعمل الحر، إذ تضم نخبة كبيرة من المطورين والمبرمجين. 3. استخدم ملحق Cart2Cart يساعدك ملحق Cart2Cart على نقل بيانات متجرك إلى ووكومرس عبر ثلاث خطوات سهلة، كما يمكنك اختبار العملية من خلال النقل التجريبي المجاني الذي يوضح بالضبط كيفية عمل النقل. علاوةً على ذلك، لا تحتاج عملية النقل إلى أي خبرات تقنية، وسيكون بالإمكان أيضًا إبقاء متجرك على شوبيفاي فعالًا في الخلفية. فيما يلي بعض البيانات التي يمكن نقلها عبر ملحق Cart2Cart: بيانات المنتجات: مثل الأسماء والأرقام التسلسلية SKU والأوصاف والأسعار والأوزان والخيارات المتاحة لكل منتج. معلومات أصناف المنتجات: بما في ذلك الأسماء والأوصاف وعناوين صفحات الويب URL. بيانات العملاء: مثل أسمائهم وبريدهم الإلكتروني وعناوين سكنهم وأرقامهم وغير ذلك. بيانات الطلبات: مثل التواريخ والمعرّفات والحالات والكميات والخصومات وتفاصيل الشحن. القسائم: أسماء القسائم والأكواد ومقدار الخصومات. منشورات المدونة: ويشمل العناوين والأوصاف والتواريخ وعناوين الويب URL والمحتوى والصور. صفحات الموقع: بما في ذلك العناوين والتواريخ وعناوين الويب URL والحالات. مقابل تكلفة إضافية، يمكن لملحق Cart2Cart إنشاء 301 عملية إعادة توجيه لكل عناوين الويب URL في متجرك الإلكتروني، وهو أمر مفيد للغاية للحفاظ على ترتيب صفحاتك ضمن نتائج محركات البحث. كيفية استخدام Cart2Cart يمكنك إكمال عملية نقل البيانات في ثلاث خطوات: حدد منصة التجارة الإلكترونية المصدر (والتي هي في هذه الحالة شوبيفاي). وكل ما عليك فعله هو تقديم عناوين الويب الحالية وتفاصيل واجهة برمجة التطبيقات API. أنشئ اتصالًا مع منصة التجارة الإلكترونية الهدف (والتي هي ووكومرس)، إذ يمكنك تثبيت جسر الاتصال المطلوب على موقعك على ووردبريس يدويًا أو تلقائيًا. حدد أنواع البيانات التي تريد نقلها ومطابقتها مع حقول ووكومرس المقابلة. والآن، كل ما عليك فعله هو بدء عملية النقل والانتظار حتى النهاية، ويمكن أن تختلف مدة النقل بناءً على حجم متجرك الإلكتروني. ماذا عن الأمان؟ الأمان من الأمور الحساسة التي ستهتم لها، فأنت تريد حماية بيانات العملاء وبيانات الطلبات، لذا يحرص ملحق Cart2Cart على جعل عملية النقل آمنة قدر الإمكان. على سبيل المثال، تُنفّذ عملية النقل على خادم مخصص منفصل باستخدام تشفير SSL لحماية بياناتك. يمكن فقط لموظفي ملحق Cart2Cart المصرح لهم عرض تفاصيل تسجيل الدخول، كما أنه لا تُخزّن أي من هذه المعلومات بعد اكتمال عملية النقل. إضافةً إلى ذلك، يضمن المسؤولون عدم الكشف عن بياناتك لأطراف ثالثة أو استخدامها لأي أغراض أخرى. كم تكلف خدمة Cart2Cart؟ يعتمد السعر الدقيق على حجم متجرك الإلكتروني والبيانات التي تريد نقلها، إذ تبدأ التكلفة من 69 دولارًا، والتي تشمل نقل ما يصل إلى 1000 منتج و500 عميل و500 طلب، ويمكن أن يزيد السعر بناءً على حجم متجرك. وهناك ترقيات متاحة توفر وظائف إضافية، مثل عمليات إعادة التوجيه 301 ونقل منشورات المدونة. في الختام سواءً اخترت نقل البيانات بنفسك، أو وظّفت خبيرًا لذلك، أو استخدمت ملحق Cart2Cart؛ فإنه بإمكانك نقل متجرك بسرعة وكفاءة من شوبيفاي إلى ووكومرس، وهو خيار جيد سينعكس على عملائك وإيراداتك. ترجمة -وبتصرّف- للمقال How to Migrate from Shopify to WooCommerce (and Why You Should) لصاحبته Kathryn Marr. اقرأ أيضًا مقارنة بين ووردبريس WordPress وشوبيفاي Shopify للتجارة الإلكترونية شرح تفصيلي لكيفية إنشاء متجر إلكتروني على شوبيفاي Shopify دمج شوبيفاي shopify مع ووردبريس عبر تضمين زر الشراء أيهما أفضل، شوبيفاي أم ووكومرس؟
-
تحقق منصة شوبيفاي Shopify نموًا سريعًا، مع زيادة إيراداتها بحوالي 75% سنويًا، لذا من الواضح أن هذا النمو يعود إلى زيادة عدد الأشخاص الذين يعتمدون على شوبيفاي كمنصة لإنشاء وإدارة متاجرهم الإلكترونية. ولكي تبقى على اطلاع على أحدث الاتجاهات، جمعنا لك في هذا المقال 20 من أفضل قوالب شوبيفاي Shopify، مع الانتباه إلى أنها لا تعمل على ووردبريس WordPress. لذا فإن كنت تريد إطلاق متجرك الإلكتروني على شوبيفاي، فيمكنك اختيار أحد هذه القوالب ليناسب مشروعك. هناك صفتين مشتركتين بين جميع القوالب في هذا المقال، هما: تقييمات عالية: إذا كانت مراجعات القالب سلبية وتقييماته منخفضة، فلن تجده في هذه القائمة. دعم المطورين: إما من خلال التحديثات الأخيرة، أو من خلال مراجعات العملاء. إضافةً إلى المعيارين السابقين، اشتملت القائمة على قوالب ذات استخدامات وأنماط مختلفة، لكي يتمكن أصحاب جميع أنواع المتاجر الإلكترونية من اختيار القالب الذي يناسب طبيعة عملهم. وأخيرًا، ستجد في هذه القائمة كلًا من القوالب المجانية والقوالب المدفوعة ذات الأسعار المختلفة. سنبدأ أولًا مع القوالب العربية، وهي القوالب التي تم تصميمها بالأساس باللغة العربية لتتناسب مع حالة اللغة التي تكتب من اليمين إلى اليسار RTL عكس أغلب لغات العالم؛ ففي العادة تكون القوالب الأجنبية مصممة من اليسار إلى اليمين LTR وتدعم العربية بقلب اتجاه النصوص والعناصر، مما يترتب عنه بعض المشاكل أحيانًا للمظهر والمحتوى العربي؛ بينما القوالب العربية مصممة من الأساس بما يتوافق مع النص العربي، لذا تكون متوافقة تمامًا مع الكتابة العربية وعناصرها. أهي القوالب التي تم تصميمها كاملةً بالأساس باللغة العربية لتناسب المستخدم العربي. قالب كافيين "كافيين" هو قالب عربي متعدد الاستخدامات، يحوي جميع الصفحات التي قد تحتاجها المتاجر الإلكترونية لتسهيل التسوق عبرها، ويدعم الاتجاهين RTL + LTR. يأتي قالب كافيين بواجهة مريحة لعين المستخدم وتسهل عليه التنقل والحصول على المعلومات اللازمة حول المنتج الذي يرغب فيه، وفي ما يلي أهم مميزات القالب: التخصيص الكامل لصفحات وأقسام القالب بسهولة. تعدد استخدامات القالب وتنوع أقسامه وترويساته الدعم المزدوج لاتجاهات اللغات RTL + LTR، وتعدد اللغات. واجهة استخدام سلسة تسمح بإتمام عملية التسوق بسهولة وسرعة. إمكانية استخدام تطبيقات مساعدة على رفع الجودة ضمن متجرك الإلكتروني. تعدد العملات. خاصية الإشعار اليدوي والتلقائي. إمكانية إضافة مدونة على متجرك الإلكتروني القائم على قالب كافيين. توثيق عالي الجودة يسهل التعرف على القالب واستخدامه وتعديله. يمكن الوصول إلى قالب كافيين من متجر بيكاليكا، عبر صفحة القالب كافيين. قالب كبريت "كبريت" هو قالب عربي واسع الاستخدام، ومناسب لمختلف أحجام الأعمال وفئاتها المستهدفة. يدعم القالب اتجاهي اللغات التي تكتب من اليمين إلى اليسار واللغات التي تكتب من اليسار إلى اليمين، كما يقدم إمكانية تفعيل خاصية التحريك Animation لعدة أقسام في القالب، مع إمكانية التحكم السريع والسهل في كل إعدادات القالب. إليك فيما يلي ذكر لأهم ما يميز القالب: التخصيص الكامل لصفحات وأقسام القالب. تجاوب الموقع مع كل أنواع الأجهزة وأحجام الشاشات المتوفرة. تعدد الاستخدامات. تعدد الخيارات والأقسام. دعم اتجاهي اللغات LTR و RTL معًا. إمكانية استخدام ميزة التحريك. توفر البحث بالفلترة لتسهيل الوصول إلى المنتجات والجزئيات المطلوبة بكل سهولة. سرعة الأداء وتحميل الصفحات. سهولة مشاركة المنتجات من صفحة المنتج مباشرةً. إمكانية إضافة مدونة ضمن المتجر الإلكتروني. تعدد خيارات العملات. توافق القالب مع التطبيقات التي يوفرها شوبيفاي. توفر توثيق عالي الجودة يسهل التعرف على القالب واستخدامه وتعديله. يمكن الوصول إلى قالب كبريت من متجر بيكاليكا، عبر صفحة القالب كبريت. قالب عندليب "عندليب" هو قالب متعدد الاستخدامات، يحوي 19 قسم يمكن استخدامه حسب الحاجة ومجال المتجر. يأتي قالب عندليب بخاصية ازدواجية اللغة، أي أنه يدعم الاتجاهين RTL و LTR؛ كما يمكن التحكم في ترويسة الموقع التي تأتي بخيارات متنوعة تسمح لك بالتحكم في عرض موقعك وتمييزه بسهولة. يأتي قالب عندليب بمساحات بيضاء كثيرة، تسمح بعرض المنتجات ومواصفاتها وتفاصيلها بطريقة راقية، تسمح للمستخدم بمطالعة صور المنتجات دون تشتت، وكذا الوصول السريع إلى تفاصيلها الإضافية. إليك فيما يلي ذكر لأهم ما يميز القالب: التخصيص الكامل التجاوب التام لكل صفحات وأقسام الموقع تعدد الاستخدامات والخيارات ازدواجية اللغات والتوافق مع تطبيقات الترجمة تعدد خيارات العملات التوافق مع تطبيقات شوبيفاي إمكانية إضافة مدونة توفر توثيق عالي الجودة يسهل التعرف على القالب واستخدامه وتعديله. يمكن الحصول على هذا القالب من متجر بيكاليكا، عبر صفحة القالب عندليب. قالب بصمة "بصمة" هو قالب عربي موجه لأعمال التجارة الإلكترونية، يمكن استخدامه بأكثر من لغة، ليناسب أعمال التجارة الإلكترونية متنوعة الحجم والمستخدمين. يمكّن قالب بصمة من إضافة عدة خيارات للعملات إلى متجره، من أجل توفير الخيارات المناسبة والمريحة للعملاء؛ كما يحتوي على أزيد من 16 قسم، قابلة للتخصيص، كما يقدم تجربة استخدام وتجاوب مميزين. قالب "بصمة" يأتي بشكل احترافي قائم على البساطة والتصميم المسطح Flat Design، كما يتمتع بمساحات بيضاء مريحة للمستخدم لاكتشاف كل العناصر المتاحة بكل سهولة ودون تشتت أو ضياع بالموقع. إليك فيما يلي أهم ما يميز القالب: التخصيص الكامل لصفحات وأقسام القالب، والمرونة العالية بذلك. تجاوبية القالب مع كل الأجهزة. توافق القالب مع التطبيقات التي يوفرها شوبيفاي. تعدد الاستخدامات يقدم القالب خيارات متنوعة من الأقسام والصفحات، يمكن المفاضلة بينها واستخدام ما تحتاجه وترتيبه حسب حاجتك. تعدد اللغات. تعدد خيارات العملات. إمكانية إضافة مدونة ضمن المتجر الإلكتروني. توفر توثيق عالي الجودة يسهل التعرف على القالب واستخدامه وتعديله. يمكن الحصول على هذا القالب من متجر بيكاليكا، عبر صفحة القالب بصمة. كانت هذه أشهر القوالب العربية، أما بالنسبة للقوالب الأجنبية، وهي القوالب التي تم تصميمها بالأساس لتناسب اللغة الإنجليزية وبعض اللغات الأجنبية الأخرى ذات اتجاه LTR، والتي قد يكون لها دعم ضعيف أو غير مكتمل للغة العربية، فتتمثل أشهر قوالب شوبيفاي منها فيما يلي: قالب ديستريكت District قالب ديستريكت District من قوالب شوبيفاي المميزة، إذ يأتي في ثلاثة أنماط تصميمية مختلفة، ويحتوي كل نمط على مساحة إعلانية كبيرة في أعلى الواجهة الرئيسية، والتي تتيح لك القدرة على الترويج لأحدث عروضك، كما يتضمن أماكن لعرض الصور والشرائح Slides في أسفل الصفحة الرئيسية للترويج لأحدث منتجاتك. يمكنك أيضًا إضافة موجز إنستجرام Instagram بالعرض الكامل، وإظهار النوافذ المنبثقة للعملاء، والتي تُعدّ وسيلةً أخرى لمشاركة عروضك الترويجية. والأفضل من ذلك كله أن لدى قالب District تقييمات إيجابية بنسبة 100% من أكثر من 247 تقييمًا. إليك فيما يلي أهم مزايا هذا القالب: مساحات إعلانية كبيرة ونوافذ ترويجية منبثقة. شرائح Slides ومجموعات صور للترويج لمنتجاتك على الصفحة الرئيسية. موجز إنستجرام Instagram بالعرض الكامل. ميزة عرض مقاطع الفيديو على الصفحة الرئيسية. تصميم متجاوب مع مختلف أحجام الشاشات. تقييمات رائعة. زر صفحة القالب للمزيد من المعلومات. قالب بارالاكس Parallax واحدة من أهم ميزات قالب بارالاكس Parallax هي صفحته الرئيسية ذات التنسيق الطويل، إذ يمكنك جذب انتباه الزوار من خلال وضع صور جميلة بعرضها الكامل، مع إضافة تأثير اختلاف المظهر Parallax Scrolling. تأثير اختلاف المظهر Parallax Scrolling هو من التقنيات التصميمية لعرض الصور، حيث تُفصل الصورة إلى جزءين، الخلفية والأمامية؛ ففي هذه الخاصية، ستتحرك الخلفية ببطء مع ثبات الأمامية، مما يخلق شعورًا بأن التصميم ثنائي الأبعاد. إليك فيما يلي أهم مزايا قالب Parallax: صور بعرضها الكامل مع تأثير اختلاف المظهر Parallax Scrolling. 15 قسمًا للصفحة الرئيسية، بما فيها إعلانات الفيديو. إضافة أجاكس AJAX إلى سلة التسوق. محوّل عملات مدمج لتحويل الأسعار تلقائيًا. زر صفحة القالب للمزيد من المعلومات. قالب سبلاي Supply قالب سبلاي Supply هو إحدى قوالب شوبيفاي المجانية، وهو مُصمَّم بطريقة بسيطة ومتخصصة لعرض وتصفية المخزونات الكبيرة، لذلك قد لا يبدو التصميم إبداعيًا من الدرجة الأولى، لكنه مناسب تمامًا للمتاجر التي تبيع كميات كبيرة من المنتجات. يأتي قالب Supply بنمطين من الألوان، مع خيارات تصفية متقدمة للمنتجات، وشريط تمرير للصفحة الرئيسية لعرض منتجات متعددة على صفحتك الرئيسية، وإليك فيما يلي أهم مزايا هذا القالب: مصمم للمتاجر التي تحتاج إلى عرض أصناف منتجات كثيرة. نمطين مختلفين من الألوان. خيارات تصفية متقدمة. إمكانية عرض شرائح صور على الصفحة الرئيسية. زر صفحة القالب لمزيد من المعلومات. قالب ناراتيف Narrative على عكس القالب السابق المصمم لقوائم المنتجات الضخمة، يركز قالب Narrative على قوائم المنتجات الصغيرة، مع الاهتمام بسرد تفاصيل كل منتج. يمكّنك قالب Narrative من عرض مقطع فيديو على صفحتك الرئيسية، إضافةً إلى عرض مجموعات صور قابلة للتخصيص، وشرائح Slides من الاقتباسات، والمزيد من التفاصيل التي يمكن عرضها على صفحات المنتجات. يأتي القالب أيضًا بـ 3 أنماط ألوان مختلفة، مع ميزة عرض شرائح طولية جميلة، وتصميم صفحات بالعرض الكامل؛ وإليك فيما يلي أهم مزايا هذا القالب: مصمم لقوائم المنتجات الصغيرة وسرد قصص المنتجات. إمكانية عرض فيديو واضح على الصفحة الرئيسية. مجموعات صور قابلة للتخصيص وشرائح اقتباس وغير ذلك. تصميم صفحات بالعرض الكامل. عرض شرائح طولية. 3 ألوان مختلفة. زر صفحة القالب لمزيد من المعلومات. قالب آيكون Icon يمكن لقالب أيكون Icon عرض مجموعة من العناصر المرئية، بما ذلك الشرائح القابلة للتمرير، مع إمكانية إضافة تأثير اختلاف المظهر Parallax Scrolling. لذلك، إذا كان متجرك الإلكتروني يركز على المحتوى المرئي، فإن قالب Icon مخصص لمساعدتك على عرضه بأفضل طريقة ممكنة. يدعم قالب Icon أيضًا وضع موجز إنستجرام Instagram بالعرض الكامل لإضافة مزيد من المحتوى المرئي، ويمكن للمتسوقين عرض تفاصيل إضافية حول كل منتج دون مغادرة الصفحة بفضل ميزة العرض السريع للمنتج. وإليك فيما يلي أهم مزايا هذا القالب: يركز على عرض المحتوى المرئي. 3 ألوان مختلفة من القالب. يدعم تأثير اختلاف المظهر. عرض سريع للمنتج. موجز إنستجرام بالعرض الكامل. زر صفحة القالب لمزيد من المعلومات. قالب إيللا Ella قالب إيللا Ella مبني على نظام Bootstrap 3، وهو إحدى قوالب شوبيفاي الأكثر مبيعًا على متجر ThemeForest، مع حفاظه على تقييم 4.6 نجمة من أكثر من 5,250 عملية بيع، وهو تقييم ممتاز. يتميز قالب Ella بقائمة منتجات ضخمة، مع تصفية متقدمة للمنتجات حسب التصنيفات، وتصميمات مخصصة للصفحات؛ كما يمكنك عرض منتجاتك المميزة عبر لافتة إعلانية كبيرة على الصفحة الرئيسية. وإليك فيما يلي أهم مزايا هذا القالب: يحوي قائمة منتجات كبيرة ومتقدمة. مبني على نظام Bootstrap 3. يمكن تصفية المنتجات حسب التصنيفات. عربة التسوق المنسدلة. زر الاشتراك في النشرة الإخبارية. لافتة إعلانية كبيرة على الصفحة الرئيسية. زر صفحة القالب للمزيد من المعلومات. قالب يورستور YourStore يأتي قالب "متجرك" يورستور YourStore" مباشرةّ بعد قالب Ella في قائمة أكثر قوالب شوبيفاي مبيعًا على ثيم فورست ThemeForest، وهو يأتي بـ 22 تصميمًا جاهزًا، كما يدعم منشئ شوبيفاي Shopify Builder. إضافةً إلى ذلك، يوفر قالب YourStore مجموعة متنوعة من صفحات قوائم المنتجات وعربات التسوق، كما أنه مدمج مع Google Rich Snippets ويدعم تقنية التحميل البطيء. المقصود بتقنية التحميل البطيء lazy loading هو تحميل تحميل الصور والعناصر في صفحة الويب عند وصول المتصفح إليها، بدلًا من تحميلها أثناء تحميل الصفحة لأول مرة، وهو ما يقلل من وقت تحميل صفحة الويب، ويجنبك خسارة بعض العملاء المحتملين. إليك فيما يلي أهم مزايا هذا القالب: 22 تصميمًا جاهزًا. 8 قوائم منتجات مختلفة. 3 خيارات لصفحات المنتجات. خيارين لعربة التسوق. يدعم Google Rich Snippets. يدعم بحث أجاكس AJAX. زر صفحة القالب لمزيد من المعلومات. قالب سيمبل Simple قالب سيمبل Simple هو قالب بسيط وأنيق ومتاح مجانًا على متجر قوالب شوبيفاي Shopify Themes. يقدم هذا القالب تصميمًا خاليًا من التعقيد، ليصب التركيز مباشرةً على منتجاتك، لذا لا تتوقع وجود عدد كبير من الأجراس والصفارات كما هو حال بعض قوالب شوبيفاي الأخرى في هذه القائمة. إليك فيما يلي أهم مزايا هذا قالب Simple: تصميم بسيط. قائمة منتجات جانبية. ميزة المنتجات ذات الصلة لعرض المنتجات المتشابهة. إمكانية تكبير صورة المنتجات وإضافة الرسوم المتحركة. لمزيد من المعلومات، زرصفحة القالب. قالب آفنيو Avenue قالب Avenue هو أيضًا من القوالب الشهيرة على متجر Theme Forest Shopify. يتميز القالب بقائمة منتجات ضخمة، مع وجود قائمة المفضلة ليضيف العملاء إليها المنتجات التي تعجبهم,، كما يحتوي القالب على ميزة التنقل الطبقي، والتمرير اللانهائي، وغيرها من الميزات المفيدة الأخرى. ميزة التنقل الطبقي layered navigation هي طريقة تسهّل على العملاء الوصول إلى المنتجات بسهولة، من خلال توفير قائمة تنقل جانبية حسب السعر أو اللون أو الفئة أو المادة الخام أو غير ذلك، أي أنها تشبه خيارات التصفية في البحث؛ أما التمرير اللانهائي infinite scroll فهو أسلوب تصميمي يقوم على استمرار عرض محتوى كلما مرر الزائر للأسفل، وهو عكس أسلوب ترقيم الصفحات عند وجود عناصر كثيرة، لذا كلما مرر العميل للأسفل، ستظهر له منتجات جديدة. الأمر هنا يشبه طريقة تصفح منصات التواصل الاجتماعي. يتيح لك قالب Avenue إمكانية التحكم الكامل في صفحات قوائم منتجاتك، إضافةً إلى صفحات المنتجات الفردية. وسيكون بإمكانك إظهار نوافذ منبثقة مفيدة للاشتراك في النشرة الإخبارية، إضافةً إلى ميزات أخرى، مثل دعم Google Rich Product Snippets وميزة التحميل البطيء. إليك فيما يلي أهم مزايا هذا القالب: مبني على Bootstrap 3. قائمة منتجات ضخمة. نوافذ منبثقة للاشتراك في النشرة الإخبارية. عرض صور المنتجات مع تفاصيل المنتج، مثل الأبعاد أو الخامة أو الوزن. العرض السريع للمنتج quick view. التمرير اللانهائي infinite scroll. يدعم Google Rich Product Snippets. زر صفحة القالب لمزيد من المعلومات. قالب فودلي Foodly قالب فودلي Foodly هو قالب شوبيفاي جميل يركز على عرض الأطعمة والمنتجات الغذائية. يتميز القالب بإمكانية إنشاء محتوى مرئي بسهولة عبر خاصية السحب والإفلات، إضافةً إلى سهولة تثبيته بنقرة واحدة. يتضمن القالب ميزات أخرى مفيدة للمحتوى الغذائي، مثل عرض مقالات تشرح وصفات تحضير الأطعمة، وقسم لتوضيح القيمة الغذائية في كل وجبة، وقائمة طعام ضخمة. وفيما يلي أهم مزايا قالب Foodly: التركيز على الأطعمة. مقالات لشرح وصفات التحضير. حاسبة القيمة الغذائية. إنشاء محتوى بصري عبر السحب والإفلات. التثبيت السهل بنقرة واحدة. زر صفحة القالب لمزيد من المعلومات. قالب موبيلا Mobilia يساعدك قالب موبيلا Mobilia الجميل على سرد قصة علامتك التجارية، لذا فهو مناسب للعلامات التجارية التي تعتمد على سرد القصص، عوضًا من قوائم المنتجات الكبيرة. إضافةً إلى المساحة الكبيرة التي يوفرها قالب Mobilia على الصفحة الرئيسية لسرد قصة علامتك التجارية، يتميز القالب أيضًا بإمكانية عرض فيديو بالحجم الكامل على الصفحة الرئيسية، وعرض موجز إنستجرام، وقوائم بمستويات متعددة، وشريط جانبي قابل للتخصيص، وغير ذلك من المزايا. إليك فيما يلي أهم مزايا قالب Mobilia: مناسب لعرض الصور الكبيرة. إمكانية عرض مجموعات صور. صور واحدة كبيرة للمنتج، وذات دقة عالية. إمكانية عرض فيديو على الصفحة الرئيسية. زر صفحة القالب لمزيد من المعلومات. قالب ماتريال Material قالب ماتريال Material من القوالب المتوفرة على متجر ThemeForest، إذ يعتمد القالب في أساسه على مبادئ التصميم المادي Material design، ويتميز بشرائح تمرير على شكل فيديو وخيارات تصفية متقدمة، وقائمة منتجات ضخمة، ومجموعة متنوعة من التصميمات. علاوةً على ذلك، يساعد هذا القالب الزائرين على التسوق دون إعادة تحميل الصفحة باستخدام ميزة التسوق السريع QuickShop، ويقدم مجموعة متنوعة من الأدوات المفيدة، إضافةً إلى صفحة Lookbook مخصصة. إليك فيما يلي أهم مزايا هذا القالب: يتبع مبادئ التصميم المادي Material design. مبني على نظام Bootstrap 3. تصفية نتائج البحث عبر أجاكس AJAX. شرائح تمرير على شكل فيديو. أنماط متعددة من الصفحات. ميزة التسوق السريع QuickShop. زر صفحة القالب للمزيد من المعلومات. قالب بورتو Porto قالب بورتو Porto هو في الأساس من قوالب ووكومرس WooCommerce الشهيرة، ونُقل إلى شوبيفاي وغيرها من أنظمة إدارة المحتوى. يتميز القالب بـ 20 تصميمًا فريدًا للصفحة الرئيسية، مع مجموعة متنوعة من صفحات فئات المنتجات، وتخطيطات عديدة لرؤوس الصفحات، والعديد من خيارات التخصيص الأخرى. إذا كنت تبحث عن قالب شوبيفاي مرن للغاية، فإن خيارك الأنسب هو قالب Porto الذي يتيح لك إمكانية التحكم الكامل في شكل متجرك الإلكتروني. فيما يلي أهم مزايا هذا قالب Porto: 20 تصميمًا مميزًا للصفحة الرئيسية. خيارات كثيرة من رؤوس الصفحات. ميزة المنتجات ذات الصلة، لعرض خيارات شراء أخرى للعملاء. لافتات ترويجية مع تأثير اختلاف المظهر Parallax. إضافة أجاكس AJAX إلى سلة التسوق وقائمة المفضلة. لمسات سحرية. زر صفحة القالب لمزيد من المعلومات. قالب لوفت Loft قالب لوفت Loft من القوالب المميزة يتيح لك إمكانية عرض المنتجات في الصفحة الرئيسية على شكل شبكة جذابة، لذا فهو مثالي للمتاجر التي تحتوي على قوائم منتجات كبيرة ولديها تصاميم ترويجية مربعة يمكن وضعها في الشبكة على الصفحة الرئيسية. علاوةً على ذلك، يتميز القالب بقائمة منتجات متعددة المستويات (مثل اختيار قسم الألبسة، ثم الألبسة الرجالية، ثم الأحذية، ثم الأحذية الجلدية، ونحو ذلك)، كما يوفر القالب تصاميم صفحات منتجات تركز على سرد قصة المنتج، مع مساحة كبيرة للنصوص والصور الإضافية. إليك فيما يلي أهم مزايا هذا قالب Loft: صفحة رئيسية على شكل شبكة. 3 ألوان مختلفة. تصاميم ترويجية مخصصة لتتناسب مع الشبكة على الصفحة الرئيسية. موجز إنستجرام بالعرض الكامل. قوائم منتجات متعددة المستويات. صفحات منتجات تركز على قصة المنتج. زر صفحة القالب لمزيد من المعلومات. قالب هوزورن Hosoren قالب هوزورن Hosoren هو قالب سريع الاستجابة، يأتي بـ 14 صفحة رئيسية مختلفة، مع 6 أنماط من رؤوس الصفحات. يتميز القالب بشريط تمرير دائري لعرض المنتجات، وإضافة أجاكس AJAX إلى سلة التسوق، وميزة العرض السريع للمنتجات، والكثير من الميزات المفيدة الأخرى. إليك فيما يلي أهم مزايا قالب Hosoren: 14 تصميمًا جاهزًا للصفحة الرئيسية. 6 رؤوس صفحات مختلفة. إضافة أجاكس إلى سلة التسوق. ميزة العرض السريع للمنتج. قائمة منتجات ضخمة مدمجة. زر صفحة القالب لمزيد من المعلومات. قالب هاندي Handy يركز قالب Handy على عرض المنتجات المصنوعة يدويًا. لذا فإن كان لديك مهنة حِرَفية وتريد إطلاق متجرك الإلكتروني، فيمكنك الاستعانة بقالب Handy لمساعدتك على بيع منتجاتك. يتميز قالب Handy بقائمة منتجات كبيرة قابلة للتخصيص، وتصميم مبني على Bootstrap 3 ومتجاوب مع مختلف أحجام الشاشات، مع ميزة البحث المباشر عن طريقة أجاكس AJAX، وكذلك التنقل الطبقي عبر أجاكس AJAX الذي يسهّل على العميل خيارات التصفية، ونوافذ منبثقة للاشتراك في النشرة الإخبارية، والكثير من الميزات الأخرى لمتاجر المنتجات اليدوية. إليك فيما يلي أهم مزايا هذا قالب Handy: مصمم للمتاجر التي تبيع المنتجات المصنوعة يدويًا. البحث المباشر عن طريق إضافة أجاكس AJAX. التنقل الطبقي عبر أجاكس AJAX. تصميمات متنوعة للشريط الجانبي. قائمة منتجات كبيرة ومرنة. نوافذ منبثقة للاشتراك في النشرة الإخبارية. نوافذ منبثقة لحماية الخصوصية حسب لوائح الاتحاد الأوروبي. زر صفحة القالب لمزيد من المعلومات. قالب فينيو Venue لقد صُمِّم قالب فينيو Venue خصيصًا للمتاجر الإلكترونية التي لديها متاجر على أرض الواقع، لذا فهو يناسبك إن كان لديك متجر واقعي، وتريد توسيع نشاطك التجاري عبر إطلاق متجر إلكتروني على شوبيفاي. إضافةً إلى عرض منتجاتك، يساعدك قالب فينيو Venue على الترويج لمتاجرك على أرض الواقع، إذ يتيح لك القدرة على عرض تفاصيل متاجرك الواقعية، مع الفعاليات والعروض المتاحة حاليًا، كما يمكنك إضافة المواقع الجغرافية لمتاجرك على الخريطة. القالب جميل ومنظم، ويمكن الاعتماد عليه كمتجر إلكتروني مستقل، لكن الخصائص التي يوفرها للربط مع متاجرك الواقعية هي ما تميزه عن غيره من القوالب، وإليك فيما يلي أهم مزايا قالب Venue: الترويج لأماكن وأحداث متاجرك الواقعية. يمكن تثبيت عدة مواقع جغرافية مختلفة على الخريطة. نافذة منبثقة للتأكد من عمر الزائر. 3 أنظمة ألوان مختلفة. زر صفحة القالب لمزيد من المعلومات. قالب ايليكترو Electro يناسب قالب ايليكترو Electro المتاجر الإلكترونية التي تبيع الأدوات والأجهزة التقنية الحديثة، فهو يتميز بتصميم رائع مع قائمة تنقل رأسية جذابة. يتميز القالب أيضًا بقوائم منتجات أفقية ورأسية، مع 4 أنماط لصفحات قوائم المنتجات؛ إضافةً إلى أدوات مفيدة لزيادة المبيعات. إليك فيما يلي أهم مزايا هذا القالب: مصمم للمتاجر التي تبيع الأجهزة والأدوات التقنية الحديثة. 4 أنماط مختلفة لصفحات المنتجات. 7 خيارات لصفحات فئات المنتجات. عربة التسوق المدمجة مع إستراتيجية البيع البديل Up selling. أنماط متعددة للصفحة الرئيسية. زر صفحة القالب لمزيد من المعلومات. قالب فاستور Fastor يُعدّ قالب فاستور Fastor واحدًا من أكثر قوالب شوبيفاي مبيعًا على متجر Theme Forest، وهو قالب مرن يحتوي على مجموعة كبيرة من العروض التوضيحية الجاهزة التي يصل عددها إلى أكثر من 73 عرضًا توضيحيًا. يأتي قالب Fastor مع أداة إنشاء الصفحات، وتطبيق قائمة المفضلة المدمجة، والعديد من الميزات المفيدة الأخرى، مثل صفحات lookbooks وغير ذلك. إليك فيما يلي أهم مزايا هذا القالب: أكثر من 73 عرضًا توضيحيًا جاهزًا. 26 نمطًا من رؤوس الصفحات. يدعم أقسام شوبيفاي Shopify Sections. يأتي مع أداة إنشاء الصفحات. يدعم تطبيق قائمة المفضلة. يدعم العملات المتعددة. يحتوي قوائم منتجات كبيرة. يدعم ميزة الإكمال التلقائي في البحث. زر صفحة القالب للمزيد من المعلومات. قالب بالو آلتو Palo Alto قالب بالو آلتو Palo Alto هو قالب حديث مصمم للعلامات التجارية التي تركز على المستقبل ولديها قصة تريد روايتها. وبما أن القالب يركز على سرد القصص، فهو خيار رائع للعلامات التجارية التي لديها قوائم منتجات صغيرة. يوفر قالب Palo Alto مساحة كبيرة لكتابة النصوص على صفحات المنتجات، كما يساعدك على سرد قصتك من خلال فيديوهات توضيحية بارزة، ويمكنك أيضًا الحصول على شهادات العملاء بسهولة لتعزيز علامتك التجارية على المستوى الاجتماعي. وإليك فيما يلي أهم مزايا هذا القالب: تصميم حديث. مصمم للعلامات التجارية التي لديها قوائم منتجات صغيرة. فيديوهات توضيحية بارزة. مساحة مخصصة لشهادات العملاء. مثالي لعرض الصور الكبيرة. زر صفحة القالب لمزيد من المعلومات. في الختام نأمل أنك قد استفدت من هذه القائمة التي اشتملت على أفضل قوالب شوبيفاي، وصحيح أن الكثير من أصحاب المتاجر الإلكترونية يستخدمون ووردبريس WordPress، ولكن حتى أكثر محبي ووكومرس WooCommerce لا يمكنهم التغاضي عن جاذبية شوبيفاي. ترجمة -وبتصرّف- للمقال 20 Best Shopify Themes لصاحبته Brenda Barron. اقرأ أيضًا شرح تفصيلي لكيفية إنشاء متجر إلكتروني على شوبيفاي Shopify كيف تزيد حركة المرور لمتجرك على شوبيفاي Shopify مقارنة بين ووردبريس WordPress وشوبيفاي Shopify للتجارة الإلكترونية دمج شوبيفاي shopify مع ووردبريس عبر تضمين زر الشراء أيهما أفضل، شوبيفاي أم ووكومرس؟
-
من المحتمل أنك في مرحلة ما قد قررت بدء رحلتك في عالم التجارة الإلكترونية، وصادفتَ منصتي ووردبريس WordPress وشوبيفاي Shopify، وبدأت تتساءل: أيهما أفضل؟ في الواقع، على الرغم من أن كلتا المنصتين تتيح لك القدرة على بناء متاجر إلكترونية ناجحة، لكنهما مختلفان تمامًا. سنتناول في مقالنا هذا الفوارق الرئيسية بين النظامين، وذلك في جوانب التسعير والتثبيت وسهولة الاستخدام والإمكانيات التي يتيحها كل نظام، وهي كلها عوامل أساسية يجب أخذها في الحسبان قبل الاستثمار في منصة معينة للتجارة الإلكترونية. هل ووردبريس WordPress مناسب لكل شيء حتى التجارة الإلكترونية؟ لطالما أحب الناس منصة ووردبريس WordPress، وكانت نصيحتهم الدائمة كلما احتاج شخص ما إلى إنشاء موقع إلكتروني: "مرحبًا، لماذا لا تستخدم ووردبريس WordPress؟" لكن بالنظر اليوم إلى المزايا التي يوفرها شوبيفاي Shopify للمتاجر الإلكترونية، بدأنا نعيد التفكير في خياراتنا. لا شك أن ووردبريس رائع للمواقع الإلكترونية، إذ يمكنه التعامل بسهولة مع أي شيء، كما يضع موقعك في متناول الجميع ومتاح للزوار من كل أنحاء العالم. لكن في الوقت نفسه؛ تُعدّ المتاجر الإلكترونية نوعًا محددًا من المواقع الإلكترونية، وتختلف تمامًا عن المدونات أو المواقع العادية. تُعنى منصة ووردبريس بإنشاء المواقع التي تقدم محتوى مجاني بأي شكل كان، سواءً مدونة لمشاركة المنشورات، أو مقاطع فيديو أو الصور أو غير ذلك، فكل ذلك المحتوى متاح لأي شخص لديه عنوان الموقع الإلكتروني؛ أما المتاجر الإلكترونية، فهي تقدم شيئًا مختلفًا تمامًا عن محتوى المدونات المجاني، فهي تقدم منتجات مدفوعة، لذلك يجب أن يكون الموقع بأكمله حذرًا عند التعامل مع بيانات العملاء المهمة، مثل بطاقات الائتمان والمعلومات الشخصية، إذ يجب أن تكون آمنة تمامًا من الاختراق. أيضًا، من المهم أن يكون الموقع قادرًا على التعامل مع الطلبات الواردة ومعالجتها والتأكد من عدم فقدان أي تفاصيل أو طلبات في مرحلة المعالجة. بمعنى آخر، هناك الكثير من الأشياء التي تختلف في المتاجر الإلكترونية مقارنةً بمدونات النشر العادية، وهنا يجب أن نكون مستعدين لقبول حقيقة أن ووردبريس ليس مثاليًا لكل شيء، إذ تحتاج أحيانًا إلى منصة مخصصة للمتاجر الإلكترونية. الفارق الرئيسي بين شوبيفاي Shopify ووردبرس WordPress يمكن اختصار الفارق الرئيسي بين ووردبرس وشوبيفاي بأن شوبيفاي أداة أو خدمة عبر الإنترنت، بينما ووردبريس عبارة عن برنامج مستقل ستحتاج إلى تثبيته بنفسك. ولكي تتمكن من استخدام شوبيفاي، كل ما عليك فعله هو الذهاب إلى الموقع الرسمي Shopify.com وإنشاء حساب. وستحتاج بعد ذلك إلى إجراء بعض الإعدادات السريعة، وستتمكن من إنشاء متجر إلكتروني على شوبيفاي Shopify. على الجانب الآخر، يتطلب استخدام ووردبريس كمنصة للتجارة الإلكترونية الكثير من الخطوات: ستحتاج أولًا إلى شراء استضافة ويب web host وشراء اسم نطاق domain. ستحتاج إلى اختيار قالب أو تصميم لموقعك الإلكتروني، إضافةً إلى اختيار عدد من المكونات الإضافية التي يمكن أن تساعدك على تحسين محركات البحث والتكامل مع منصات التواصل الاجتماعي وغير ذلك. ستحتاج بعد ذلك إلى تنصيب مكون إضافي مثل ووكومرس WooCommerce لتزويدك بجميع مزايا التجارة الإلكترونية غير المدمجة في ووردبريس. أخيرًا، يجب عليك متابعة عملية إنشاء متجرك الإلكتروني، مثل تفاصيل المتجر وإضافة بوابات دفع وإدخال المنتجات وما إلى ذلك، وهو ما قد يحتاج إلى بعض الوقت. ومن الفوارق المهمة أيضًا أنك ستحصل مع شوبيفاي على الدعم الفني، مما يعني أنه في حال واجهتك أي مشكلة مع النظام الأساسي، سيكون في إمكانك التواصل مع فريق الدعم ببساطة، وسوف يساعدونك على حل المشكلة غالبًا؛ في حين لا توفر منصة ووردبريس أي دعم مخصص. يمكن تشبيه شوبيفاي بالذهاب إلى شركة أثاث وشراء طاولة، ثم تجميعها في المنزل، أما ووردبريس فيشبه شراء الألواح الخشبية والمسامير والغراء والأدوات الأخرى، ثم العودة إلى المنزل وبناء الطاولة بنفسك. ما هو شوبيفاي Shopify؟ هي أداة متكاملة مخصصة للتجارة الإلكترونية تتيح لك القدرة على بناء متجر إلكتروني فعال من الصفر، دون مساعدة أي مصمم أو مطور، ودون الحاجة إلى امتلاك أي مهارات برمجية، وإليك بعض المعلومات الأخرى عن شوبيفاي: هي أداة مدفوعة، يتراوح الاشتراك فيها بين 29 إلى 299 دولارًا شهريًا. تتيح لك شوبيفاي بيع ما تريد، بما في ذلك الخدمات والمنتجات المادية والمنتجات الرقمية. يمكنك استخدام شوبيفاي لإنشاء متجرك الإلكتروني، كما يمكنك استخدامه كنقطة بيع، وذلك عندما يكون لديك متجر على أرض الواقع وتريد دمجه مع موقع إلكتروني. يتوفر على شوبيفاي أكثر من 100 قالب أو تصميم يمكنك الاختيار من بينهم، بعض تلك القوالب مجاني وبعضها مدفوع. يحصل كل موقع في شوبيفاي على نطاق فرعي مخصص مجانًا، والذي يكون على شكل YOURSTORE.shopify.com. يوفر شوبيفاي دعمًا فنيًا على مدار الساعة وطوال أيام الأسبوع 24/7. ما هو ووردبريس (ووكومرس WooCommerce)؟ ووردبريس هو برنامج يتيح لك القدرة على بناء أي نوع من المواقع الإلكترونية دون الحاجة إلى امتلاك خبرات برمجية كبيرة، حيث بشرط أن تتمكن من التعامل مع الإعدادات الفنية قليلًا، بما في ذلك تثبيت البرنامج نفسه، وتثبيت المكونات الإضافية، وتثبيت القوالب، ثم تثبيت مكون إضافي للتجارة الإلكترونية، وهو ووكومرس WooCommerce الذي يوفر لك مجموعةً من المزايا والخصائص التي تساعدك على إدارة العمليات في متجرك الإلكتروني. يجب أن تأخذ في الحسبان أنك قد تحتاج إلى بعض مهارات البرمجة أو التصميم اعتمادًا على التخصيصات التي تريد تنفيذها، وإليك فيما يلي بعض مزايا ووردبريس: برنامج ووردبريس مجاني تقريبًا، ولكي تتمكن من استخدامه، ستحتاج إلى اختيار استضافة ويب web host وشراء اسم نطاق domain، وبعد الانتهاء من ذلك، يمكنك البدء باستخدام ووردبريس مقابل 5 دولارات شهريًا. يقدم ووردبريس الكثير من الميزات المهمة لإدارة المحتوى. توجد آلاف القوالب في ووردبريس التي يمكنك الاختيار من بينها، منها ما هو مجاني ومنها ما هو مدفوع. يمكنك تطوير القوالب عبر تنصيب المكونات الإضافية. صحيح أنه لا يوجد دعم فني مباشر، لكن هناك مجتمع دعم مفيد للغاية. متى يجب استخدام شوبيفاي بدلًا من ووردبريس؟ يبرز شوبيفاي كحل مخصص للتجارة الإلكترونية لجميع الناس، والمقصود بالجميع أي حتى الأشخاص الذين ليس لديهم أي مهارات في إنشاء المواقع الإلكترونية، لكنهم يريدون أن يكونوا قادرين على إنشاء متجر إلكتروني مميز بأنفسهم. الميزة الرئيسية التي ستحصل عليها مع شوبيفاي هي أنه يمكنك إنشاء متجرك الإلكتروني في دقائق معدودة وتقديم الخدمات لعملائك على الفور تقريبًا. إضافةً إلى عدم احتياجك إلى أي مهارات برمجة أو بناء مواقع إلكترونية، فأنت لست بحاجة أيضًا إلى أن تكون صاحب خبرات طويلة بأعمال التجارة الإلكترونية نفسها، إذ يساعدك شوبيفاي على إدارة الكثير من الأمور، مثل المخزون والضرائب وإعدادات الشحن وغير ذلك؛ أي أنه سيقدم حلولًا مميزة لكل الجوانب المملة من العمل. إضافةً إلى ما سبق، فإن شوبيفاي هو حل بتكلفة مقبولة، فكل ما تحتاجه للبدء هو حوالي 29 دولارًا شهريًا، وبمقابل هذا السعر، سيكون بإمكانك الوصول إلى الكثير من تصميمات الموقع وخيارات التخصيص. باختصار، متى يمكنك استخدام شوبيفاي؟ إليك الحالات: الحالة الأولى: استخدمه إذا لم يكن لديك أي نوع من المواقع الإلكترونية، وترغب في إطلاق متجر إلكتروني ذا جودة عالية بوقت وجيز. الحالة الثانية: استخدمه إذا لم تكن لديك أي مهارات في التصميم أو البرمجة أو إنشاء المواقع الإلكترونية، ولا ترغب في توظيف أي شخص. الحالة الثالثة: استخدمه إذا كنت تريد دمج متجرك الإلكتروني مع متجرك الموجود على أرض الواقع. الحالة الرابعة: استخدمه إذا كنت بحاجة إلى منصة تجارة إلكترونية رائعة مع وجود دعم فني. إذا انطبقت عليك إحدى الحالات الأربعة السابقة، فاختر شوبيفاي، بغض النظر عما إذا كنت تريد بيع منتجات مادية أو منتجات رقمية أو تقديم خدمات أو حتى إذا كنت تريد بيع منتجات بالجملة إلى تجار التجزئة، إذ يمكن لشوبيفاي التعامل مع كل ذلك، حتى أن عدد المنتجات التي تقدمها ليس مهمًا، سواءً كان منتجًا واحدًا أو 1000 منتج. متى تستخدم ووردبريس بدلا من شوبيفاي؟ من الممكن القول بأن ووردبريس هي المنصة المثالية لإنشاء المواقع الإلكترونية، فهي قادرة على إنشاء جميع أنواع المواقع الإلكترونية، ولكن هناك بعض نقاط الضعف التي يجب تسليط الضوء عليها، أهمها: ووردبريس هو برنامج، مما يعني أنه يمكنك الحصول عليه مجانًا، لكن يجب عليك أولًا تثبيته على استضافة الويب وتهيئته بنفسك، وفي النهاية إطلاق موقعك الإلكتروني من خلاله. يُعدّ ووردبريس خيارًا رائعًا للمدونات، لكنه يفتقد إلى الكثير من مزايا التجارة الإلكترونية، والتي يمكنك الحصول عليها عبر المكونات الإضافية، مثل إضافة ووكومرس WooCommerce الشهيرة. فضلًا عن المكون الإضافي الخاص بالتجارة الإلكترونية، ستحتاج إلى مجموعة من المكونات الإضافية الأخرى للتعامل جوانب أخرى، مثل تحسين محركات البحث والتكامل مع منصات التواصل الاجتماعي. ستحتاج أيضًا إلى قالب أو تصميم جميل ومناسب لعلامتك التجارية، بحيث يظهر متجرك الإلكتروني الخاص بتصميم فريد وأصليّ. نستنتج من كل ذلك أن ووردبريس قد يكون مناسبًا لمن لديه خبرات جيدة، إذ يجب أن تكون قادرًا على كل تحرير ملفات PHP يدويًا، والاتصال بخادمك عبر FTP، وإمضاء وقت جيد في إعدادات لوحة التحكم، لكن لا بُدّ من الإشارة إلى أن ووكومرس WooCommerce المذكور أعلاه هو مكون إضافي رائع للتجارة الإلكترونية أيضًا، فهو يوفر جميع مزايا التجارة الإلكترونية التي قد تحتاجها، مثل عربات التسوق وقوائم المنتجات وتلقي المدفوعات وكوبونات الحسم وغير ذلك، والأهم من ذلك كله أنه مكون إضافي مجاني. باختصار، متى يمكنك استخدام ووردبريس للتجارة الإلكترونية؟ إليك الحالات: الحالة الأولى: استخدمه إذا كان لديك موقع على ووردبريس، وكانت الواجهة مألوفةً لديك، لأن ووكومرس يستخدم لوحة التحكم نفسها لإدارة المنتجات والطلبات، لذلك لن يكون هناك حاجة لتعلم أشياء جديدة. الحالة الثانية: استخدمه إذا كان لديك موقع ووردبريس وتريد تقليل التكاليف، بحيث لا تضطر إلى استثمار أي أموال إضافية في منصة تجارة إلكترونية جديدة. الحالة الثالثة: استخدمه إذا لم يكن لديك مشكلة بالتعامل مع الشيفرات البرمجية من وقت إلى آخر. الحالة الرابعة: استخدمه إذا كان بإمكانك التعامل مع منصة التجارة الإلكترونية، دون وجود أي دعم فني سريع الاستجابة. في الختام إذا لم تعجبك الخيارات المذكورة أعلاه وتريد إجابةً مختصرة، فإليك ما يلي: إذا كان لديك موقع مبني على ووردبريس سابقًا، فكل ما عليك فعله هو تنصيب ووكومرس وإطلاق متجرك الإلكتروني كعنصر من عناصر موقعك الحالي. أما إذا لم يكن لديك أي موقع إلكتروني حتى الآن، فأنشئ متجرك الإلكتروني الجديد باستخدام شوبيفاي. تتمحور الفكرة الأساسية حول شقين اثنين، هما توفير الوقت وتقليل التكلفة، لذا بكل بساطة، إذا كان لديك موقع جاهز مبني على ووردبريس، فسيكون من الأسرع والأرخص إضافة مكون التجارة الإلكترونية إلى موقعك الإلكتروني، عوضًا عن إنشاء شيء جديد من البداية. على الجانب الآخر، إذا لم يكن لديك أي موقع إلكتروني حتى الآن، فمن الأسرع والأسهل لك أن تسلك الطريق الآخر وتطلق متجرك الإلكتروني باستخدام منصة متخصصة مثل شوبيفاي. ترجمة -وبتصرّف- للمقال ?Shopify vs. WordPress (WooCommerce) for eCommerce لصاحبه Nick Schäferhoff. اقرأ أيضًا أيهما أفضل، شوبيفاي أم ووكومرس؟ شرح تفصيلي لكيفية إنشاء متجر إلكتروني على شوبيفاي Shopify دمج شوبيفاي shopify مع ووردبريس عبر تضمين زر الشراء
-
تُعَد شوبيفاي Shopify منصة خدمات برمجية، فهي تتيح إمكانية إنشاء موقع إلكتروني واستخدام عربات التسوق لبيع المنتجات وشحنها وإدارتها؛ لذا عند الاشتراك في خدمتهم، سيكون بإمكانك الوصول إلى لوحة تحكم سهلة الاستخدام، حيث يمكنك إضافة المنتجات وإدارة طلبات العملاء وإدخال بيانات متجرك الإلكتروني. تبلغ قيمة الاشتراك الشهري في شوبيفاي حوالي 29 دولارًا شهريًا (حتى وقت كتابة المقال)، ويمكنك بالمقابل إنشاء متجر إلكتروني كامل الوظائف واستخدامه لبيع المنتجات الرقمية أو المادية؛ مع ذلك تتيح منصة شوبيفاي Shopify أيضًا نسخةً تجريبيةً مجانيةً محدودة. سنوضح في مقالنا هذا كيفية استخدام شوبيفاي Shopify لإنشاء متجرك الإلكتروني وإطلاقه في أسرع وقت ممكن، وكل ما تحتاجه من وقتك هو ساعة إلى ساعتين، دون الحاجة إلى امتلاك مهارات برمجية عالية. ما هي منصة شوبيفاي Shopify؟ تُعَد شوبيفاي Shopify حلًا برمجيًا يتيح القدرة على بناء متجر إلكتروني بسرعة وسهولة، فهو يحتوي على جميع الوظائف التي قد تحتاجها لتصميم متجرك الإلكتروني وعرض المنتجات عبر الإنترنت ومتابعة المخزون وتلقي المدفوعات وحساب معدلات الشحن والضرائب وغير ذلك، وهي الخدمات التي يدفع المستخدمون مقابل الحصول عليها. مع ذلك، لا بُدّ من الإشارة إلى أن خدمات شوبيفاي تقتصر على الجوانب التقنية، أي أنها لا تُقدَّم على أرض الواقع فهي لا تزودك بالمنتجات أو تخزن البضائع أو توصل الطلبات (لكنهم قد يساعدونك على طباعة ملصقات الشحن)، لذا يجب على أصحاب المتاجر تحمّل أعباء الخدمات الفيزيائية. قد تختار تحمل أعباء الخدمات الفيزيائية بنفسك، كما قد تفكر في الاستعانة بمصادر خارجية، مثل شركات توصيل الطلبات، وهو أمر يعود إليك؛ لكن ما يجب أن تتأكد منه أن شوبيفاي لا تقدم هذا النوع من المهام كجزء من خدماتهم. من السهل جدًا أن تسجل في شوبيفاي وتبدأ رحلتك في عالم التجارة الإلكترونية، فهم يقدمون نسخةً تجريبيةً مجانيةً مدتها 14 يومًا، لتتمكن من تجربة الأمر والمضي قدمًا. يمكنك أيضًا اختبار شوبيفاي مع المحتوى الذي تريد دون الحاجة إلى إدخال معلومات بطاقتك الائتمانية، وكل ما تحتاجه هو إضافة بريد إلكتروني. وبعد أن تنهي اختباراتك وتقرر إطلاق متجرك الإلكتروني لعامة الناس، سيُفرض عليك اختيار خطة اشتراك في شوبيفاي. والآن، دعنا نتعرف على خطوات إنشاء متجر إلكتروني عبر شوبيفاي Shopify. 1. التسجيل في شوبيفاي لتسجيل الدخول، زر موقع Shopify.com، واستخدم نموذج الاشتراك لإنشاء حساب، ثم أدخل البيانات المطلوبة وانقر على زر "بدء النسخة التجريبية المجانية Start free trial". يجب أن يكون اسم متجرك فريدًا، وإلا ستطلب منك المنصة اختيار اسم آخر، وبعد هذه الشاشة الأولية، ستُطلب منك بعض التفاصيل الإضافية، بما في ذلك اسمك وعنوانك وبلدك ورقمك. ستُسأل أيضًا عما إذا كانت لديك أي منتجات، وما الذي تهدف إلى بيعه تحديدًا. إذا كنت تحاول استخدام شوبيفاي لتجربته فقط ومعرفة إذا كان مناسبًا لك، فيمكنك اختيار "I’m just playing around" في القائمة المنسدلة التي تسألك عما إذا كان لديك منتجات "?Do you have products" واختيار "I’m not sure" في القائمة المنسدلة التي تسألك عن المنتجات التي ستبيعها "?What will you sell"، وبعد الانتهاء، انقر فوق "I’m done" والذي تعني أنك انتهيت. 2. إعداد متجرك الإلكتروني بعد انتهاء التسجيل، سيوجهك الموقع مباشرةً إلى لوحة التحكم بمتجرك الإلكتروني، وسيكون بإمكانك تخصيص متجرك كما تريد، وإدخال بيانات المنتجات، وإعداد عمليات الدفع والشحن. ستخبرك لوحة التحكم الرئيسية بكل ما تحتاج إلى معرفته لبدء العمل. 3. اختيار القالب أو التصميم يحتوي شوبيفاي على قوالب متاجر إلكترونية خاصة به، وهي كلها قوالب مضمونة للحصول على الدعم الكامل من مصمميها، لذا ستضمن أن متجرك بين أيادٍ أمينة. هناك قوالب شوبيفاي مجانية وأخرى مدفوعة، تأتي جميعها مع قائمة شاملة من التغييرات التي يمكنك إجراؤها لتخصيص متجرك الإلكتروني، دون الحاجة إلى امتلاك أي خبرة برمجية، مع الأخذ في الحسبان أن القوالب المتقدمة أو المدفوعة Premium themes عادةً ما تقدم خيارات تعديل إضافية وتصميمات أكثر أناقةً. إذا قررت اختيار قالب مدفوع، فسيكلفك ما بين 80-100 دولار، لكنها تعَد استثمارًا جيدًا بما أن هناك العديد من القوالب التي تتخصص في صناعات أو منتجات معينة، مما يتيح لك القدرة على الحصول على تصميم متجر مناسب وبسعر معقول. يمكنك أيضًا الحصول على متجر ذي تصميم رائع عبر قالب مجاني، وسنوضح الخطوات التفصيلية لذلك في الفقرات التالية. إذا كنت تريد إجراء تغييرات شاملة على قالب ما، فيمكنك الوصول إلى الشيفرات البرمجية للقالب، والتعامل مع لغات برمجة مثل HTML وCSS. وحتى وإن لم تكن لديك أي خبرة في البرمجة، فلدى شوبيفاي فريق دولي من وكالات التصميم يسمونه "Shopify Experts"، والذي يمكنك توظيفه لتخصيص موقعك الإلكتروني بالكامل. للعثور على قالب يناسب احتياجاتك، يمكنك اتباع الخطوات التالية: تصفح متجر القوالب سجِّل دخولك في منصة شوبيفاي وانتقل إلى متجر قوالب شوبيفاي Shopify Theme Store، ستجد هناك أكثر من 70 نوعًا مختلفًا من القوالب التي يمكنك الاختيار من بينها، بما في ذلك مجموعةً جيدةً من القوالب المجانية. يمكنك أيضًا العثور على قوالب شوبيفاي في المتاجر الأخرى، مثل TemplateMonster، وكل ما عليك فعله هو اختيار الفئة والمزايا التي تريدها، ومن ثم اختيار القالب الذي يناسبك. يمكنك أيضًا تصفية القوالب حسب الصناعة والمزايا وكذلك تحديد ما إذا كنت تريد قالب مجانيًا أو مدفوعًا. يمكنك أيضًا تصفية القوالب حسب آخر تحديث أو السعر أو عدد المستخدمين. التأكد من الوظائف ومراجعات المستخدمين الآخرين بعد اختيار القالب الذي يناسبك، انقر على صورة نموذج القالب لتحصل على المزيد من المعلومات حول القالب الذي اخترته، مثل سرعة استجابته وملاءمته للهواتف المحمولة وغير ذلك. يمكنك التمرير للأسفل لقراءة مراجعات مالكي المتاجر الإلكترونية الآخرين الذين يستخدمون هذا القالب. معاينة القالب لرؤية القالب عمليًا، انقر فوق عرض تجريبي View Demo، وإذا كانت للقالب مجموعة من الأنماط المختلفة، فيمكنك أيضًا رؤية العروض التوضيحية لجميع الأنماط من خلال النقر عليها. احصل على القالب بعد اختيار القالب الذي يناسبك، انقر فوق الزر الأخضر "إضافة قالب Add theme"، وسيبدأ شوبيفاي حينها في تثبيت القالب؛ وعند الانتهاء، سيُعاد توجيهك إلى مدير قوالبك على شوبيفاي. ضمن مكتبة القوالب Theme Library، سيكون بإمكانك تخصيص قالب متجرك الإلكتروني، أو اختيار "نشر Publish" ضمن القائمة المنسدلة "الإجراءات Actions" ولا تقلق إذا لم تكن متأكدًا من كونه القالب المناسب لك أم لا، إذ يمكنك تغييره في أي وقت. سيعرض لك مدير القوالب theme manager القوالب المنشورة (التي ثبّتها أو فعّلتها مؤخرًا) وتحتها القوالب غير المنشورة (القوالب المثبّتة مسبقًا). 4. تغيير إعدادات شوبيفاي تتيح لك معظم قوالب شوبيفاي إمكانية إجراء تغييرات بسيطة لتخصيص مظهر متجرك الإلكتروني، لذا يمكنك أن تتأكد من أنك لن تحصل على متجر إلكتروني يبدو وكأنه نسخة من آلاف المتاجر الأخرى. لإجراء تعديلات على قالب متجرك، انتقل إلى لوحة التحكم الخاصة بك، ثم اختر "القوالب themes" من قائمة التنقل اليمنى. وبعد ذلك، سيظهر لك في مربع بالأعلى مظهر قالبك، وفي الزاوية اليمنى العليا من هذا المربع سيكون هناك زرين؛ الأول هو "الإجراءات Actions" والذي يتيح لك إجراء بعض التغييرات الأساسية في الإعدادات. على سبيل المثال ، يمكنك إنشاء نسخة احتياطية من قالبك، وهو خيار يُنصح بتفعيله دائمًا قبل إجراء التعديلات، ليكون بإمكانك العودة إلى النسخة السابقة متى ما أردت. أما الزر الثاني "Customize" فهو لتخصيص مظهر متجرك، وعند النقر إليه، ستُنقل إلى صفحة تتحكم في جميع الوظائف الأساسية لمتجرك، إذ يمكنك إجراء تجربة شاملة واختبار جميع المزايا حتى تتمكن من اكتشاف ما يمكن لموقعك فعله. تشمل المزايا الشائعة ما يلي: تحميل الشعارات. تحميل الشرائح أو السلايدات slides إلى أشرطة التمرير في الصفحة الرئيسية. إضافة العناصر إلى صفحات المنتجات. اختيار عدد العناصر التي تظهر في كل سطر من صفحات المجموعة. اختيار الألوان. اختيار الخطوط. تتيح لك بعض القوالب أيضًا إمكانية إعادة تحديد أماكن العناصر على الصفحات، مثل تغيير مكان صور المنتجات إلى يسار الصفحة أو يمينها أو وسطها. يمكنك أيضًا تحديد إذا كنت تريد إضافة أزرار الإعجاب أو التغريد على منصات التواصل الاجتماعي. 5. أضف منتجاتك إلى المتجر تنقّل عبر الشريط الموجود على اليسار واختر "المنتجات products"، وسترى بعد ذلك زر "إضافة منتج Add a product" باللون الأخضر في منتصف الصفحة، انقر عليه لتظهر لك صفحة جديدة. استخدم هذه الصفحة لإضافة أكبر قدر ممكن من التفاصيل حول منتجاتك، ولا سيّما المعلومات التي تساعد على تحسين محركات البحث، مثل الاسم والوصف وعنوان موقع الويب URL. أضف أكبر قدر ممكن من التفاصيل التي يمكن أن تساعد العملاء على إدراك منتجاتك. ستنتقل بعد ذلك إلى تحميل صور منتجاتك، حيث يمكنك تحميل الصور دون الاهتمام بترتيبها، لأنه يمكنك إعادة ترتيب الصور بعد الانتهاء من ترتيبها. صور المنتجات مهمة جدًا لحث العملاء المحتملين على إتمام عمليات البيع، لذلك احرص على عرض منتجاتك بأفضل حالاتها وإبراز أي ميزات فريدة من خلال عرض صور قريبة. وللحفاظ على مظهر متجرك مرتبًا، حاول أن تضيف جميع الصور بنفس الأبعاد، إلا إذا كنت تخطط لجعل صفحاتك على شكل لوحات Pinterest. بعد ملء كل المعلومات التي تتعلق بالمنتج الجديد، اضغط فوق زر "حفظ المنتج Save product" في الزاوية العلوية اليمنى. إعداد مجموعات المنتجات مجموعة المنتجات هي أي مجموعة من المنتجات تحتوي على بعض المزايا المشتركة التي قد يبحث عنها العملاء عند زيارة متجرك. على سبيل المثال، قد يتسوق عملاؤك لشراء ما يلي: ملابس مخصصة لفئة محددة، مثل ملابس للرجال أو النساء أو الأطفال. منتجات من نوع معين، مثل المصابيح أو الوسائد أو السجاد. منتجات بأحجام أو ألوان معينة. منتجات موسمية، مثل الزينات وبطاقات الأعياد. يمكنك أن تضع المنتجات في أكثر من مجموعة واحدة، كما يمكنك عرض مجموعاتك على الصفحة الرئيسية لمتجرك وفي شريط التنقل، مما يساعد العملاء في العثور على ما يبحثون عنه دون الحاجة إلى تصفح كامل قائمة المنتجات. المجموعات اليدوية والتلقائية عند إضافة مجموعة جديدة، يمكنك تحديد كيفية إضافة المنتجات إليها، وستكون أمام خيارين: يدويًا: سيكون بإمكانك إضافة المنتجات إلى المجموعة أو إزالتها يدويًا. تلقائيًا: يكفي وضع الشروط أو المعايير التي يجب على المنتجات تحقيقها حتى تُضاف إلى المجموعة تلقائيًا. 6. اختر بوابات الدفع تتيح لك بوابات الدفع تلقي المدفوعات من عملائك عبر متجرك الإلكتروني، لذا من المهم معرفة سعر الاشتراك ونسبة العمولة، ولكن من المهم أيضًا معرفة الميزات التي يقدمونها، إذ لا تتساوى كل بوابات الدفع في ميزاتها. إليك فيما يلي بعض الأمور التي يجب النظر إليها لاختيار بوابة الدفع المناسبة: رسوم التحويل: عندما تتلقى المدفوعات من عملائك، ستحتفظ بعض البوابات بنسبة مئوية صغيرة من المبلغ أو رسوم ثابتة لكل عملية دفع، أو ربما كليهما في بعض الأحيان، وذلك مقابل السماح لك باستخدام خدمتهم؛ لذا يجب أن توازن ذلك مع مبيعاتك المتوقعة. أنواع البطاقات: من الضروري أن تتحقق من أنواع البطاقات التي تقبلها بوابة الدفع التي اخترتها. عادةً ما تقبل جميع بوابات الدفع بطاقات فيزا VISA وماستر كارد Mastercard، بينما يقبل معظمها بطاقات American Express، لكن يجب أن تأخذ في الحسبان أن بايبال Paypal أصبح أكثر شيوعًا للدفع عبر الإنترنت. الخروج من الموقع: تتلقى بعض البوابات المدفوعات على خوادمها الخاصة عبر نماذج محددة، مما يعني أن العميل سيُنقل من صفحة الدفع في متجرك الإلكتروني، ليدفع على النموذج المقدم من بوابة الدفع، ومن ثم يُعاد توجيهه إلى صفحة التأكيد الخاصة بمتجرك بعد نجاح عملية الدفع، وهو ما قد يتيح لك التحكم أكثر في عملية الدفع. 7. تهيئة موقعك الإلكتروني للإطلاق قبل إطلاق متجرك الإلكتروني، ستحتاج إلى إضافة بعض التفاصيل حول نشاطك التجاري وكيفية إجراء عمليات التسليم ودفع الضرائب، وأهم هذه الإضافات: إضافات عامة تأكد من ملء جميع المعلومات التي تتعلق بعملك في منطقة الإعدادات السفلية اليسرى، واحرص أيضًا على استخدام ميزة تحليلات جوجل Google Analytics، فهي طريقة رائعة لتتبع زوار متجرك الإلكتروني. الضرائب إليك الخطوات التالية: من لوحة التحكم، انتقل إلى صفحة المنتجات. انقر على اسم منتج معين. مرِّر للأسفل إلى قسم "المتغيرات Variants". تأكد من وضع إشارة عند مربع "فرض الضرائب Charge taxes" ومربع "متطلبات الشحن Requires shipping" إذا كنت تريد تضمينهما مع منتجاتك. قد لا تحتاج بعض المتاجر الإلكترونية إلى فرض ضرائب أو مبالغ شحن على منتجاتها، مثل متاجر المنتجات الرقمية، بينما قد يحتاج متجر قمصان إلى ذلك. إذا كنت تخطط لشحن منتجاتك إلى العملاء، فتأكد من إدخال وزن المنتج في الحقل المناسب. الشحن إذا لم تكن لديك خيارات كافية لتكاليف الشحن، فقد تخسر بعض المبيعات، وهنا يجب أن تعلم أن شوبيفاي تحسب تكاليف الشحن بناءً على القواعد التي تحددها في صفحة الشحن، ولكي تضمن عدم خسارة أي مبيعات بسبب أخطاء في حساب تكاليف الشحن: من لوحة التحكم، انتقل إلى الإعدادات Settings > صفحة الشحن shipping page. في قسم "أسعار الشحن Shipping rates"، تأكد مما إذا كنت قد حددت أسعار الشحن على أساس الوزن، واضبطه وفقًا لمواصفات المنتج. اختبار نظام طلب المنتجات لاختبار نظام طلب المنتجات في متجرك، يمكنك تجربة عملية شراء باستخدام البوابة الوهمية Bogus الخاصة بشوبيفاي، ولاستخدام البوابة الوهمية: من لوحة التحكم الخاصة بمتجرك، انقر فوق "الإعدادات Settings"، ثم "المدفوعات Payments" للانتقال إلى إعدادات الدفع في متجرك الإلكتروني. إذا كان لديك بوابة دفع مفعلة، فأوقف تنشيطها قبل المتابعة، من خلال النقر فوق "تعديل Edit" ومن ثم "إلغاء التنشيط Deactivate"، ثم أكِّد عملية إلغاء التنشيط. في قسم قبول بطاقات الائتمان Accept credit cards، انقر فوق "اختيار بوابة دفع Select a Credit Card Gateway" لفتح القائمة المنسدلة. مرِّر لأسفل القائمة المنسدلة لتصل إلى "خيارات أخرى Other". انقر فوقها، ثم انقر فوق "بوابة وهمية Bogus Gateway". انقر فوق تنشيط Activate، أو إعادة تنشيط Reactivate إذا كنت قد استخدمت البوابة الوهمية من قبل. انتقل الآن إلى واجهة متجرك واطلب إحدى المنتجات كما يفعل العملاء. وفي مرحلة الدفع، أدخل تفاصيل بطاقة الائتمان الوهمية عوضًا عن الأرقام الحقيقية. أما إذا كنت تريد اختبار بوابة دفع حقيقية بمعاملة حقيقية، فيمكنك اتباع الخطوات التالية: تأكد من إعداد بوابة الدفع التي تريد اختبارها. اطلب إحدى المنتجات من متجرك كما يفعل العملاء، وأكمل عملية الدفع باستخدام تفاصيل بطاقة الائتمان الحقيقية. ألغِ الطلب فورًا لاستعادة رسوم المعاملة. وأخيرًا، سجِّل دخولك إلى بوابة الدفع الخاصة بمتجرك، لتتأكد من مرور الأموال عبرها. وهنا قد تتساءل: هل هذه العملية مجانية؟ الإجابة نعم، لكن احرص على إلغاء الطلب فورًا بعد تقديمه. إذا جاءتك دورة دفع الفواتير بعد تقديم الطلب التجريبي لكن قبل إلغائه، فستظهر رسوم المعاملة التجريبية إلى فاتورتك. وفي هذا الحالة، ما يزال بإمكانك إلغاء الطلب بعد دفع فاتورتك إلى شوبيفاي، لكنك ستسترد أموالك على شكل رصيد معاملة في حسابك، إذ يمكنك استخدام أرصدة المعاملات لكي تدفع رسوم المعاملات المستقبلية. 8. أضف اسم نطاق Domain لمتجرك الإلكتروني لكي تتمكن نشر متجرك الإلكتروني على شبكة الإنترنت، ستحتاج إلى اسم نطاق Domain، وهنا ستكون أمام خيارين، الأول هو شراء نطاق من شوبيفاي ليُضاف تلقائيًا إلى متجرك، وهو ما يوفر عليك الوقت؛ خاصةً إذا لم تكن لديك معرفة باستضافات المواقع، وعادةً ما تكلف هذه النطاقات بين 9 إلى 14 دولارًا سنويًا. خيارك الثاني هو حجز نطاق من مزوّد خارجي مثل GoDaddy، وعادةً ما تبدأ هذه النطاقات من 10 دولارات سنويًا. الجانب السلبي هو أنه سيتعيّن عليك إعادة توجيه سجلات DNS بنفسك، الأمر الذي قد يبدو شاقًا. وإليك فيما يلي الخطوات اللازمة لوضع متجرك الجديد على اسم نطاق تابع لمزوّد خارجي: أضف المجال الجديد على شوبيفاي: من على شريط التنقل الأيسر في لوحة التحكم الخاصة بك، انتقل إلى Online Store ثم Domains وأضف اسم نطاقك باستخدام زر "الاتصال بالنطاق الموجود Connect existing domain". تحديث سجلات DNS: الآن، سجِّل دخولك إلى هذا الحساب باستخدام مزوّد نطاقك، ابحث عن إعدادات DNS الخاصة بك، واتبع الخطوات التالية: استبدل @ أو السجل الرئيسي A بعنوان IP التالي: 23.227.38.65 (هذا هو عنوان IP الخاص بشوبيفاي). أضف أو استبدل البادئة www برابط متجرك على شوبيفاي بدون HTTP، أي هكذا storename.myshopify.com، ويمكنك رؤيته في صفحة إعدادات النطاقات. إزالة أي كلمات مرور لواجهة متجرك: هذه الخطوة مهمة لكي يتمكن الزوار من الوصول إلى موقعك. تعيين النطاق كأساسي: من على شريط التنقل الأيسر في لوحة التحكم الخاصة بك، انتقل إلى Online Store ثم Domains، ومن النقر فوق "تغيير النطاق الأساسي Change primary domain" وتحديد نطاقك كأساسي. احرص أيضًا على إعادة توجيه كل الزوار إلى هذا النطاق عبر اختيار "Redirect all traffic to this domain"، وهذا يعني أنه سيُعاد توجيه كل الزوار من النطاقات الأخرى إلى نطاقك الأساسي، وهو أمر مهم جدًا لتحسين محركات البحث. إضافة مجالات أخرى: يمكنك تكرار الخطوتين الأولى والثانية مع أسماء النطاقات الأخرى التي تمتلكها، لكن سيُعاد توجيه جميع النطاقات إلى النطاق الأساسي، والذي يمكنك تغييره في أي وقت باستخدام خيار "تغيير النطاق الأساسي Change Primary Domain" مع العلم أن عدد أسماء النطاقات التي تمتلكها ليس له أي تأثير على تحسين محركات البحث. في الختام إذا كنت قد اتبعت كامل الخطوات في هذا الدليل، فتهانينا! يجب أن يكون لديك الآن متجر إلكتروني جاهز على شوبيفاي. وإذا كنت ترغب في استكشاف خيارات بديلة عن شوبيفاي، فيمكنك قراءة إنشاء المواقع والمتاجر الإلكترونية عبر ووردبريس مع ووكومرس، إذ يُعَد ووكومرس خيارًا أقل تكلفةً، لكنه بحاجة إلى خبرة أكبر من شوبيفاي. ترجمة -وبتصرّف- للمقال Shopify Tutorial for Creating an Online Store لصاحبه Nick Schäferhoff. اقرأ أيضًا أيهما أفضل، شوبيفاي أم ووكومرس؟ كيف تنشئ رسوميات ترويجية لمنتجاتك الجديدة على شوبيفاي تلقائيا كيف تزيد حركة المرور لمتجرك على شوبيفاي Shopify إستراتيجية النسخ الاحتياطي لمتجر شوبيفاي: 3 طرائق لحماية مشروعك
-
Mohamed Ahmed173 بدأ بمتابعة محمد ناولو2
-
لا يقتصر استخدام الصور الفعال على اختيار الصور الصحيحة فحسب، بل تحتاج أيضًا إلى معرفة أفضل طريقة يمكنك من خلالها تحسين صورك لتتلاءم مع تهيئة محركات البحث SEO، وذلك بغية تعزيز ترتيب منشوراتك في صفحات نتائج محركات البحث، وإليك فيما يلي 4 قواعد أساسية لتحسين صور مدونتك: 4 قواعد أساسية لتحسين صور مدونتك الآن، وبعد أن اخترت صورةً رائعةً لمنشورك وحملتها إلى حاسوبك، ستحتاج إلى معرفة أفضل طريقة لاستخدامها. إليك فيما يلي بعض القواعد الأساسية التي يجب اتباعها لتحسين الصور في مدونتك: 1. تغيير حجم الصورة عندما تلتقط صورةً ما، من المحتمل أن تكون أكبر بكثير مما تحتاجه لمدونتك. قد تكون الصورة بحجم 4032 × 1960 بكسل على سبيل المثال، في حين يبلغ عرض معظم صور المدونة حوالي 500 إلى 800 بكسل، اعتمادًا على حجم منطقة المحتوى في قالب المدونة. إذا حملت صورةً كبيرة الحجم، فسيغير ووردبريس WordPress تلقائيًا من حجمها، لتلائم منطقة المشاركة على مدونتك، وهنا لن تتداخل مع الشريط الجانبي أو مناطق أخرى من مدونتك، لذا قد تعتقد أنه لا توجد أي مشكلة. تكمن المشكلة في أن الصورة أكبر مما يجب، لذا سيستغرق تحميلها وقتًا إضافيًا، ولهذا يجب تغيير حجم الصورة قبل تحميلها على مدونتك. من الجيد أيضًا تغيير حجم الصور بحيث تكون متسقة، سواءً مع منشورك أو عبر كامل مدونتك. فعلى سبيل المثال، يستخدم العديد من المدونين صورةً بحجم 500 × 300 أو 550 × 330 في بداية كل منشور. يمكنك تغيير حجم صورتك باستخدام برامج مجانية، مثل برنامج Paint.NET، كما يمكنك تغيير حجم مجموعات كبيرة من الصور عبر الإنترنت باستخدام أداة Bulk Resize Photos. 2. ضغط الصورة سيؤدي تغيير أبعاد صورتك ببساطة إلى تقليل مساحة تخزينها، ولكن يمكنك الحصول على مساحة تخزين أصغر عن طريق ضغط الصورة، والذي سينعكس بالتبعية على سرعة تحميل الصفحة. الشيء المهم الذي يجب فهمه حول ضغط الصور هنا هو أنك كلما ضغطت الصورة أكثر، انخفضت جودتها؛ لذا يجب تحقيق التوازن بين الجودة وحجم الملف. يمكنك استخدام بعض الأدوات الجيدة لضغط الصور عبر الإنترنت، مثل أداة Compress jpeg وأداة TinyPNG، والتي تحتوي على مكون إضافي رائع لووردبريس WordPress. نصيحة: استخدم تنسيق JPG للصور ذات الألوان المتعددة، مثل الصور الفوتوغرافية، واستخدم تنسيق PNG للصور ذات الألوان القليلة، مثل لقطات الشاشة أو الرسوم المتحركة البسيطة، وكذلك الصور التي تحتوي على نصوص، مما يمنحك جودةً أفضل نسبةً إلى حجم الملف. 3. وضع صورتك الآن، وبعد أن غيّرت أبعاد الصورة وضغطتها، يمكنك إضافتها إلى منشور مدونتك، لكن هنا يأتي السؤال: أين يجب وضع الصورة؟ يُفضِّل العديد من المدونين وضع صورة في بداية منشوراتهم التي قد تحتوي على علامتهم تجارية، مع إضافة اسم المدونة وعنوان المنشور إلى الصورة، ولكن يمكنك أيضًا استخدام الصور في المكان الذي تريده عبر منشورك. يوصي الكثير من الخبراء بإضافة أكبر عدد ممكن من الصور إلى منشورات المدونة، وذلك حسب الضرورة، مما يساعد على تقسيم المحتوى بصريًا، إذ توجد الكثير من النصوص التي قد تشتت انتباه القارئ. وتُعَد أبسط طريقة لإضافة صورة هي توسيطها ضمن الخط المخصص لها، أي دون وضعها على يسار النص أو على يمينه، مما يضمن عرضها جيدًا على جميع الأجهزة. إذا كان لديك منشور طويل، فيمكنك التفكير في كيفية استخدام الصور على طوله، فعلى سبيل المثال، يمكنك استخدام صورة في بداية كل عنوان فرعي. نصيحة: هل تتساءل عن كيفية إضافة صورة إلى منشور مدونتك على ووردبريس WordPress؟ كل ما عليك فعله هو إضافة الصورة، ومن ثم تحميلها أو سحبها إلى المكان الذي تريد وضعها فيه، ويمكنك أيضًا إنشاء صورة، ومن ثم تحميلها من الصور الموجودة في مكتبة الوسائط. 4. إضافة نص إلى صورتك يمكنك إضافة نص إلى الصورة قبل تغيير حجمها وضغطها باستخدام برنامج لتحرير الرسومات أو أداة لمعالجة لقطات الشاشة. وعوضًا عن ذلك، يمكنك في ووردبريس WordPress إضافة تسمية توضيحية على الصورة، من خلال النقر على الصورة لتحديدها، ومن ثم سيظهر خيار "إضافة تسمية توضيحية" في المساحة الموجودة أسفل الصورة مباشرةً. انقر هناك واكتب التسمية التوضيحية التي تريدها. استخدام الصور لتحسين الظهور في نتائج محركات البحث يُعَد استخدام الصور بطريقة صحيحة أمرًا مهمًا لتحسين ترتيب منشورات مدونتك في نتائج محركات البحث. وعلى الرغم من أن أهمية الصور في تحسين محركات البحث أقل من بعض العناصر الأخرى (مثل العنوان)، إلا أنها ما تزال عنصرًا مهمًا لترتيب منشورك ضمن نتائج محركات البحث. وعلاوةً على ذلك، تحتاج محركات البحث إلى نص يعبر عن موضوع صورتك، مما يعني أن كل صورة من صورك يجب أن تحتوي على شيئين؛ عنوان الصورة والنص البديل عنها. عناوين الصور عنوان الصورة ليس تسمية توضيحية عنها، وهو في العموم غير مرئي، لكنه يظهر في معظم المتصفحات عندما يحرك القارئ مؤشره فوق الصورة. يجب أن تتضمن عناوين الصور الكلمات المفتاحية. فعلى سبيل المثال، إذا كنت تكتب مقالًا حول تكلفة إنشاء مدونة، فقد تكون لديك صورة لامرأة تكتب على الحاسوب مع عنوان وصفي مثل "إنشاء مدونة" أو "امرأة تستخدم حاسوب". ولإضافة عنوان صورة في ووردبريس WordPress: اضغط على صورتك. حدد "Advanced" أو "خيارات متقدمة" من القائمة المنسدلة على الجانب الأيمن من الشاشة. أدخل العنوان في مربع "Title attribute" أو "وصف العنوان". نظرًا لأن العنوان يظهر عند تحريك المؤشر فوق الصورة، فستسمع بعض الناس أحيانًا يصفونه بـ "شرح توضيحي". سيبدو عنوان الصورة في تعليمات HTML البرمجية على النحو التالي، مع الانتباه إلى أن العنوان موضوع بخط غامق: <img src=”امرأة-تستخدم-حاسوب.jpg” alt=”امرأة تستخدم حاسوب, إنشاء مدونة.” title=”إنشاء مدونة”> نص بديل تُستخدم النصوص البديلة للصور ليتمكن الأشخاص ضعاف البصر من قراءته عبر برامج قراءة الشاشة وفهم محتوى الصورة، لذا يجب أن يصف بوضوح ما هو موجود في الصورة. إذا كانت صورتك تتضمن نصًا، مثل لقطة شاشة لمنشور آخر، فيجب عليك كتابة ذلك في النص البديل لتسهيل الوصول إلى كامل محتوى المنشور. من الجيد أن يحتوي النص البديل على كلمات مفتاحية مثل نص العنوان، ولكن من المهم أيضًا أن تصف الصورة، لأنه الغرض من النص البديل. امنح كل الصور الموجودة على مدونتك عنوانًا ونصًا بديلًا، لتتلاءم مع تحسين محركات البحث. سيبدو النص البديل في تعليمات HTML البرمجية على النحو التالي، مع الانتباه إلى أن النص البديل موضوع بخط غامق: <img src=”امرأة-تستخدم-حاسوب.jpg” alt=”امرأة تستخدم حاسوب, إنشاء مدونة.” title=”إنشاء مدونة”> في الختام لا تنظر إلى استخدام الصور على مدونتك على أنه أمر مخيف أو صعب، كل ما تحتاج إلى فعله هو مراعاة هذه الأساسيات: تأكد من احتواء كل منشور في مدونتك على صورة واحدة على الأقل لزيادة الاهتمام البصري. اختر صورًا خاليةً من حقوق الملكية، إذ يمكنك إنشاء صور بنفسك أو استخدام الصور الموجودة على المواقع الإلكترونية. تغيير حجم الصور وضغطها قبل تحميلها، لزيادة سرعة تحميل صفحات الموقع. إضافة عنوان ونص بديل إلى الصور، لتحسين تجربة المستخدم وتهيئة المقال لمحركات البحث. إذا لم يكن لديك مدونة بعد وتريد التعرف على كيفية إنشاء مدونة، فيمكنك الاطلاع على مقال ما هي تكلفة إنشاء مدونة؟، فهو يحتوي على كافة التفاصيل التي تحتاج إلى معرفتها حول هذا الأمر. ترجمة -وبتصرّف- للمقال 6 Best Practices for Using Images on Your Blog لصاحبه Ryan Robinson. اقرأ أيضًا نصائح تحسين محركات البحث للمواقع الجديدة ممارسات مهمة لاستخدام الصور في مدونتك النسخة الكاملة لكتاب: دليلك إلى تحسين محركات البحث SEO
-
يشرح هذا الدليل التفصيلي كيفية استخدام الصور في منشورات المدونة، ويقدم أفضل الممارسات الممكنة لاستخدام الصور في مدونتك، بما في ذلك اختيار الصور المناسبة، وعرض بعض المواقع التي يمكن من خلالها الحصول على أفضل الصور، وتعديل الصور وتعزيزها لتتلاءم مع سياسات تحسين محركات البحث SEO. علاوةً على ذلك، يمكن أن تساعد صور المدونة على تحويل القراء الجدد الذين يزورون مدونتك للمرة الأولى إلى مشتركين دائمين يعودون باستمرار لزيارة مدونتك، فضلًا عن دور الصور وأهميتها في زيادة الوقت الذي يقضيه القراء في تصفح مدونتك، وغير ذلك الكثير من الفوائد التي ستجلبها الصور لمدونتك. في هذا الدليل، سنقدم لك كل ما تحتاج إلى معرفته حول اختيار الصور الصحيحة لمدونتك، ووضعها بعناية ضمن محتوى مدونتك. لماذا نستخدم صور المدونة؟ ثمة أسباب كثيرة ومهمة تدفعك إلى استخدام الصور في مدونتك، سواءً كانت صور أوجه أو صورًا عاديةً أو لقطات شاشة أو حتى رسومًا توضيحيةً، وإليك فيما يلي بعض من هذه الأسباب المهمة. تعزيز الاهتمام البصري في منشورات المدونة أحد الأسباب البسيطة والمهمة لاستخدام الصور هو أنها تساعد على تشويقًا وجاذبيةً لمنشوراتك، فعندما تكون لديك عدة ثوانٍ فقط لرسم انطباع جيد في أذهان القراء، يمكن للصور حينها أن تحدث فرقًا كبيرًا. علاوةً على الألوان والاهتمام البصري الذي تضيفه الصور، ستساعدك الصور على زيادة المساحة البيضاء في منشوراتك، وهي المساحة الفارغة التي لا تحتوي على أي كلمات أو صور، مما يجعل مشاركاتك أسهل للقراءة. تساعد للصور على نقل المعنى بسرعة هل سمعت بمقولة "تعادل الصورة ألف كلمة"؟ يمكن للصور جيدة التصميم في بعض الأحيان أن تنقل الكثير من المعلومات في وقت وجيز؛ فعلى سبيل المثال، يعرض الرسم البياني كمية ضخمة من المعلومات، والتي كان عليك نقلها من خلال قائمة أو جدول. إذا كنت تكتب برنامجًا تعليميًا، فسيستفيد القراء من الصور أو لقطات الشاشة في اتباع الخطوات. تأكد من أخذ لقطات شاشة للصفحة بأكملها، لكي يتمكن القراء من رؤية جميع المعلومات المهمة بوضوح والحصول على فهم أفضل لما تحاول شرحه. تساعد الصور على فصل المشاركات الطويلة إذا كان لديك مقال طويل وعميق مكوّن من نصوص كتابية فقط، فسيكون من الصعب جدًا على القراء التفاعل معه، وهنا يأتي دور الصور في زيادة التفاعل والمشاركات الاجتماعية. تتيح لك الصور إمكانية تفكيك المنشورات الطويلة، وإضافة الاهتمام البصري على طول المقال، ومنح القراء مساحةً للتنفس الذهني. تساعد الصور على التواصل وإضافة شخصية إلى مدونتك قد يكون من الصعب على القراء التواصل معك من خلال كلماتك فقط، فقد لا تكون لديهم فكرة واضحة عن الأمور التي تحبها، وقد لا يتخيلونك كشخص أبدًا. ولكن من خلال بناء علاقة قوية ونقل إحساس بشخصيتك من خلال الصور المختارة جيدًا، يمكنك تحويل القراء العاديين إلى معجبين وعملاء دائمين على المدى الطويل. فهم حقوق الملكية لصور المدونة من الضروري أن نتحدث في هذا المقال عن خطأ فادح يرتكبه الكثير من المدونين عند استخدامهم الصور في منشوراتهم. أنت مقتنع بأن استخدام الصور على مدونتك أمر جيد، وهو كذلك، لذلك تذهب إلى محرك البحث جوجل وتبحث عن الصور التي تريدها، ولتكن مثلًا أن تبحث عن "امرأة تكتب" لتضيفها إلى مقالة تتعلق بالتدوين. ستحصل على الكثير من النتائج المختلفة، ويمكنك حينها حفظ واحدة منها على حاسوبك وتحميلها في منشورات مدونتك. هل أنجزت المهمة الآن؟ في الواقع لا! لقد ارتكبت خطأ فادحًا، خطأ قد يكلفك في النهاية مبلغًا ضخمًا من المال. غالبًا ما تكون الصور محميةً بحقوق الملكية، وهذا يعني أنه لا يمكنك استخدامها دون الحصول على إذن بذلك، وربما تتعرض للمساءلة القانونية إن استخدمتها. سنقدم بعد قليل بعض المصادر الرائعة للحصول على صور خالية من حقوق الملكية، لكن يجب أن تدرك أولًا خطورة استخدام صور لها حقوق ملكية، فقد يكلفك ذلك دفع غرامة تصل إلى آلاف الدولارات. من الضروري استخدام الصور غير المحمية بحقوق الملكية، ولحسن الحظ، هناك الكثير من المصادر الرائعة التي يمكنك من خلالها الوصول إلى آلاف الصور المجانية والمدفوعة، والتي يمكنك استخدامها بأمان في منشورات مدونتك. 4 طرق للعثور على صور جيدة لمدونتك كيف يمكن العثور على أفضل الصور لمدونتك؟ إليك بعض المصادر الجيدة والآمنة لتجربتها. استخدام صورك أو أعمالك الفنية من الطبيعي أن أي صورة تنشئها بنفسك فإن حقوقها تعود لك تلقائيًا، وعادةً ما تكون أفضل مصدر لصور مدونتك، إذ يمكنك استخدامها كيفما تشاء، على الرغم من أن الآخرين لا يمكنهم فعل ذلك ما لم تمنحهم الإذن. إذا كنت تدون حول السفر أو الطعام، فمن الطبيعي أن يتوقع القراء رؤية بعض الصور الخاصة، مثل الأماكن التي تزورها أو الوجبات التي تُعِدها، إذ تساعد الصور على إضافة الأصالة إلى مدونتك. وهنا لا تقلق إذا لم تكن صورك مثاليةً، فهي تبقى أكثر صلةً وشخصيةً من الصور الموجودة على المواقع. ومع ذلك، لا تفكر كثيرًا في مخاوف الخصوصية عند استخدام صورك الشخصية، إذ يمكنك تجنب نشر الصور الخاصة، مثل صور أطفالك أو الصور التي يمكن من خلالها تحديد المكان الذي تعيش فيه. لا يحب بعض المدونين استخدام صورهم الخاصة في أي شكل من الأشكال، ولا سيّما إذا كانوا يدونون باسم مستعار، لذا إليك بعض المصادر الأخرى للصور. مكتبات الصور تُعَد مواقع الصور أحد أكبر مصادر الصور للمدونات، إذ تميل هذه الصور بطبيعتها إلى أن تكون صورًا عامةً، أي غير متعلقة بالعمل حصريًا، وهي تُستخدم في المواقع الإلكترونية والمجلات وحتى على أغلفة الكتب، فهي تغطي في العادة مجموعةً كبيرةً من الموضوعات المختلفة. هناك الكثير من المصادر المختلفة التي يمكنك الاستفادة منها للحصول على الصور المخزنة عبر الإنترنت، وإليك أفضل 6 مواقع للحصول على صور للمدونة: موقع Unsplash (مجاني): هو موقع صور مجاني، إذ يضم العديد من مكتبات الصور الجميلة والرسومات والصور الأكثر انتشارًا على الإنترنت، وهي جميعها خالية من حقوق الملكية. موقع iStockPhoto (مدفوع): في هذا الموقع، ستحتاج إلى الدفع مقابل الصور باستخدام رصيدك المالي أو من خلال حزمة اشتراك. ستجد مجموعةً من الصور التي يمكنك الاختيار من بينها، بما في ذلك الصور والرسومات الشعاعية والرسومات المتحركة والأيقونات وغيرها، كما يمكنك شراء مقاطع فيديو ومقاطع موسيقية. موقع Shutterstock (مدفوع): هو موقع مشابه لموقع iStockPhoto، مع مجموعة كبيرة جدًا من الصور، إضافةً إلى مقاطع الفيديو والموسيقى التي يمكنك استخدامها. موقع Pixabay (مجاني): كل المحتوى الموجود على Pixabay (الصور والرسومات الشعاعية ومقاطع الفيديو والموسيقى) مجاني للاستخدام، وعلى الرغم من أنك لن تحصل على نفس الجودة التي يمكنك الحصول عليها من خلال المواقع المدفوعة -مثل iStockPhoto أو Shutterstock- إلا أن موقع Pixabay يُعد مناسبًا جدًا للعديد من المدونين الجدد، إذ يوفر لهم جميع الصور التي يحتاجونها. موقع Pexels (مجاني): كما هو الحال مع موقع Pixabay، يوفر موقع Pexels صورًا ومقاطع فيديو خاليةً من حقوق الملكية، والتي يمكنك استخدامها في مدونتك. في حال كنت تبحث عن صورة معينة، فيمكنك البحث في كلا الموقعين للعثور على الصور المثالية لمنشوراتك. فريبيك Freepik (مجاني ومدفوع): يقدم هذا الموقع خيارات مجانية وأخرى مدفوعة لآلاف والصور والرسومات الشعاعية Vector والرسومات النقطية. يجب الإشارة إلى أن الصور المجانية هي دائمًا بدون قيود للاستخدام الشخصي، ولكن قد يحتاج الأمر إلى أخذ إذن في حال أردت استخدامها لأغراض تجارية. دعنا نتحدث الآن حول كيفية إنشاء بعض الصور الخاصة بمدونتك، بما في ذلك بعض الأدوات التي ستساعدك كثيرًا في هذا المجال. أدوبي إليستريتور Adobe Illustrator برنامج أدوبي إليستريتور Adobe Illustrator هو برنامج لإنشاء وتصميم الرسومات الشعاعية Vector، لذا فإن كنت تريد إنشاء رسومات وصور خاصة بك لاستخدامها في مدونتك، فهو خيار رائع. يمكنك استخدام برنامج أدوبي إليستريتور في تصميم الشعارات Logos والإعلانات والتصاميم الترويجية وغير ذلك، كما يمكنك استخدامه لتحرير الصور والتعديل عليها، فقد ترغب على سبيل المثال في اقتصاص صورة ما وتغيير حجمها. ومع ذلك، فإن برنامج أدوبي إليستريتور غير مجاني، إذ يبلغ اشتراكه حوالي 19.99 دولارًا في الشهر إذا كنت تدفع مقدمًا لمدة عام، لذا فإن لم تكن تستخدم أدوبي إليستريتور، فالأفضل لك أن تستخدام بعض الخيارات الأخرى في هذه القائمة. لقطات الشاشة Screenshots إذا كنت تعمل في كتابة الدروس التعليمية أو تقديم شروحات حول كيفية استخدام البرامج والتطبيقات، فستحتاج إلى أخذ لقطات شاشة لتوضيح الخطوات والأفكار. من الجيد عادةً استخدام لقطات الشاشة في شرح الدروس التعليمية والبرامج والتطبيقات، لكن انتبه من أخذ لقطات شاشة لمعلومات لها حقوق ملكية. على سبيل المثال، إذا كنت قد اشتريت دورة تدريبية للأعمال عبر الإنترنت، فينبغي عدم مشاركة لقطات شاشة من مواد الدورة التدريبية، وإذا لم تكن متأكدًا من إمكانية نشر معلومات معينة، فما عليك سوى مراجعة الموقع الإلكتروني أو مالك المنتج. لأخذ لقطة شاشة، اضغط على مفتاح Print Screen في نظام ويندوز Windows، أو اضغط على Shift+Command+3 في نظام Mac، أو اضغط على Ctrl+Show Windows في جهاز Chromebook. سيؤدي ذلك إلى التقاط صورة لشاشتك بالكامل، ويمكنك بعد ذلك تعديل لقطة الشاشة على أي برنامج لتحرير الرسومات، مثل Paint.NET، إذ يمكنك قصها إذا احتجت لذلك. إذا كنت ترغب في إضافة إشارات أو رسومات معينة إلى لقطة الشاشة، مثل الأسهم أو المربعات أو النصوص، فيمكنك استخدام أحد التطبيقات المتخصصة في معالجة لقطات الشاشة، مثل برنامج Snagit. اختيار الصور المناسبة لمنشوراتك أيًا كان مصدر الصور الذي تستخدمه، قد يكون من الصعب معرفة الصور المناسبة للمحتوى الذي تقدمه. من المهم التحلي بالصبر وأخذ بعض الوقت في اختيار الصور، وابتعد عن اختيار الصورة الأولى التي تصادفك، وإليك فيما يلي بعض النصائح المهمة لاختيار أفضل الصور: تجنب استخدام الصور الأولى التي تظهر لكلمة بحثك: السبب في ذلك أن الكثير من المدونين الآخرين سيستخدمونها أيضًا، لذا تعمق قليلًا في البحث واختر صورًا لا تظهر في النتائج الأولى، ومن الناحية المثالية، يمكنك وضع قائمة مختصرة ببعض خيارات الصور المختلفة لكل منشور. فكر في نظام ألوان مدونتك: هل الصور مناسبة لألوان مدونتك أم أنها متباينة إلى حد كبير؟ هل تتعارض مع الألوان الأخرى على الصفحة؟ يمكنك تجربة بعض الخيارات المختلفة في منشور مسودة، لترى كيف تبدو كجزء من المقالة الإجمالية. خذ في الحسبان أنواع الصور التي تريد استخدامها: على سبيل المثال، يستخدم بعض المدونين الرسوم المتحركة، بينما يستخدم آخرون الصور التي تناسب الأطفال. سيساعدك استخدام نمط معين من الصور عبر مدونتك على تحقيق التناسق. تأكد من أن الصور متوافقة مع علامتك التجارية: على سبيل المثال، لن تتناسب الصور الصاخبة مع منشوراتك إذا كنت تستخدم أسلوبًا بسيطًا وهادئًا في كتاباتك. اعمل على تعديل الصور التي تختارها: في كثير من الأحيان، يمكن أن يؤدي اقتصاص صورة للتركيز على عنصر واحد أو لإزالة شيء لا تحبه إلى تحسين الصورة إلى حد كبير. اختر صورًا تناسب جمهورك المستهدف: إذا كنت تكتب للمتقاعدين وكبار السن على سبيل المثال، فابتعد عن اختيار الكثير من الصور التي تظهر المراهقين في سن العشرين، بينما إذا كنت تكتب لآباء الأطفال الرضع والأطفال دون سن المدرسة، فلا تستخدم صور الأطفال في سن المدرسة. تأكد من انتقاء صور عالية الجودة: حاول أن تختار صورًا واضحةً، وابتعد عن الصور الضبابية أو منخفضة الدقة. وإذا لزم الأمر، ابحث في عدة مواقع مختلفة، بحيث تكون لديك الكثير من الصور الرائعة التي يمكن الاختيار من بينها. فكر في كيفية أداء صورك في سياق منشوراتك الأخرى: ليس من الجيد أن تتشابه صورك إلى حد كبير؛ وبالمثل، يجب أن تحرص على أن تمثل صورك أعراقًا وأجناسًا مختلفةً في مختلف المنشورات التي تشاركها. ترجمة -وبتصرّف- للمقال 6 Best Practices for Using Images on Your Blog لصاحبه Ryan Robinson. اقرأ أيضًا 9 طرائق لحماية صور مدونتك على ووردبريس من السرقة كيفية تحسين الصور للحصول على أفضل أداء في ووردبريس المرجع الشامل لاختيار الصور المناسبة لأغراض التسويق تحسين مقالات المدونة وتهيئتها لمحركات البحث
-
تُعَد رسائل البريد الإلكتروني الباردة إحدى وسائل التسويق عبر البريد الإلكتروني، والتي تستهدف العملاء المحتملين الذين لا يعرفون أي شيء عنك أو عن شركتك والمنتجات والخدمات التي تقدمها، ويمكن القول بأن رسائل البريد الإلكتروني الباردة هي بمنزلة رسائل تعريفية؛ لتبدأ من خلالها مع العملاء المحتملين رحلة تحويلهم إلى عملاء حقيقيين. يقول رايان روبنسون Ryan Robinson كاتب هذا المقال: سواءً كنت تعرف ذلك أم لا، ثمة جانبين يجب أخذهما بالحسبان لتعلم كيفية كتابة نموذج بريد إلكتروني بارد يحول العملاء المستقلين؛ وهما الفن والعلم. سنتحدث في مقالنا هذا عن كلا الجانبين، مع تقديم بعض قوالب البريد الإلكتروني الباردة، وأمثلة لدراسات الحالة ولقطات شاشة لرسائل بريد إلكتروني باردة حقيقية، والتي جنى أصحابها من خلالها عشرات الآلاف من الدولارات. في الحقيقة، قد تبدو القوالب الجاهزة أمرًا رائعًا، إذ يمكنك النسخ واللصق لكتابة بريد إلكتروني بارد يمنحك نشاطًا تجاريًا جديدًا، لكن الواقع ليس بتلك البساطة. ومع ذلك، قد يكون من المفيد أن تبدأ بنموذج بريد إلكتروني بارد وأن تستفيد من الخبرات الطويلة لصانعي هذه القوالب، والتي اكتسبوها على مدار سنوات عديدة ومن خلال تقديم المئات من العروض الحقيقية. سنعرض في هذا المقال بعض رسائل البريد الإلكتروني الباردة، التي هي رسائل حقيقية أدت إلى صفقات رابحة. واحدة من الرسائل الباردة التي سندرسها في هذا المقال ساعدت على إتمام صفقة بقيمة 52,500 دولارًا أمريكيًا، مقابل نشر منشورين شهريًا لمدة عشرة أشهر، كما أدت رسالة أخرى إلى عقد بقيمة 17500 دولارًا لسبع منشورات على مدونة، وغيرها من الأرباح الكبيرة التي تمكن من خلالها رايان روبنسون كاتب هذا المقال من جني 110،500 دولارًا أمريكيًا في عام 2018 وحده. واحدة من أهم الحقائق حول العمل الحر أن النجاح فيه غير مضمون أبدًا، ولا يمكنك مقارنة وضعك الحالي كمبتدأ في مجال العمل الحر مع المستقلين الآخرين الذين أمضوا سنوات طويلة في هذا المجال، إذ يحتاج الأمر إلى جهود كبيرة ومتواصلة لتتمكن من الوصول إلى المستوى الذي يلبي طموحاتك، حتى تصل إلى مرحلة ترفض بها العديد من الأعمال والعروض. ستمر خلال رحلتك بأوقات رائعة عندما يمتلئ يومك بالعمل، وستبتعد عن العملاء الجدد والمشاريع التي لا تعجبك؛ ومع ذلك، ستمر ببعض الأوقات الصعبة التي تميل فيها إلى العمل على أي شيء تصادفه في طريقك، أو تقضي معظم أيامك في البحث عن مشاريع جديدة. يتطلب الأمر الكثير من العمل الجاد لتتمكن من تحقيق دخل جيد كمستقل، ولا سيّما إذا كنت تفضل تجنب المخاطرة وعدم ترك وظيفتك اليومية قبل الوصول إلى مرحلة تحقق بها دخلًا جيدًا يغنيك عن الوظيفة التقليدية. وهنا إذا لم تكن حريصًا، فربما تقع في الكثير من المشكلات. يمكن أن يساعدك الحصول على نموذج بريد إلكتروني بارد على جذب عملاء جدد والبقاء مشغولًا طوال العام مع النوع المناسب من العملاء. فبعد قيامك بعمل رائع لعملائك، ابدأ في الحصول على التقييمات والإحالات، واعمل على بناء علامتك تجارية في مجال تخصصك؛ وفي مرحلة ما، ستكون قادرًا على الوصول إلى عملائك دون الحاجة إلى بذل الكثير من الوقت والجهد في إرسال رسائل بريد إلكتروني واستقطاب عملاء جدد. فيما بعد، سيبدأ العملاء الجيدون بالقدوم إليك، وستحصل على العديد من المشاريع القوية، لكن دعنا نتحدث في هذا الوقت عن رسائل البريد الإلكتروني الباردة ونتعمق في النماذج التي هي محصلة جهود وخبرات سنوات طويلة. سنقدم في هذا المقال 5 خطوات تساعدك على كتابة بريد إلكتروني بارد يجذب العملاء المحتملين ويحولهم إلى عملاء دائمين، وسنغطي فيها كلا المكونين لتعلم كيفية كتابة بريد إلكتروني بارد؛ وهما الفن والعلم. 1. تحديد العملاء المناسبين حتى وإن استخدمت أفضل قالب لرسائل البريد الإلكتروني، كن على يقين بأنك لن تتلقى أي رد إذا أرسلت رسالتك إلى النوع الخاطئ من العملاء، أو إذا أجريت اتصالاتك مع أشخاص ليس لديهم الصلاحيات لاتخاذ إجراءات بشأن التعامل معك، لذا فإن الاختيارات الصائبة مهمة جدًا عندما تريد إقناع عملاء مستقلين جدد، لا سيّما عبر رسائل البريد الإلكتروني الباردة. إذا كانت معظم تجربتك في الكتابة عن التمويل أو العقارات، فليس من المنطقي أن تقدم عرضًا لشركة في مجال الرعاية الصحية على خدماتك في الكتابة كمستقل. ينطبق ذات الأمر على المصممين، فإذا لم تكن تعتمد في أسلوبك على التصميم المسطح Flat design والاقتباسات التحفيزية وأنظمة الألوان القديمة، فربما لن تستمتع بالعمل مع العلامات التجارية القديمة، والتي ليس لديها أي خطط لنقل علامتها التجارية إلى القرن الحادي والعشرين. اختر التعامل مع العملاء الذين تجد نفسك مناسبًا لهم، فإذ لم يكن لديك أي تناغم مع علامتهم التجارية وأسلوبهم، فتجنب العمل معهم، واختر مكانًا آخرًا تكون قادرًا فيه على تقديم عمل أفضل؛ بالمقابل، سيستفيدون أكثر من تعيين شخص آخر. يغفل الكثير من المستقلين عن التفكير في هذا الأمر، ولكن حتى عندما تفكر في الأمر، ما يزال من الصعب جدًا الحكم على كونك مناسبًا لهذه الشركة أم لا؛ لذلك، فيما يلي بعض الأسئلة التي يمكنك الإجابة عنها عند التفكير في عميل محتمل للتأكد من كونه مناسبًا لك ومن كونك مناسبًا له أيضًا: ما الذي يجعلني مؤهلًا لمساعدة هذا العميل تحديدًا؟ هل قمتُ بعمل مماثل فيما مضى؟ هل يُسعدني احتمال العمل مع هذا العميل أم أنه قرار مالي بحت؟ يقول رايان روبنسون كاتب هذا المقال: يتابع رايان روبنسون في الحديث عن تجربته قائلًا: وكما نلاحظ في البريد الإلكتروني السابق، سعى رايان روبنسون لذكر العملاء الذين عمل معهم سابقًا، بحيث يشجع الشركات الناشئة على العمل معه. للعديد من الأسباب المختلفة، يُعَد اختيار مكانة تخصصية لك من أفضل القرارات التي يمكنك اتخاذها على الإطلاق بصفتك مستقلًا، فلنفترض على سبيل المثال أنك تمتلك مقهى وتريد توظيف شخص ما لمساعدتك على إعادة بناء العلامة التجارية، وإنشاء صور جديدة وتصميم شعار جديد ومواد تسويقية جديدة، وأنك حصلت على عروض من مستقلين مختلفين أخبراك بقدرتهما على مساعدتك، وهما على النحو التالي: المستقل الأول: متعدد المواهب، ولديه خبرة واسعة في إدارة الحملات التسويقية، ويعرف كيفية استخدام برامج التصميم، مثل برنامج أدوبي فوتوشوب Adobe Photoshop وبرنامج أدوبي إليستريتور Illustrator، وقد صمم بعض الشعارات، ولديه أعمال تصميمية أخرى لموقعه الشخصي، هي غالبًا بهدف المتعة والتسلية، ولكنك معجب بأسلوبه. المستقل الثاني: متخصص في مجاله، إذ يعمل كمصمم مستقل، ولديه تاريخ حافل في إعداد العلامات التجارية للعديد من المقاهي؛ كما أنك تحب أسلوبه، وتدرك بأنه يتمتع بخبرة كبيرة في تنفيذ نوع العمل الذي تحتاجه بالضبط. الآن يأتي السؤال: أي مترجم ستختار؟ إذا كنت ذكيًا ستختار المستقل الثاني المتخصص في مجاله دون أدنى شك، حتى وإن اضطررت إلى تدفع له أكثر بكثير، لأنك ستستفيد من خبرته الطويلة الممتدة لعدة سنوات في إعداد العلامات التجارية. في عملك المستقل، يجب أن تصنف نفسك كخبير ذو مكانة متخصصة. اجعل نفسك الخيار الواضح، وهي الخطوة الأولى التي يمكنك اتخاذها لتتوقع الرد على رسائلك الإلكترونية الباردة. أصبحت الآن جاهزًا لبدء رحلة البحث عن عملاء مستقلين، ويمكنك البدء بالأشخاص الذين تعرفهم. انظر أولًا إلى الأشخاص داخل شبكتك الاجتماعية لتحديد ما إذا كانت هناك أي فرص للعمل مع أحدهم، فهم يعرفون أخلاقياتك في العمل، ويريدون رؤيتك ناجحًا، وهؤلاء الأشخاص يمكن أن يكونوا: الأصدقاء وأصدقائهم. أفراد العائلة وأصدقائهم. زملاء العمل السابقين الذين يعملون الآن في مكان آخر. زملاء الدراسة من أيام المدرسة. التقط الهاتف واتصل بهم، اجلس معهم واحتسي فنجانًا من القهوة، ثم اسألهم عما إذا كانوا مستعدين لتقديمك إلى الشخص المناسب داخل المؤسسة التي يعملون بها، ليتيحوا لك فرصة الدردشة مع المسؤولين. وعلى أقل تقدير، اكتفِ بالحصول على اسم الشخص الذي يجب أن تتواصل معه، ثم يمكنك ممارسة مهاراتك في رسائل البريدك الإلكتروني الباردة. وعندما تنتهي من شبكة معارفك، يمكنك أن تبحث عن عملائك من خلال منصات العمل الحل، مثل منصة مستقل، وهنا قد يكون مناسبًا في بعض الأحيان أن تبدأ في أداء بعض المهام قليلة الدخل في الأيام الأولى، إذ يساعد ذلك على صقل مهاراتك وخبراتك، وبناء معرض أعمال لك، لكن يجب أن تبدأ بتحديد سعر خدماتك في أسرع وقت ممكن، كما يجب أن يكون لديك تسعيرة ثابتة من اليوم الأول، ومن ثم يمكنك رفعها مع تقدمك وتحسن خبراتك. 2. العثور على الشخص المناسب للتواصل معه عندما تحاول الحصول على عميل جديد، ليس من الصائب أن تمضي وقتك في إقناع البواب في قسم الموارد البشرية للشركة، أو أن تحاول إقناع فريق التوظيف بأنك الأفضل للوظيفة، بل اذهب مباشرةً إلى الشخص المتحكم في قرار التوظيف. ربما يعرف الحراس في قسم الموارد البشرية بعض المعايير المطلوبة للعمل، ويمكنك الحصول عليها من خلال دردشة مصادفة، لا أن تخطط للتواصل معهم على وجه التحديد، إذ ينبغي أن ترسل بريدًا إلكترونيًا باردًا لشخص يفهم مقاصدك. لنفترض على سبيل المثال أنك تعمل كمسوق محتوى أو كاتب مستقل، سيحمل الشخص المناسب للتواصل معه أحد المسميات الوظيفية التالية: مدير التسويق بالمحتوى. مسؤول التسويق بالمحتوى. المدير الأول للتسويق بالمحتوى. مدير التسويق. مدير المدونة. مسؤول التحرير في المدونة. نائب مدير التسويق بالمحتوى. يجب أن تستهدف الأشخاص المسؤولين على مستوى الإدارة، أي الأشخاص الذين لديهم سلطة القرار في تعيينك؛ فإذا كنت مصممًا مستقلًا، فيمكنك التواصل مع مدير المحتوى الإبداعي، بينما إذا كنت مطورًا مستقلًا، فمن المحتمل أن يكون المدير الهندسي الشخص المناسب للتواصل معه. قد لا تتمكن في بعض الأحيان من التواصل مع المدير، لذا يمكنك إجراء اتصال مبدئي مع شخص ما ضمن الفريق الذي يديره ذلك المدير، مثل أن يكون كاتب محتوى أو مصمم أو مهندس، مما يساعدك على الوصول إلى مديرهم إذا كنت قادرًا على تقديم قيمة واضحة في رسائلك الباردة عبر البريد الإلكتروني. يمكنك أيضًا استخدام منصة لينكدإن LinkedIn للعثور على الشخص المناسب للتواصل معه. افتح علامة تبويب جديدةً وتوجه إلى منصة لينكدإن LinkedIn، ثم اكتب في شريط البحث عنوان الوظيفة التي تريد العمل بها، واختر عرض النتائج للأشخاص الذين لديهم المسمى الوظيفي الذي تبحث عنه. يمكنك بعد ذلك تصفية النتائج حسب الأشخاص الذين لديهم الوظيفة التي تستهدفها في الشركة، وذلك عن طريق كتابة اسم الشركة في حقل الشركة، ومن ثم ستحصل على نتائج دقيقة وقريبة مما تريده. وبطبيعة الحال، قد تنفع هذه الطريقة مع الشركات الكبيرة التي لديها انتشار محدد، لكن إذا لم يكن لديهم انتشار واسع، فقد لا تجد على الفور الشخص المناسب للتواصل معه، والأمر نفسه ينطبق على المؤسسات الكبيرة التي لديها العشرات من الأشخاص المحتملين للتواصل معهم، لذلك، قد تضطر إلى التخمين والمضي قدمًا عوضًا عن التردد والتفكير الشديد في الخيار الأنسب. 3. الحصول على البريد الإلكتروني الآن، وبعد أن أصبح لديك اسم الشخص المناسب للتواصل معه، يجب أن تحصل على عنوان بريده الإلكتروني. وللحصول على البريد الإلكتروني، يمكنك التسجيل مجانًا في موقع هانتر Hunter الذي يُعَد من أفضل الأدوات المجانية للعثور بسرعة على عناوين بريد إلكتروني دقيقة. يمكنك إجراء 50 عملية بحث مجانية كل شهر، وهو رقم كافٍ إذا كانت رسائلك منظمةً ولديك معدل إتمام صفقات مرتفع. بمجرد كتابة موقع الشركة التي يعمل فيها الشخص الذي تحاول إرسال بريد إلكتروني بارد إليه، ستحصل على قائمة تضم جميع عناوين البريد الإلكتروني الموجودة في قاعدة بيانات هانتر Hunter حول تلك الشركة. اعمل على تصفية النتائج عن طريق كتابة الاسم الأول والأخير للشخص المستهدف، وستحصل على البريد الإلكتروني للشخص الذي تبحث عنه بالضبط بنسبة احتمال تصل إلى 90%، كما هو موضح بالمثال في الصورة التالية: حتى إذا لم تصل إلى العميل المحتمل بنسبة 100% في قاعدة بيانات هانتر Hunter، فإن الأداة ستحلل تنسيقات عناوين البريد الإلكتروني المستخدمة في تلك الشركة وستعطيك تخمينًا حول عنوان البريد الإلكتروني للشخص الذي تبحث عنه، مما يساعدك على المضي قدمًا في حملتك الإلكترونية الباردة. في حال لم يقدم موقع هانتر نتيجةً واضحةً، فيمكنك استخدام أشهر خمس صياغات تستخدمها الشركات لكتابة عناوين البريد الإلكتروني: first@company.com. first.last@company.com. firstlast@company.com. firstinitiallastname@company.com. firstlastinitial@company.com. مع ملاحظة ما يلي: First: هو الاسم الأول. Last: الاسم الأخير أو الكنية أو اللقب. firstinitial: الحرف الأول من الاسم الأول. lastinitial: الحرف الأول من الاسم الأخير أو الكنية. في جميع الحالات السابقة، ستحصل على عنوان البريد الإلكتروني للعميل المحتمل في أقل من دقيقة، سواءً من خلال البحث على هانتر، أو تجربة إحدى الصياغات المذكورة، وإذا لم تجدي الطرق السابقة أي نفع، فيمكنك تجربة إحدى هاتين الأداتين: Prospect.io. Voila Norbert. إذا كنت ما تزال غير قادر على الوصول إلى عنوان البريد الإلكتروني باستخدام الأدوات السابقة، فجرِّب البحث عن العميل المحتمل عبر منصة تويتر Twitter ومنصات التواصل الاجتماعي الأخرى، فربما تتمكن من الوصول إلى بريده الإلكتروني أو معلومات تساعد على التواصل معه؛ كما يمكنك البحث عن رابط لمدونته الشخصية، والتي قد تحتوي على معلومات للتواصل معه. في حال وصلت إلى بريده الإلكتروني لكن لم تتمكن من الوصول إلى الكثير من المعلومات حوله، فعندها يمكنك تمرير المؤشر فوق عنوان البريد الإلكتروني، وترى ما إذا كان قد ربط بريده الإلكتروني بحساب جوجل بلاس Google Plus، وإن كان قد فعل ذلك، فسيظهر لك كما في الصورة: بعد أن حصلت على عنوان البريد الإلكتروني لهدفك، أصبحت مستعدًا الآن للانتقال إلى مرحلة كتابة بريد إلكتروني بارد، لكن ثمة أمور يجب أن تتحقق منها قبل أن تبدأ في كتابة بريدك الإلكتروني الفعلي، وإليك أهم تلك الأمور: أن تكون واثقًا من أن الشركة التي تتواصل معها يمكنها استخدام خدماتك المستقلة، والظاهر لك أنها تحتاج إليها الآن. لقد تعقبت الشخص الذي يبدو أنه المناسب للتواصل معه، وهو الذي يتخذ قرارات توظيف المستقلين. لديك عنوان بريده الإلكتروني. ولكن قبل أن تبدأ بإرسال بريدك الإلكتروني البارد، يجب أن تحدد أهداف المبيعات التي تأمل في تحقيقها من التواصل البارد، فهل ستتوقف بمجرد وصولك إلى العميل الأول؟ أم الثاني؟ أم الخامس؟ أم العاشر؟ اعرف مقدار العمل الذي يمكنك القيام به لكيلا تفرط في إجهاد نفسك. 4. اختيار نموذج بريد إلكتروني بارد بصفتك مستقلًا، يجب عليك استخدام الأدوات المتوفرة بين يديك، وعدم اختلاق الأعذار حول عدم قدرتك على الوصول إلى عميل معين. كن على ثقة بأنك إذا بذلت كل جهودك لإقناع العميل الذي ترغب في العمل معه، ستتمكن من تحقيق ذلك. يقول رايان روبنسون: القالب الأول للبريد الإلكتروني البارد: ميزتك على مدونتي يعتمد القالب الأول للبريد الإلكتروني البارد على استخدام المدونة كطريقة لتقديم قيمة قبل طلب أي شيء في المقابل من العميل المحتمل، وهي تستهدف خصوصًا المؤثرين في مجال الأعمال ومؤسسي الشركات الناشئة، وتتلخص فكرة هذا القالب في الخطوات التالية: اطلب اقتباسًا من العميل المحتمل لتضيفه إلى مقال قادم ستكتبه. انشر مقالًا على المدونة مع إضافة اقتباسه، وروّج للمقال ترويجًا كبيرًا بحيث يزداد عدد القراء. تواصل معه لتشكره على المساهمة في المنشور. سلّط الضوء في هذا البريد الإلكتروني على النجاح المبكر الذي حققه منشور المدونة، مثل المشاركات الاجتماعية، وعدد الزوار وغير ذلك. في هذه المرحلة، سيسألك بعض العملاء المحتملين صراحةً عما إذا كان بإمكانك مساعدتهم على إنشاء محتوى مثل الذي تقدمه في مدونتك، أما الأشخاص الذين لم يطلبوا منك ذلك، فيمكنك عرض خدماتك حول التسويق بالمحتوى، مثل وضع إستراتيجية تسويق بالمحتوى وتنفيذها. قد لا تنفع هذه الطريقة مع جميع العملاء المحتملين، ولكنك ستحصل على معدل تحويل عالي جدًا، لأنك قد فعلت ما بوسعك من خلال إبراز قيمة خدماتك، وتقديم عرض توضيحي لما يمكنك تقديمه، وذلك من خلال المنشور الذي ضمنت فيه العميل المحتمل. ملاحظة مهمة: لا ترسل أبدًا رسائل بريد إلكتروني باردة عن طريق النسخ واللصق للعملاء المحتملين رفيعي المستوى، لأنهم سيعرفون فورًا أنها رسالة غير مخصصة لهم، لذا فإن الأمر يستحق إمضاء 3 دقائق في إعداد رسالة مخصصة لترك انطباع جيد عنك لدى العميل المحتمل. إذا قررت استخدام أداة تعمل على أتمتة رسائل البريد الإلكتروني وتوسيع نطاق وصولك، فيمكنك تجربة الأداتين التاليتين: أداة lemlist: تُعَد هذه الأداة مميزةً في قدرتها على مساعدتك في أتمتة وتخصيص رسائل البريد الإلكتروني على نطاق واسع، فباستخدام تقنياتها التي تسمح لك بإدراج لقطات شاشة أو صور أو شعارات مخصصة على الصور في رسائل البريد الإلكتروني، فستتمكن من إضافة لمسة شخصية إلى رسائل البريد الإلكتروني دون التضحية بالإرسال على نطاق واسع. أداة Woodpecker: تتميز هذه الأداة بعملية توصيل رسائل فريدة، إذ يمكن أن تساعدك على إرسال رسائل بريد إلكتروني باردة تلقائيًا، بينما تبدو الرسائل كما لو أنك ترسلها يدويًا بنفسك. إليك فيما يلي قالب البريد الإلكتروني الذي يمكنك استخدامه، مع التأكيد على أنه يجب تخصيص رسالة البريد الإلكتروني مع كل عميل محتمل تتواصل معه: .addtional__paragraph { border: 3px solid #f5f5f5; margin: 20px 0 14px; position: relative; display: block; padding: 25px 30px; } سطر الموضوع: ميزتك على مدونتي النص الأساسي: مرحبًا [الاسم الأول]، أنا مُعجب بما تفعله مع [اسم الشركة] على مدار العامين الماضيين. أتواصل معك لأنني أعمل على كتابة منشور جديد لمدونتي؛ والذي يتمحور حول [موضوع المنشور الذي تكتبه] وأريد دعم المنشور بآراء الأشخاص الذين مروا بهذه التجربة بأنفسهم، وأود أن أسمع رأيك حولها. سأنشر المنشور على مدونتي [جملة اختيارية: التي تحصل على x من القراء] وأود أن أحصل على اقتباس سريع منك لتضمينه في المقال؛ إذا لم تكن تمانع في ذلك. إذا تمكنت من الإجابة على هذا السؤال في بضع جمل، فسيكون ذلك رائعًا: [ضع سؤالًا أو تحدٍ مرتبط بالموضوع الذي ستكتب عنه، بحيث يمنحهم فرصةً لعرض خبراتهم]؟ وكيف تنصح الناس بالتغلب على هذا التحدي؟ [اسمك] وهنا إليك ثلاث ملاحظات مهمة يجب أن تنتبه لها عند تخصيص هذا القالب: لا ترسل أي روابط ترويجية. لا ترسل أي إعلانات عن خدمة. لا تسأل عما إذا كان يبحث عن توظيف أحد. يجب عليك أن تتحلى بالصبر في هذه المرحلة، فهدفك هو تقديم القيمة وإظهار أهمية خدماتك، عوضًا عن تقديم وعود بما يمكنك تقديمه في المستقبل؛ وهو ما سيساعدك على كسب ثقة العملاء المحتملين وجذب انتباههم بطريقة مختلفة تمامًا عن 99% من المستقلين الآخرين الذين يرسلون بريدًا إلكترونيًا باردًا ويحاولون حث العملاء على توظيفهم. يبدو الأمر بسيطًا، ولكن لا أحد تقريبًا لديه الصبر لتنفيذ هذا النوع من إستراتيجية التسويق العميقة، لذلك يهدر الكثير من المستقلين وقتهم في كتابة رسائل بريد إلكتروني باردة دون تلقي أي استجابة، ويرجع ذلك إلى افتقارهم لبُعد النظر. من المؤكد أن الأمر قد يستغرق أسابيع لتتمكن من كسب الأموال، وأحيانًا لن يحدث ذلك أبدًا، ولكنك ستحصل على نتائج نهائية أفضل بكثير مما لو ذهبت مباشرةً وطلبت من العملاء المحتملين توظيفك. إليك فيما يلي لقطة شاشة لإحدى رسائل البريد الإلكتروني الباردة التي أرسلها رايان روبنسون لإحدى العملاء، وربح منها صفقةً بقيمة 50000 دولار: يروي رايان روبنسون قصته قائلًا: أُعجب مؤسس الشركة الناشئة بهذه النتائج، وأراد تحقيق ذات النتائج في مدونة الشركة، لذا أرسل لي بريدًا إلكترونيًا يسألني عما إذا كنت جاهزًا للعمل معه: بعد محادثة سريعة على الهاتف تحدد سير العمل وتوضحت الأهداف، ثم وضعنا إستراتيجيةً لنشر منشورين شهريًا، ومن ذلك الوقت ونحن نعمل معًا. القالب الثاني للبريد الإلكتروني البارد: الإحالة الدافئة ما هو الأفضل من إرسال بريد إلكتروني بارد؟ الجواب ببساطة هو إرسال بريد إلكتروني دافئ! بالمقارنة مع القالب الأول للبريد الإلكتروني البارد الذي تحدثنا عنه، فإنه عادةً ما تكون نسبة تحويل إستراتيجية التواصل الدافئ أعلى، فهي تعتمد على الدخول مباشرةً في صلب الموضوع دون الحاجة إلى نشر اقتباس أو منشور مدونة أو غير ذلك. يمكنك استخدام هذا القالب عند استهداف شركات أكبر قليلًا، وليس لديها رئيس شكلي واضح، إذ لا يمكنك إرسال بريد إلكتروني بارد إلى مالك الشركة أو مؤسسها، لذا سيتمحور تواصلك مع المديرين ومسؤولي التسويق بالمحتوى. لكنك ستحتاج أولًا إلى التواصل مع مستقل آخر يعمل مع الشركة أو موظف فيها، ولذلك يُعَد هذا القالب رائعًا للكتاب المستقلين، لأن الشركة لديها العديد من المساهمين الذين يكتبون لها بصفتهم مستقلين أساسًا، وتتلخص فكرة هذا القالب في الخطوات التالية: حدد المستقل أو الموظف الذي يعمل مع الشركة، وشارك إحدى أعماله الحديثة على حسابك على إحدى منصات التواصل الاجتماعي. أرسل له بريدًا إلكترونيًا تمدح به عمله، وأخبره عن مشاركتك لمنشوره على شبكتك الاجتماعية. اطلب منه اسم الشخص الذي يجب أن تتواصل معه لكي تقدم له بعض الأعمال المشابهة. أرسل بريدًا إلكترونيًا دافئًا إلى المدير المسؤول عن اتخاذ القرارات مع الإشارة إلى إحالتك من المستقل الذي تواصلت معه أولًا. فيما يلي قالب بريد إلكتروني يمكنك استخدامه للتواصل مع المدير المسؤول عن اتخاذ القرارات، بعد أن تتمكن من الحصول على إحالة من أحد المستقلين الذين يعملون معه: .addtional__paragraph { border: 3px solid #f5f5f5; margin: 20px 0 14px; position: relative; display: block; padding: 25px 30px; } سطر الموضوع: المساهمة مع [اسم الشركة] بإحالة من [اسم المستقل] النص الأساسي: مرحبًا [الاسم الأول]، لقد أحببت [هنا تضع العمل الذي تريد المساهمة فيه استنادًا إلى تخصصك] الصادر عن [اسم الشركة] خلال الأشهر الماضية، ولا سيّما [ضع عملًا محددًا، مثل منشور مدونة أو تصميم معين أو بناء علامة تجارية، وذلك حسب المجال الذي تعمل به، مع تقديم ملاحظة سريعة حول العمل، بحيث تظهر أنك نظرت إليه فعلًا]. أحد معارفي وهو [اسم المستقل] يساهم مع [اسم الشركة] وقد أحالني للتواصل معك لمعرفة ما إذا كان من المناسب أيضًا أن أساهم معكم. أنا أعمل في [تحدث بسطر واحد عن الخدمات التي تقدمها والمكانة التي وصلت إليها في عملك]. [أضف جملةً تسلط الضوء فيها على أعمالك السابقة إذا كان ذلك ممكنًا، أو أضف ما يعزز من مصداقيتك حول الخبرة التي تمتلكها في المجال] اسمح لي أن أعرف إذا كان ذلك مثيرًا لاهتمامك، وسأكون سعيدًا بتجميع بعض الأفكار حول [عمل قابل للتسليم] يمكننا من خلاله تجربة التعاون معًا. [اسمك] حاول أن تركز على التسويق الذاتي لخدماتك وخبراتك وأعمالك السابقة، مما يزيد من ثقة العميل المحتمل بك، ويثبت بأنك جدير بهذا العمل، فالهدف من البريد الإلكتروني البارد هو جعل المسؤول عن اتخاذ القرارات مهتمًا بالعمل معك. فيما يلي لقطة شاشة لإحدى رسائل البريد الإلكتروني الباردة التي أرسلها رايان روبنسون إلى إحدى الكاتبات المستقلات لتزوده بمعلومات حول الشخص المناسب الذي يجب أن يتواصل معه لعرض خدماته عليه، مع ملاحظة أن الأسماء مخفية للحفاظ على الخصوصية: لقد جاء الرد سريعًا بعد أقل من ساعة من إرسال هذا البريد الإلكتروني إلى الكاتبة المستقلة، وها هو الرد. هل سيكون الأمر دائما بهذه السهولة؟ قطعًا لا، ولكن نظرًا لأن رايان روبنسون مدح عملها أولًا وشاركه مع جمهوره على تويتر ثانيًا، فقد كانت على استعداد لمقابلة تلك القيمة من خلال إعطائه معلومات حول المسؤول في الشركة التي تعمل بها. علاوةً على ذلك، لقد ساعد وصولها إلى حساب رايان روبنسون على تويتر ورؤية بعض أعماله على الشعور بالثقة بأنه جدير بهذا العمل ولن يحرجها أمام المسؤول. بعد حصول روبنسون على عنوان البريد الإلكتروني لمديرة التسويق بالمحتوى في الشركة، أرسل بريدًا إلكترونيًا باردًا للمدير، كما هو موضح في لقطة الشاشة: بعد إرسال هذا البريد الإلكتروني البارد إلى مديرة التسويق بالمحتوى، أرسلت المديرة في نفس اليوم ردًا للتعبير عن اهتمامها ورغبتها في سماع المزيد من روبنسون، بما في ذلك الأفكار التي لديه. أرسل لها روبنسون موضوعين، وشرح الإستراتيجيات الخاصة التي يتبعها في التسويق بالمحتوى، وكيف أنه يحاول تعزيز منشوراته والترويج لها في العديد من الأماكن بعد نشرها مباشرةً، وبعد عدة أيام تعود المديرة لترد عليه بإعجابها بما لديه، وهذه كانت رسالتها: لقد أجرى روبنسون والمديرة اتصالات عديدة بعد أسبوع ووضعا خطة نشر مقال واحد شهريًا، بصفقة تصل إلى 2500 دولارًا لكل منشور. القالب الثالث للبريد الإلكتروني البارد: النهج المباشر يُعَد قالب البريد الإلكتروني الثالث والأخير أكثر مباشرةً بالمقارنة مع القالبين السابقين، وسنحاول تفصيل جوانبه فيما يلي. نظرًا لكونه مباشرًا تمامًا، فهناك احتمال كبير أن يُقابل بريدك الإلكتروني بالرفض أو عدم الرد ما لم تكن هناك حاجة أو اهتمام في داخل الشركة. ومع ذلك، يتميز قالب البريد الإلكتروني هذا بكونه يوفر قيمةً حقيقيةً، وهو ما نكرره ونركز عليه دائمًا عند محاولة المستقلين إرسال رسائل بريد إلكتروني فعالة. ما تزال بحاجة إلى أداء كل مهامك المطلوبة قبل إرسال بريدك الإلكتروني البارد، مثل اختيار الشركة المناسبة، وتحديد الشخص المناسب للتواصل معه، والذي يجب أن يكون صاحب قرار في الشركة، ومن ثم البحث عن عنوان بريده الإلكتروني، كل هذا قبل أن تبدأ في كتابة بريدك الإلكتروني البارد، وتتلخص فكرة هذا القالب في الخطوات التالية: حدد الشخص المناسب للتواصل معه واحصل على عنوان بريده الإلكتروني. ابحث عن عمل مرتبط بالشركة، وشاركه على حساباتك على وسائل التواصل الاجتماعي، ويمكنك أيضًا ذكره في مدونتك. أرسل بريدًا إلكترونيًا باردًا تشير به إلى مشاركتك لعملهم مع جمهورك على الشبكات الاجتماعية. قدِّم عرضًا بسيطًا لخدماتك واسأل عما إذا كانوا مستعدين لمزيد من الدردشة. إليك قالب البريد الإلكتروني الذي يمكنك استخدامه، وستجد بعده لقطة شاشة لرسالة بريد إلكتروني حقيقية تستخدم ذات القالب: .addtional__paragraph { border: 3px solid #f5f5f5; margin: 20px 0 14px; position: relative; display: block; padding: 25px 30px; } سطر الموضوع: [اسم الشركة] [الخدمة] مع الإشارة إليها النص الأساسي: مرحبًا [الاسم الأول]، أردت التواصل معك لأخبرك بإعجابي [العمل المرتبط بخدمتك] بمحتوى منصة [اسم الشركة] في الأشهر القليلة الماضية. يمكنني تقدير جودة [العمل المرتبط بخدمتك] بمجرد أن أراه. لقد شاركت مع جمهوري على تويتر [هنا تضع العمل، سواءً كان منشور أو مشروع أو تصميم أو تطبيق أو أيًا يكن] حول [تضع موضوع العمل] وأشرت أيضًا إلى منصتكم على أنها مصدر رائع في إحدى منشوراتي الحديثة على مدونتي [تضع رابط المنشور]. السبب الآخر الذي دفعني إلى التواصل معك هو أن جزءًا كبيرًا من عملي كان مع علامات تجارية كبيرة، مثل [الإشارة إلى أي عملاء سابقين عملت معهم في نفس المجال أو حتى الوظائف التي عملت بها بدوام كامل] وشركات أخرى لمساعدتهم على [عرض خدمتك الأساسية]. هل أنت مستعد للدردشة حول [عرض خدمتك الأساسية]؟ أو أحلني من فضلك إلى شخص آخر في فريقك لأتواصل معه إذا كان ذلك أفضل. [اسمك] ملاحظة: يمكنك من هنا [إضافة رابط معرض أعمالك إذا كان ذلك ممكنًا] قراءة المزيد عن طريقة عملي والعملاء الذين عملت معهم من بين جميع رسائل البريد الإلكتروني الباردة، تُعَد هذه الرسالة الأقوى من حيث التسويق الذاتي، فهي تعرض خبراتك بوضوح للعميل المحتمل، وتوجههم مباشرةً للعمل معك من أول رسالة بريد إلكتروني بينكما. نذكر مرةً أخرى بأن الهدف الأساسي هو بدء التواصل مع الشخص المناسب المسؤول عن اتخاذ القرارات، والاتفاق على موعد مكالمة هاتفية، لكي تتمكن من عرض خدماتك بطريقة أكثر فعالية. إليك فيما يلي لقطة شاشة لرسالة بريد إلكتروني حقيقية، والتي منحت صاحبها عقدًا بقيمة 10.000 دولار شهريًا مقابل 4 منشورات مدونة، مع ملاحظة أن الاسم والتفاصيل غير واضحة للحفاظ على الخصوصية. يقول روبنسون: "لقد أرسلت هذا البريد الإلكتروني في الصباح الباكر، ليأتيني الرد في فترة ما بعد الظهر" وفيما يلي لقطة شاشة لرسالة البريد الإلكتروني الذي تلقاها من العميل المحتمل الذي تواصل معه: يروي روبنسون ما جرى معه بعد ذلك: "لقد حددنا موعدًا لمكالمة هاتفية، وتعرفت أكثر على أهدافهم، ووضعنا خطة عمل، لكن على الرغم من ذلك، سأخبرك بأن هذا ليس هو الرد المعتاد على رسالة بريد إلكتروني باردة، وبالتأكيد لم أتوقع بأني سأحظى بصفقة تصل قيمتها إلى 10.000 دولار شهريًا، إلا بعد أن أجرينا مكالمتنا الهاتفية، وتمكنت من تقدير الميزانية لديهم". يكمل روبنسون: "ما جعلني أدرك أنهم يدفعون مبالغ مجزية هو أنهم شركة كبيرة أولًا، إضافةً إلى أنه ذكر لي خلال المكالمة الهاتفية أنهم حاولوا العمل مع وكالات تسويق في الماضي، لكنهم عجزوا عن تحقيق نتائج مرضية، وهو ما جعلني أدرك أنهم مستعدون لتقديم مبالغ ممتازة مقابل الخدمات الجيدة". من بين حوالي 100 رسالة من من هذا النوع من الرسائل الإلكترونية الباردة، يمكن أن تتحول 10 رسائل فقط إلى صفقات في غضون شهر من التواصل الأولي، لكن هذا النوع من الرسائل يحتاج إلى المتابعة المستمرة. وحتى وإن لم تكن هناك صفقة، يجب أن تعلم أنك أصبحت ضمن حساباتهم، وربما يتواصلون معك في أي وقت. 5. المتابعة مع العملاء المحتملين إليكم حقيقةً أخرى صعبةً حول العمل الحر، وهي أنك يجب أن تقاتل لكي ينتبه إليك العملاء المحتملون، ولن يكفيك امتلاك قالب بريد إلكتروني جيد لجذب انتباه العملاء المحتملين، وذلك لأن كل شخص تحاول التواصل معه مشغول للغاية. ولكن هناك خط رفيع بين أن تكون ذلك الشخص المزعج الذي يرسل رسائل بريد إلكتروني كل بضعة أيام، وبين أن ترسل رسائل متابعة لطيفة تبرر فيها عدم تلقيك لأي رد حتى الآن، لذا يجب أن تحقق التوازن، وأن تقدم قيمةً من خلال رسائل المتابعة، لا أن تكتفِ بطرح نفس السؤال على العملاء المحتملين في كل مرة تتابعهم فيها. يقول ستيلي إفتي Steli Efti وهو خبير في المتابعة ومؤسس شركة Close المتخصصة في إدارة علاقات العملاء CRMs لأصحاب الأنشطة التجارية الصغيرة: ما الذي يجب أن تفعله عندما ترسل بريدًا إلكترونيًا باردًا ولا تتلقى أي رد لبضعة أيام؟ إليك فيما يلي جدول متابعة حسب أيام العمل، ويُفضَّل ألا تتابع مع العملاء المحتملين في أيام عطل نهاية الأسبوع، لأنه على الأرجح ستبقى رسالتك أسفل بريدهم الوارد، مما يقلل من احتمالية جذب انتباههم في الصباح المزدحم لأول يوم عمل. ملاحظة مهمة: قبل متابعة رسائلك الإلكترونية الباردة، تأكد من أنك لم تخطئ في كتابة عنوان بريده الإلكتروني، وأنك لم ترسل رسائلك إلى الشخص الخاطئ، أو إلى حساب لم يَعُد نشطًا. اليوم 0: إرسال البريد الإلكتروني البارد. اليوم الأول: لا يوجد رد. اليوم الثاني: لا يوجد رد. اليوم الثالث: المتابعة الأولى، أرسل بريدًا إلكترونيًا موجزًا كرد على رسالتك الأصلية، كما هو موضح في القالب التالي: .addtional__paragraph { border: 3px solid #f5f5f5; margin: 20px 0 14px; position: relative; display: block; padding: 25px 30px; } مرحبًا [الاسم الأول]، كنت أفكر أكثر في [اسم الشركة] [مجال عملك] على مدار اليومين الماضيين، وما زلت أرغب في التواصل معك عندما يكون لديك متسع من الوقت. هل أنت متاح للمحادثة لبضع دقائق هذا الأسبوع حول [مجال خدماتك]؟ [اسمك] اليوم الرابع: لا يوجد رد. اليوم الخامس: لا يوجد رد. اليوم السادس: لا يوجد رد. اليوم السابع: المتابعة الثانية؛ أرسل رسالةً مختصرةً مرةً أخرى، واسأل فيها هذه المرة عما إذا كان هناك شخص آخر من الأفضل التواصل معه، كما هو موضح في القالب التالي: .addtional__paragraph { border: 3px solid #f5f5f5; margin: 20px 0 14px; position: relative; display: block; padding: 25px 30px; } مرحبًا [الاسم الأول]، أعلم أنك مشغول للغاية، لذا أود أن أسأل عما إذا كان هناك شخص آخر في فريقك قد يكون من الأفضل التواصل معه للدردشة حول [مجال خدماتك]؟ [اسمك] اليوم الثامن: لا يوجد رد. اليوم التاسع: لا يوجد رد. اليوم العاشر: لا يوجد رد. اليوم الحادي عشر: المتابعة الثالثة؛ سترسل في هذه المرة رسالة إلكترونية للمتابعة مع شخص آخر يبدو لك أنه صاحب القرار في فريق التسويق بهذه الشركة. إليك ما يجب أن يبدو عليه البريد الإلكتروني الجديد: .addtional__paragraph { border: 3px solid #f5f5f5; margin: 20px 0 14px; position: relative; display: block; padding: 25px 30px; } الموضوع: ميزة [اسم الشركة] على مدونتي مرحبًا [الاسم الأول]، لقد تواصلت مع [اسم الشخص الأول الذي أرسلت له البريد الإلكتروني] الأسبوع الماضي لإخباره بأنني [هنا تضع أحد أعمال الشركة وتقول بأنك شاركته، أو أشرت إليه] على مدونتي وحساباتي على الشبكات الاجتماعية. لم أتلقى أي رد من حتى الآن، وأفترض أنه ربما يكون مشغولًا للغاية. هل تعرف ما إذا كان هناك شخص ما في فريقك سيكون من المناسب لي التواصل معه، فأنا أرغب بالتعاون معكم في [مجال خدماتك]؟ [اسمك] اليوم الثاني عشر: لا يوجد رد. اليوم الثالث عشر: لا يوجد رد. اليوم الرابع عشر: لا يوجد رد. اليوم الخامس عشر: المتابعة الرابعة؛ يتشابه تنسيق هذه الرسالة الإلكترونية مع رسالة المتابعة الثانية، لكنها موجهة هذه المرة إلى الشخص الجديد الذي تتواصل معه. في هذه المرحلة، ستكون قد أرسلت 3 رسائل بريد إلكتروني إلى الشخص الأول ورسالتين إلى الشخص الثاني. يُفضَّل في هذه المرجلة أن تختار إبطاء الأمور إلى حد كبير، فقد مضى أكثر من أسبوعين دون الحصول على أي رد (وهو أمر نادر جدًا)، لذا فإنك في هذه المرحلة لن تحصل على أي موافقة عمل بنسبة تصل إلى 90%. يمكنك أن تتوقف هنا وتنتظر لأسبوعين كاملين، قبل أن تتابع التواصل مرةً أخرى مع الأشخاص الذين تواصلت معهم. تابع باستمرار رسائل البريد الإلكتروني التي أرسلتها في بريدك الوارد، ويمكنك تتبع حالة العملاء المحتملين في جداول بيانات جوجل Google Sheets كما يمكنك استخدام Inbox by Gmail لمتابعة الرسائل الإلكترونية المرسلة وفقًا للجدول الزمني الذي حددناه في الأعلى في حالة عدم تلقي أي رد. بهذه الطريقة، ستعاود الرسائل بالظهور في الجزء العلوي من بريدك الوارد بعد العدد المحدد من الأيام الذي وضعته. خلال كل هذه المتابعات، يمكنك العمل على جبهات أخرى واستهداف عملاء محتملين آخرين، من خلال إرسال رسائل بريد إلكتروني باردة ومحاولة اقتناص فرص أخرى. وفي ختام هذا المقال؛ يقول روبنسون: "إذا كنت أستهدف عميلًا محتملاً جذابًا، فسأستمر في الإشارة إليه ضمن محتوى مدونتي، وسأشارك أعماله على حساباتي الاجتماعية، كما سأستمر بمتابعته كل أسبوعين حتى أتمكن من التقاطه في الوقت المناسب، وفي العادة لا أتوقف عن المتابعة أبدًا، لكن الفواصل الزمنية بين الرسائل تزداد بمرور الوقت". ترجمة -وبتصرّف- للمقال 5 Cold Email Templates for Freelancers لصاحبه Ryan Robinson. اقرأ أيضًا مجموعة قوالب بريدية للمبيعات، وكيف تستخدمها بالشكل اﻷمثل أفضل ممارسات التسويق عبر البريد الإلكتروني أين تجد العملاء المرتقبين