shqawe
ربي أشرح لي صدري
بسم الله الرحمن الرحيم
الحمد لله والصلاة والسلام على رسول الله نبينا محمد عليه افضل الصلاة واتم التسليم
اللهم لا علم لنا إلا ما علمتنا، إنك أنت العليم الحكيم، اللهم علمنا ما ينفعنا، وانفعنا بما علمتنا، وزدنا علما،
اسعد الله اوقاتكم بكل خير واتمنى ان يكون جميع اعضائنا وزوارنا بصحة وعافية وسالمين معافين ان شاء الله احببت ان اقدم لكم اليوم طريقة استخدام الجافا سكربت في الزين فورو فالزين فورو لها مكتبة خاصة لاستخدام الجاف سكربت ولم ارى كثير من اخواننا العرب يستخدمون نفس الطريقة بل يستخدمون ال jQuery وهو يعمل بدون مشاكل اذا كانت اﻻكواد ﻻ تحتاج الى ارسال او استقبال البيانات او استخدام بعض خصائص مكتبة الزين فورو
وان شاء الله اليوم سوف احاول شرح وتبسيط الطريقة بقدر المستطاع عسى ان تعم الفائدة للجميع ان شاء الله
ملاحظة: يحتاج هذا الدرس الى معرفة في الجافا سكربت وبعض دوالها.
بداية ً متأكد ان كل من تعامل مع قوالب الزين فورو قد مر عليه هذ الكود
وهذا هو مربط الفرس في درسنا لهذا اليوم ومدخلنا لمعرفة طريقة استخدام مكتبة الجافا سكربت الخاصة بالزين فورو
دعونا نأخذ فكرة عن طريقة كتابة الفنكشن الخاصة بالزين فورو وكيفية استدعائها
بداية يتوجب علينا انشاء ملف في مجلد js الموجود في رئيسية النسخة ويفضل دائما ً ان تنشأ مجلد خاص باسمك وداخل هذه المجلد تضع لكل اضافة مجلد خاص بها يحمل جميع ملفات الاضافة
لذا سوف انشئ مجلد باسم xenarabia وداخل هذا المجلد سوف انشأ ملف باسم testjs.js
ويتم استدعاء جميع الملفات الموجودة داخل مجلد js داخل القوالب بهذه الطريقة
ﻻحظوا اننا لم نقم بكتابة مجلد js لان الزين فورو مثل ما اشرت سابقاً تتعرف على جميع الملفات داخل مجلد js
ملاحظة: يفضل عند محاولة استدعاء اي ملف javascript ان يتم وضع اﻻستدعاء داخل قالب
اﻻن نأتي الى ملف testjs.js وكيفية كتابة الفنكشن الخاص بالزين فورو
اولا ً يجب ان انوه الى ان الزين فورو تستخدم الوضع الصارم او ما يسمى
وهذا الوضع بشكل مختصر يستخدم للحماية حسب فهمي المتواضع شكل الملف سوف يكون كالتالي:
لنشرح اﻻكواد بشكل مفصل لكي يسهل فهمها
في بداية الكود سوف تجدون هذا الكود وانا وضعت بدايته ونهايته
وهذا بالضبط يشبه كود jQuery التالي:
اﻻن نأتي للسطر الثالث والرابع وهو هذا الكود:
وهنا قمنا باستخدام الفريم ورك الخاص بالزين فورو في كتابة الجافا سكربت ويتم بداية باختيار اسم للحدث Event الخاص بهذا الكود ويكون عن طريق اضافة XF قبل اسم الحدث Event وكما تلاحظون في مثالنا قمنا بتعريف الحدث الخاص بنا بالشكل التالي:
ومن ثم اخبرنا الزين فورو ان هذا الحدث سوف يقوم ببعض العمليات وذلك عن طريق اسناد اسم الحدث Event الى الكود في السطر الرابع بالطريقة التالية:
الان تم تعريف الحدث Event الخاص بنا واصبح جاهز للاستخدام النقطة التالية في الكود وهي options وكيفية استخدامها.
يمكن شرح options على انها عبارة عن متغيرات افتراضية يتم تعريفها بداية كل حدث ويمكن اسناد بعض القيم لها حسب الحاجة ونستطيع هنا مثلا ً تعريف متغير واسناد قيمة عنصر له مثل كلاس class او id لاي عنصر html لكي يتم تنفيذ الحدث الخاص بنا عليه
فلو تلاحظون في مثالنا قمنا بتعريف متغير واحد فقط وهو target واسندنا له قيمة null
اﻻن نأتي الى اهم نقطة في موضوعنا وهي دالة init وهذه الدالة تعتبر القلب النابض بالحدث Event الخاص بنا فمن خلال هذه الدالة يتم تعريف المتغيرات التي تم انشاءها في options ويتم تعريف الدوال الخاصة بالحدث Event
فنلاحظ في مثالنا ان في الدالة init يوجد هذا الكود
فالكود ببساطة يقول عند الضغط على الزر قم بتنفيذ الدالة click والتي تم تعريفها بعد دالة init
وهذه الطريقة لو احببنا تنفيذها بال jQuery سوف تكون بالشكل التالي:
او ايضا ً عن طريق فانيلا جافا سكربت فسوف يكون الكود بالشكل التالي:
طبعا ً الفرق بين ال jQuery والزين فورو ان ال jQuery تم تعريف كلاس العنصر الذي سوف يتم الضغط عليه وهو selector بينما في الزين فورو يتم تعريف العنصر بالشكل التالي:
لنشرح الكود قليلا ً
اولا ً لابد ان يتم تسجيل عنصر لكل حدث وهذا ما نراه في بداية السطر في كودنا السابق فنحن نخبر الزين فورو بان تقوم بتسجيل العنصر
ومن ثم نقوم بوضع العنصر الذي تم انشاءه في القالب بهذه الطريقة:
تلاحظون اننا قمنا باضافة العنصر الذي قمنا بتسجيله
والى هنا نكون قد قمنا بتسجيل الحدث الخاص بنا واصبح جاهز للاستخدام في النهاية متأكد ان الجميع لاحظ ان مثالنا في الدرس هو عبارة عن عرض اسم المستخدم فقد قمت بزرع اسم المستخدم في كود ال html ومن ثم قمت باستدعائة في ملف الجافا سكربت الخاص بنا ليكون الكود النهائي بهذه الطريقة
طبعا ً قمت باضافة متغير لل options ﻻبين كيفية استخدامها ومن ثم قمت بتعريف هذا المتغير كما ذكرت سابقا ً في دالة init ومن ثم قمت باضافة بعض الاكواد في دالة click والتي اريد تنفيذها عند الضغط على الزر
شكل الزر في القالب كالتالي:
وعند الضغط عليه يتم اظهار اسم المستخدم على شكل رسالة نجاح كالتالي:
والى هنا ينتهي درسنا واتمنى من الله العلي القدير انني استطعت ايصال الطريقة لكم بشكل مبسط واعلم انني اكثرت الحديث واطلت فيه ولكن احببت ان ابسط الطريقة بقدر المستطاع
فان اصبت فهذا من فضل الله علي وان اخطأت فجل من ﻻ يخطأ
وتقبلوا احترامي وتقديري
اخوكم
شقاوي
الحمد لله والصلاة والسلام على رسول الله نبينا محمد عليه افضل الصلاة واتم التسليم
اللهم لا علم لنا إلا ما علمتنا، إنك أنت العليم الحكيم، اللهم علمنا ما ينفعنا، وانفعنا بما علمتنا، وزدنا علما،
اسعد الله اوقاتكم بكل خير واتمنى ان يكون جميع اعضائنا وزوارنا بصحة وعافية وسالمين معافين ان شاء الله احببت ان اقدم لكم اليوم طريقة استخدام الجافا سكربت في الزين فورو فالزين فورو لها مكتبة خاصة لاستخدام الجاف سكربت ولم ارى كثير من اخواننا العرب يستخدمون نفس الطريقة بل يستخدمون ال jQuery وهو يعمل بدون مشاكل اذا كانت اﻻكواد ﻻ تحتاج الى ارسال او استقبال البيانات او استخدام بعض خصائص مكتبة الزين فورو
وان شاء الله اليوم سوف احاول شرح وتبسيط الطريقة بقدر المستطاع عسى ان تعم الفائدة للجميع ان شاء الله
ملاحظة: يحتاج هذا الدرس الى معرفة في الجافا سكربت وبعض دوالها.
بداية ً متأكد ان كل من تعامل مع قوالب الزين فورو قد مر عليه هذ الكود
HTML:
data-xf-init
وهذا هو مربط الفرس في درسنا لهذا اليوم ومدخلنا لمعرفة طريقة استخدام مكتبة الجافا سكربت الخاصة بالزين فورو
دعونا نأخذ فكرة عن طريقة كتابة الفنكشن الخاصة بالزين فورو وكيفية استدعائها
بداية يتوجب علينا انشاء ملف في مجلد js الموجود في رئيسية النسخة ويفضل دائما ً ان تنشأ مجلد خاص باسمك وداخل هذه المجلد تضع لكل اضافة مجلد خاص بها يحمل جميع ملفات الاضافة
لذا سوف انشئ مجلد باسم xenarabia وداخل هذا المجلد سوف انشأ ملف باسم testjs.js
ويتم استدعاء جميع الملفات الموجودة داخل مجلد js داخل القوالب بهذه الطريقة
HTML:
<xf:js src="xenarabia/testjs.js" />
ﻻحظوا اننا لم نقم بكتابة مجلد js لان الزين فورو مثل ما اشرت سابقاً تتعرف على جميع الملفات داخل مجلد js
ملاحظة: يفضل عند محاولة استدعاء اي ملف javascript ان يتم وضع اﻻستدعاء داخل قالب
helper_js_global
بعد هذا الكود
HTML:
<!--XF:JS-->
اﻻن نأتي الى ملف testjs.js وكيفية كتابة الفنكشن الخاص بالزين فورو
اولا ً يجب ان انوه الى ان الزين فورو تستخدم الوضع الصارم او ما يسمى
use strict
وهذا الوضع بشكل مختصر يستخدم للحماية حسب فهمي المتواضع شكل الملف سوف يكون كالتالي:
JavaScript:
!(function ($, window, document, _undefined) {
"use strict";
XF.ShowUserName = XF.Element.newHandler({
eventNameSpace: "ShowUserName",
options: {
target: null,
},
init: function () {
this.$target.on("click", $.proxy(this, "click"));
},
click: function (e) {
e.preventDefault();
},
});
XF.Element.register("show-user-name", "XF.ShowUserName");
})(jQuery, window, document);
لنشرح اﻻكواد بشكل مفصل لكي يسهل فهمها
في بداية الكود سوف تجدون هذا الكود وانا وضعت بدايته ونهايته
JavaScript:
!(function ($, window, document, _undefined) {
"use strict";
})(jQuery, window, document);
وهذا بالضبط يشبه كود jQuery التالي:
JavaScript:
$(document).ready(function() {
});
اﻻن نأتي للسطر الثالث والرابع وهو هذا الكود:
JavaScript:
XF.ShowUserName = XF.Element.newHandler({
eventNameSpace: "ShowUserName",
});
وهنا قمنا باستخدام الفريم ورك الخاص بالزين فورو في كتابة الجافا سكربت ويتم بداية باختيار اسم للحدث Event الخاص بهذا الكود ويكون عن طريق اضافة XF قبل اسم الحدث Event وكما تلاحظون في مثالنا قمنا بتعريف الحدث الخاص بنا بالشكل التالي:
XF.ShowUserName
ومن ثم اخبرنا الزين فورو ان هذا الحدث سوف يقوم ببعض العمليات وذلك عن طريق اسناد اسم الحدث Event الى الكود في السطر الرابع بالطريقة التالية:
JavaScript:
XF.Element.newHandler({
eventNameSpace: "ShowUserName",
});
الان تم تعريف الحدث Event الخاص بنا واصبح جاهز للاستخدام النقطة التالية في الكود وهي options وكيفية استخدامها.
يمكن شرح options على انها عبارة عن متغيرات افتراضية يتم تعريفها بداية كل حدث ويمكن اسناد بعض القيم لها حسب الحاجة ونستطيع هنا مثلا ً تعريف متغير واسناد قيمة عنصر له مثل كلاس class او id لاي عنصر html لكي يتم تنفيذ الحدث الخاص بنا عليه
فلو تلاحظون في مثالنا قمنا بتعريف متغير واحد فقط وهو target واسندنا له قيمة null
اﻻن نأتي الى اهم نقطة في موضوعنا وهي دالة init وهذه الدالة تعتبر القلب النابض بالحدث Event الخاص بنا فمن خلال هذه الدالة يتم تعريف المتغيرات التي تم انشاءها في options ويتم تعريف الدوال الخاصة بالحدث Event
فنلاحظ في مثالنا ان في الدالة init يوجد هذا الكود
JavaScript:
this.$target.on("click", $.proxy(this, "click"));
فالكود ببساطة يقول عند الضغط على الزر قم بتنفيذ الدالة click والتي تم تعريفها بعد دالة init
وهذه الطريقة لو احببنا تنفيذها بال jQuery سوف تكون بالشكل التالي:
JavaScript:
$(selector).click(click);
او ايضا ً عن طريق فانيلا جافا سكربت فسوف يكون الكود بالشكل التالي:
JavaScript:
selector.addEventListener(click);
طبعا ً الفرق بين ال jQuery والزين فورو ان ال jQuery تم تعريف كلاس العنصر الذي سوف يتم الضغط عليه وهو selector بينما في الزين فورو يتم تعريف العنصر بالشكل التالي:
JavaScript:
XF.Element.register("show-user-name", "XF.ShowUserName");
لنشرح الكود قليلا ً
اولا ً لابد ان يتم تسجيل عنصر لكل حدث وهذا ما نراه في بداية السطر في كودنا السابق فنحن نخبر الزين فورو بان تقوم بتسجيل العنصر
show-user-name
للحدث ShowUserName
والذي قمنا بتعريفة في السطر الرابع في ملفنا عن طريق الكود التالي:
JavaScript:
eventNameSpace: "ShowUserName",
ومن ثم نقوم بوضع العنصر الذي تم انشاءه في القالب بهذه الطريقة:
HTML:
<a href="#" class="button" data-xf-init="show-user-name" data-user="{$xf.visitor.username}">
اضغط لعرض اسم المستخدم
</a>
تلاحظون اننا قمنا باضافة العنصر الذي قمنا بتسجيله
show-user-name
الى data-xf-init
والتي تم ذكرها في بداية الموضوع على انها مدخلنا للزين فورووالى هنا نكون قد قمنا بتسجيل الحدث الخاص بنا واصبح جاهز للاستخدام في النهاية متأكد ان الجميع لاحظ ان مثالنا في الدرس هو عبارة عن عرض اسم المستخدم فقد قمت بزرع اسم المستخدم في كود ال html ومن ثم قمت باستدعائة في ملف الجافا سكربت الخاص بنا ليكون الكود النهائي بهذه الطريقة
JavaScript:
!(function ($, window, document, _undefined) {
"use strict";
XF.ShowUserName = XF.Element.newHandler({
eventNameSpace: "ShowUserName",
options: {
target: null,
userName: null,
},
init: function () {
this.$target.on("click", $.proxy(this, "click"));
this.options.userName = this.$target[0].dataset.user;
},
click: function (e) {
e.preventDefault();
let t = this;
XF.flashMessage(t.options.userName, 3000);
console.log(t.options.userName);
},
});
XF.Element.register("show-user-name", "XF.ShowUserName");
})(jQuery, window, document);
طبعا ً قمت باضافة متغير لل options ﻻبين كيفية استخدامها ومن ثم قمت بتعريف هذا المتغير كما ذكرت سابقا ً في دالة init ومن ثم قمت باضافة بعض الاكواد في دالة click والتي اريد تنفيذها عند الضغط على الزر
شكل الزر في القالب كالتالي:
وعند الضغط عليه يتم اظهار اسم المستخدم على شكل رسالة نجاح كالتالي:
والى هنا ينتهي درسنا واتمنى من الله العلي القدير انني استطعت ايصال الطريقة لكم بشكل مبسط واعلم انني اكثرت الحديث واطلت فيه ولكن احببت ان ابسط الطريقة بقدر المستطاع
فان اصبت فهذا من فضل الله علي وان اخطأت فجل من ﻻ يخطأ
وتقبلوا احترامي وتقديري
اخوكم
شقاوي
التعديل الأخير: