Anouar Xrud نشر 18 مايو 2021 أرسل تقرير نشر 18 مايو 2021 السلام عليكم أنا مبتدأ في البرمجة و قمت ببرمجة بلوج على laravel بس لم تتضح لي طريقة عمل shortecodes تكون شبيهة بالتي تعمل على الوورد بريس و يكون عليها متغيررات تحياتي . 1 اقتباس
0 محمد أبو عواد نشر 18 مايو 2021 أرسل تقرير نشر 18 مايو 2021 مرحبا هل تقصد function يمكن استخدمها في أي مكان من التطبيق؟ اقتباس
0 Anouar Xrud نشر 18 مايو 2021 الكاتب أرسل تقرير نشر 18 مايو 2021 بتاريخ 12 دقائق مضت قال محمد أبو عواد: مرحبا هل تقصد function يمكن استخدمها في أي مكان من التطبيق؟ نعم بس الدي أبحث عليه شيئ يكون مشابه للدي يعمل على ووردبريس اقتباس
0 محمد أبو عواد نشر 18 مايو 2021 أرسل تقرير نشر 18 مايو 2021 بتاريخ الآن قال Anouar Xrud: نعم بس الدي أبحث عليه شيئ يكون مشابه للدي يعمل على ووردبريس ليس لدي خبرة بالوورد برس كثيرا ولكن من الممكن انشاء ملف في المجلد app ليكن اسمه مثلا helper.php وتستطيع بداخله كتابة أي function ومن ثم استخدام هذه ال function في كل مكان من التطبيق, بالطبع يمكنك تمرير بعض المعاملات لهذه ال function الآن لجعل الملف معرف بداخل التطبيق بشكل كامل يجب القيام ببعض الخطوات بعد انشاء الملف نذهب الى ملف composer.json ثم نقوم باضافة هذا الملف ضمن الكائن autoload لاحظ كيف شكل الكائن autoload قبل اضافة الملف "autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ] }, أما بعد اضافة الملف يصبح شكل الكود كالتالي "autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ], "files":["App/helper.php"] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }, لاحظ لقد قمنا باضافة الخاصية files وكما نلاحظ أيضا نستخدم علامات التنصيص الثنائية " " ثم نقوم بكتابة مسار الملف helper.php الذي أنشأناه في المجلد app, بعد ذلك يجب أن نقوم بتنفيذ الأمر التالي من خلال مشغل الأوامر composer dump-autoload بعد ذلك يمكنك كتابة أي function بداخل الملف واستدعائها بشكل مباشر في المتحكمات وصفحات blade شكرا لك اقتباس
0 Anouar Xrud نشر 18 مايو 2021 الكاتب أرسل تقرير نشر 18 مايو 2021 بتاريخ 4 دقائق مضت قال محمد أبو عواد: ليس لدي خبرة بالوورد برس كثيرا ولكن من الممكن انشاء ملف في المجلد app ليكن اسمه مثلا helper.php وتستطيع بداخله كتابة أي function ومن ثم استخدام هذه ال function في كل مكان من التطبيق, بالطبع يمكنك تمرير بعض المعاملات لهذه ال function الآن لجعل الملف معرف بداخل التطبيق بشكل كامل يجب القيام ببعض الخطوات بعد انشاء الملف نذهب الى ملف composer.json ثم نقوم باضافة هذا الملف ضمن الكائن autoload لاحظ كيف شكل الكائن autoload قبل اضافة الملف "autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ] }, أما بعد اضافة الملف يصبح شكل الكود كالتالي "autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ], "files":["App/helper.php"] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }, لاحظ لقد قمنا باضافة الخاصية files وكما نلاحظ أيضا نستخدم علامات التنصيص الثنائية " " ثم نقوم بكتابة مسار الملف helper.php الذي أنشأناه في المجلد app, بعد ذلك يجب أن نقوم بتنفيذ الأمر التالي من خلال مشغل الأوامر composer dump-autoload بعد ذلك يمكنك كتابة أي function بداخل الملف واستدعائها بشكل مباشر في المتحكمات وصفحات blade شكرا لك تمام صديقي شكرا لك اقتباس
0 Adnane Kadri نشر 19 مايو 2021 أرسل تقرير نشر 19 مايو 2021 مرونة لارافل , و البرمجة الخاصة بشكل أعم , تجعل طرق تحقيق نفس غرض الـ shortcodes مثل ما في الوردبرس كثيرة و شاسعة , و لعل من أبسط الطرق : عن طريق تخصيص توابع الـ blade أو كما تسمى الـ blade directives ( في حالة الإستعمال في ملفات blade فقط ): نقوم بتعريف التوابع بملف BladeServiceProvider.php بداخل مجلد App/Providers بداخل الدالة boot على هذا النحو : (قد تحتاج لإنشاء Provider بنفس الإسم إن لم يكن الملف موجودا . يمكنك ذلك عن طريق الأمر : php artisan make:provider BladeServiceProvider ) . <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class BladeServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return string */ public function boot() { // video Blade::directive('video', function ($expression) { return '<video width="320" height="240" controls> <source src="'.$expression.'" type="video/mp4"> </video>'; }); // audio Blade::directive('audio', function ($expression) { return '<audio controls> <source src="'.$expression.'" type="audio/ogg"> </audio>'; }); } /** * Register any application services. * * @return void */ public function register() { // } } ثم يمكن إستعمال أي لاحقة أو أي shortcode بملفات الـ blade عن طريق : @video('path/to/video.mp4') @audio('path/to/audio.mp3') 2. عن طريق تعريف واجهة تحمل الدوال المسؤولة عن اختصار الكود : نقوم بإنشاء مجلد واجهات Facades بداخل مجلد App و ننشئ به ملف Shortcodes.php ليحمل المحتوى التالي : <?php namespace App\Facades; class Shortcodes { /** * create video from a given source. * * @return string */ public static function video($source) { return '<video width="320" height="240" controls> <source src="'.$source.'" type="video/mp4"> </video>'; } /** * create audio from a given source. * * @return string */ public static function audio($source) { return '<audio controls> <source src="'.$source.'" type="audio/ogg"> </audio>'; } } ثم يمكن إستدعاءه من أي مكان في التطبيق عن طريق : <?php echo App\Facades\Shortcodes::video('path/to/video.mp4'); echo App\Facades\Shortcodes::audio('path/to/audio.mp3'); كما يمكنك تعريف مكافئ بملف app.php لإستدعاء أنظف : <?php 'aliases' => [ ........ 'Shortcode'=> App\Facades\Shortcodes:class, ] ثم يتم الإستدعاء هكذا : <?php echo \Shortcode::video('path/to/video.mp4'); echo \Shortcode::audio('path/to/audio.mp3'); 3. إن كانت حاجتك للـ shortcodes حاجة لتلخيص أكواد الـ html فقط فيمكن تعريفها كملفات blade و تضمينها كمكونات . على سبيل المثال : نقوم بإنشاء مجلد components بداخل مجلد views . نقوم بإنشاء ملف video.blade.php و يكون محتواه كالتالي : <video width="320" height="240" controls> <source src="{{ $source }}" type="video/mp4"> </video> ثم نقوم بإستدعاءه من ملفات الـ blade الأخرى عن طريق تضمينه وتمرير المتغير source معه : @include('components/video' ,['source' => 'path/to/video.mp4']) أو يمكن أيضا تعريفها عن طريق مساعد helper بشكل globally و إستعماله بأي مكان من أجزاء التطبيق مثل ما اقترح المدرب@محمد أبو عواد. فكل الطرق تحقق نفس الغرض و تقوم بمثل عمل الـ shortcodes بالوردبرس . و بنفس الطريقة يمكنك أيضا معاملة الـ shortcodes الأخرى الخاصة بالوردبرس من مثل embed , gallery , playlist و caption بنفس المنطق و إنشاء دوال مكافئة تختصر عملها و يسهل إستدعاءها من أي مكان من التطبيق , و لعلها فكرة جميلة تجعل الكود أنظف و أسهل من ناحية التحكم . اقتباس
السؤال
Anouar Xrud
السلام عليكم
أنا مبتدأ في البرمجة و قمت ببرمجة بلوج على laravel بس لم تتضح لي طريقة عمل shortecodes تكون شبيهة بالتي تعمل على الوورد بريس و يكون عليها متغيررات
تحياتي .
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.