اذهب إلى المحتوى

لوحة المتصدرين

  1. عبدالهادي مجالي

    • نقاط

      6

    • المساهمات

      61


  2. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      4

    • المساهمات

      13209


  3. Najd Al Warthan

    Najd Al Warthan

    الأعضاء


    • نقاط

      3

    • المساهمات

      16


  4. Omer Amad

    Omer Amad

    الأعضاء


    • نقاط

      3

    • المساهمات

      191


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 07/02/24 في كل الموقع

  1. هل يجب فهم جميع المواضيع الموجوده داخل موسوعة حاسوب بالنسبه لل html css او انهو سيتم التطرق لها خلال المشاريع
    6 نقاط
  2. علما ان الكود تم كتابته مثل المقطع تماما
    3 نقاط
  3. فيه عندي حقل select وفيه خيارات... مثال خيار الذكر والأنثى... اريد لما يتم اختيار ذكر يظهر حقل تحت وفيها خيارات الوظائف الخاصة ب الذكور ولما يختار أنثى تظهر خيارات الوظائف الخاصة ب الاناث.... المشروع استمارة php
    2 نقاط
  4. الأمر يتم من خلال PHP و HTML و JavaScript معًا. أولاً نقوم بإنشاء حقل الاختيار Select للجنس: <label for="gender">الجنس:</label> <select id="gender" name="gender"> <option value="">اختر الجنس</option> <option value="male">ذكر</option> <option value="female">أنثى</option> </select> ثم إنشاء حقول الوظائف (مخفية في البداية): <div id="maleJobs" style="display: none;"> <label for="maleJob">الوظيفة (للذكور):</label> <select id="maleJob" name="maleJob"> <option value="">اختر الوظيفة</option> <option value="engineer">مهندس</option> <option value="doctor">طبيب</option> <option value="teacher">مدرس</option> </select> </div> <div id="femaleJobs" style="display: none;"> <label for="femaleJob">الوظيفة (للإناث):</label> <select id="femaleJob" name="femaleJob"> <option value="">اختر الوظيفة</option> <option value="nurse">ممرضة</option> <option value="teacher">مدرسة</option> <option value="designer">مصممة</option> </select> </div> هنا يأتي دور JavaScript لإظهار حقل الوظائف المناسب: <script> const genderSelect = document.getElementById('gender'); const maleJobsDiv = document.getElementById('maleJobs'); const femaleJobsDiv = document.getElementById('femaleJobs'); genderSelect.addEventListener('change', function() { if (this.value === 'male') { maleJobsDiv.style.display = 'block'; femaleJobsDiv.style.display = 'none'; } else if (this.value === 'female') { maleJobsDiv.style.display = 'none'; femaleJobsDiv.style.display = 'block'; } else { maleJobsDiv.style.display = 'none'; femaleJobsDiv.style.display = 'none'; } }); </script> حيث ستعمل addEventListener على تنفيذ دالة عند تغيير قيمة حقل الجنس، داخل الدالة، نتحقق من قيمة حقل الجنس ونعرض حقل الوظائف المناسب باستخدام style.display = 'block'. نخفي حقل الوظائف الآخر باستخدام style.display = 'none'. بالطبع ستحتاج إلى إرسال البيانات من خلال النموذج إلى السيرفر ثم معالجتها في PHP.
    1 نقطة
  5. 1 نقطة
  6. يمكنك استخدام PHP مع JavaScript لجعل الحقول تظهر أو تختفي بناء على الخيار المحدد في حقل select، سنستخدم JavaScript للتعامل مع تغيير الخيارات في حقل select وPHP لعرض الحقول المناسبة بناء على هذا التغيير. أولا نقوم بإعداد HTML وJavaScript: <!DOCTYPE html> <html> <head> <title>Form Example</title> <script type="text/javascript"> function showJobs() { var gender = document.getElementById("gender").value; var maleJobs = document.getElementById("maleJobs"); var femaleJobs = document.getElementById("femaleJobs"); if (gender == "male") { maleJobs.style.display = "block"; femaleJobs.style.display = "none"; } else if (gender == "female") { maleJobs.style.display = "none"; femaleJobs.style.display = "block"; } else { maleJobs.style.display = "none"; femaleJobs.style.display = "none"; } } </script> </head> <body> <form method="post" action="submit.php"> <label for="gender">الجنس:</label> <select id="gender" name="gender" onchange="showJobs()"> <option value="">اختر...</option> <option value="male">ذكر</option> <option value="female">أنثى</option> </select> <div id="maleJobs" style="display:none;"> <label for="maleJob">وظائف الذكور:</label> <select id="maleJob" name="maleJob"> <option value="job1">وظيفة 1</option> <option value="job2">وظيفة 2</option> <option value="job3">وظيفة 3</option> </select> </div> <div id="femaleJobs" style="display:none;"> <label for="femaleJob">وظائف الإناث:</label> <select id="femaleJob" name="femaleJob"> <option value="job4">وظيفة 4</option> <option value="job5">وظيفة 5</option> <option value="job6">وظيفة 6</option> </select> </div> <input type="submit" value="إرسال"> </form> </body> </html> في ملف submit.php، يمكنك معالجة البيانات المرسلة من النموذج: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $gender = $_POST["gender"]; if ($gender == "male") { $job = $_POST["maleJob"]; } elseif ($gender == "female") { $job = $_POST["femaleJob"]; } echo "الجنس: " . $gender . "<br>"; echo "الوظيفة: " . $job; } ?> عند تغيير الخيار في حقل select، تقوم JavaScript باستدعاء وظيفة showJobs التي تعرض أو تخفي حقول الوظائف بناء على الخيار المختار، و عند إرسال النموذج، تقوم PHP بمعالجة البيانات وتحديد الوظيفة المختارة بناء على الجنس، و بهذا الشكل يمكنك جعل الحقول تظهر وتختفي بناء على الخيارات المحددة في حقل select.
    1 نقطة
  7. السلام عليكم. الرجاء مساعدتي في جلب البيانات من الخادم. route.js /** * method: GET * path : api/properties */ export const GET = async( request ) => { try { await connectDB() const properties = await Property.find({}) return new Response(JSON.stringify(properties), { status: 200 }) } catch (error) { console.log(error) return new Response('Something went wrong', { status: 500 }) } } connectDB import mongoose from 'mongoose' let connected = false const connectDB = async () => { mongoose.set('strictQuery', true) // If the database is already connected, don't connect again if (connected) { console.log('Mongo DB is already connected ...') return; } // Connect to MongoDB try { await mongoose.connect(process.env.MONGO_URI); connected = true console.log('MongoDB connected ...') } catch (error) { console.log(error) } } export default connectDB; في هذه الحالة عندما أدخل على الرابط التالي http://localhost:3000/api/properties تظهر لي مصفوفة الproperties propeties/page.jsx import React from "react"; import PropertyCard from '@/components/PropertyCard'; async function fetchProperties() { try { const res = await fetch(`${process.env.NEXT_PUBLIC_API_DOMAIN}/properties`) if (!res.ok) { throw new Error('Failed to fetch data') } return res.json() } catch (error) { console.log(error) } } const PropertiesPage = async () => { const properties = await fetchProperties() console.log(properties) return ( <section className='px-4 py-6'> <div className='container-xl lg:container m-auto px-4 py-6'> {properties.length === 0 ? ( <p>No properties found</p> ) : ( <div className='grid grid-cols-1 md:grid-cols-3 gap-6'> {properties.map((property) => ( <PropertyCard key={property._id} property={property} /> ))} </div> )} </div> </section> ); }; export default PropertiesPage; في هذه الحالة مصفوفة الproperties فارغة وتظهر لي No properties found في طرف العميل شكرا.
    1 نقطة
  8. إذا المشكلة كما وضحت لك أنه تم عمل حفظ للبيانات chaching ويتم مسحها بعد مدة معينة من الممكن أن تكون عدة ساعات . الآن إذا لم تقم بإضافة الكود الذى أرفقته لك وقمت بإضافة بيانات في قاعدة البيانات في جدول الproperties ستجد أن البيانات الجديدة لا تظهر لأنه قام بعمل caching للبيانات القديمة . والكود الذى أرفقته لك يقوم بتجاهل حفظ ال chaching ويقوم بفرض إعادة إحضار البيانات الجديدة.
    1 نقطة
  9. شكرا. بصراحة في بعض الأحيان لا أفهم شيئا. في الصباح طرحت السؤال والكود لايعمل. الآن صار الكود يشتغل دون أن أقوم بأي تغيير
    1 نقطة
  10. حاولت بكل الطرق وضع ال footer في النهاية ولن أنجحindex.html style.css
    1 نقطة
  11. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
    1 نقطة
  12. متى سيستبدل الذكاء الاصطناعي المبرمجين, وهل هناك تخصص استبدل بالفعل؟
    1 نقطة
  13. لا يشترط فهم جميع المواضيع الموجودة في موسوعة الحاسوب، بل حاول البدء بالأساسية حيث يجب عليك أن تركز على فهم المفاهيم الأساسية لـ HTML (هيكل الصفحة، العناصر، العلامات) وCSS (التنسيق، الألوان، الخطوط)، كما أنه أفضل طريقة لتعلم HTML وCSS هي من خلال العمل على مشاريع عملية، لذا القيام بالمشاريع مع المدرب سيزيد من نسبة فهمك لهذه الأمور، و في نفس الوقت يمكنك استخدام موسوعة حاسوب كمرجع عند الحاجة.، أي لا تحاول حفظ كل شيء. كما أن الدورة فيها جزء كبير يتحدث على الأساسيات و بالتالي ستستفيد منه كثيرا، لذا يمكنك البدء فيها الآن. بالتوفيق إن شاء الله.
    1 نقطة
  14. مرحبًا، بشكل عام من الجيد التطرق إلى هذه المواضيع، و لكن قم بدراسة بعضها فقط، فمن غير المجدي في البرمجة دراسة كافة الأمور مباشرة. الأفضل هو دراسة الأساسيات و عند مواجهة مشكلة معينة تحتاج إلى تعلم أمر معين يمكنك حينها العودة و دراسة هذا الموضوع، خاصة أنك في حال لم تقم بذلك قد تقوم بدراسة أمور لن تحتاجها لفترة طويلة و غالبًا ستكون قد نسيتها.
    1 نقطة
  15. ليس من الضروري فهم جميع المواضيع الموجودة في موسوعة حاسوب أو أي مرجع آخر من البداية إلى النهاية فالعديد من المفاهيم سيتم التطرق إليها بشكل طبيعي خلال العمل على المشاريع، لكني أنصح بالاهتمام أكثر والالمام بالأساسيات ثم ستتقنها فيما بعد عند العمل على المشاريع، كما أرجو أن تقوم بإرفاق الأسئلة والاستفسارات المتعلقة بكل درس في صندوق التعليقات أسفل كل درس.
    1 نقطة
  16. A question about excel: how to organize raw files and here is the link for the file is if you want to download it https://ourworldindata.org/covid-deaths Screen Recording 2024-07-02 081935.mp4
    1 نقطة
  17. وعليكم السلام ورحمة الله وبركاته . أعتقد أن الخطأ هو في عملية ال chach حيث يقوم nextjs بعمل caching عند إستدعاء ال api بإستخدام fetch . ولحل تلك المشكلة نضيف revalidate هكذا : async function fetchProperties() { try { const res = await fetch(`${process.env.NEXT_PUBLIC_API_DOMAIN}/properties`,{ next: { revalidate: 10 } }) if (!res.ok) { throw new Error('Failed to fetch data') } return res.json() } catch (error) { console.log(error) } } وهكذا نقوم بجعل next بحذف ال chache بعد 10 ثواني . ومن المفترض أن هذا يحل تلك المشكلة .
    1 نقطة
  18. من خلال دالة onSubmit كالتالي: import { IonMenuButton, IonHeader, IonTitle, IonToolbar, IonButtons, IonGrid, IonRow, IonCol, IonCard, IonCardHeader, IonCardTitle, IonButton, IonLoading, IonContent, IonCardSubtitle, useIonAlert, IonAlert, } from "@ionic/react"; import { IonPage } from "@ionic/react"; import "../css/event.css"; import axios from "../config/axios"; //جلب المعلومات import { CREATE_EVENT_URL, EVENTS_URL } from "../config/urls"; import { useContext, useEffect, useState } from "react"; import { AuthContext } from "../context/AuthContext"; //import { Storage } from "@capacitor/storage"; //import { useHistory } from "react-router"; import React from "react"; const Events = () => { const [showLoading, setShowLoading] = useState(false); const [posts, setPosts] = useState([]); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [price, setPrice] = useState(""); const [presentAlert] = useIonAlert(); const { jwt } = useContext(AuthContext); useEffect(() => { getEvent(); }, []); const onSubmit = async () => { const postData = new FormData(); postData.append("title", title); postData.append("description", description); postData.append("price", price); try { await axios .post(CREATE_EVENT_URL, postData, { headers: { Authorization: jwt, }, }) .then((res) => { console.log("Event created successfully:", res.data); setTitle(""); setDescription(""); setPrice(""); getEvent(); }); } catch (e) { console.error("Error creating event:", e.response ? e.response.data : e); } }; const getEvent = async () => { setShowLoading(true); try { await axios .get(EVENTS_URL, { headers: { Authorization: jwt, }, }) .then((res) => { console.log("Events fetched successfully:", res.data.getEvent); setPosts(res.data.getEvent); setShowLoading(false); }); } catch (e) { console.error("Error fetching events:", e.response ? e.response.data : e); setShowLoading(false); } }; return ( <IonPage id="main-content"> {showLoading && <IonLoading isOpen={showLoading} duration={1000} />} {!showLoading && ( <> <IonHeader> <IonToolbar color="primary"> <IonTitle>صفحة المناسبات</IonTitle> <IonButton fill="clear" slot="end" color="tertiary" routerLink="/login" > مرحبا </IonButton> <IonButtons slot="start"> <IonMenuButton></IonMenuButton> </IonButtons> </IonToolbar> </IonHeader> <IonContent> <IonGrid> <IonRow> <div className="col-center"> <IonCol sizeLg="4"> <IonCard className="edit-card"> <IonCardHeader> <IonCardTitle color="primary"> شارك مناسبتك الخاصة! </IonCardTitle> <IonButton id="present-alert" color="primary"> انشاء مناسبة </IonButton> <IonAlert trigger="present-alert" header="اضافة مناسبة" buttons={[ { text: "إلغاء", role: "cancel", cssClass: "secondary", }, { text: "موافق", handler: () => { onSubmit(); }, }, ]} inputs={[ { name: "title", placeholder: "العنوان", value: title, onIonChange: (e) => setTitle(e.target.value), }, { name: "price", type: "number", placeholder: "السعر", min: 1, max: 100, value: price, onIonChange: (e) => setPrice(e.target.value), }, { name: "description", type: "textarea", placeholder: "التفاصيل", value: description, onIonChange: (e) => setDescription(e.target.value), }, ]} ></IonAlert> </IonCardHeader> </IonCard> </IonCol> </div> </IonRow> </IonGrid> <IonGrid> <IonRow className="col-edit"> <IonCol> {posts.length > 0 ? ( posts.map((post) => ( <IonCard key={post.id}> <IonCardHeader> <IonCardTitle color="secondary"> {post.title} </IonCardTitle> <IonCardSubtitle>{post.price}$</IonCardSubtitle> </IonCardHeader> <IonButton color="primary" onClick={() => presentAlert({ header: "تفاصيل المناسبة", subHeader: "قم بتسجيل الدخول وسارع بالحجز", message: `${post.description}`, buttons: ["اغلاق"], }) } className="btn-edit" id="present-alert" > احجز الان </IonButton> </IonCard> )) ) : ( <IonCard> <IonCardHeader> <IonCardTitle color="secondary"> لا توجد مناسبات </IonCardTitle> </IonCardHeader> </IonCard> )} </IonCol> </IonRow> </IonGrid> </IonContent> </> )} </IonPage> ); }; export default Events; قمت بتغيير const [post, setPosts] = useState("") إلى const [posts, setPosts] = useState([]) أ] وضع مصفوفة كقيمة إفتراضية. لأن ذلك يسمح بتخزين مجموعة من الأحداث التي تم جلبها من API في متغير posts، بدلاً من تخزين حدث واحد فقط، واستخدام المصفوفة posts ضروري لعرض قائمة من الأحداث بشكل صحيح. ثم استخدمت الدالة posts.map للتكرار على عناصر المصفوفة posts وعرض IonCard لكل حدث على حدة لضمان عرض جميع الأحداث التي تم جلبها من API. بعد ذلك ضبط معالجات الأحداث onIonChange لحقول النموذج (title و price و description) بشكل صحيح، لتحديث قيم تلك الحقول في حالة تغييرها من قبل المستخدم. وبعد إنشاء حدث جديد، يتم استدعاء الدالة getEvent() مرة أخرى من أجل تحديث قائمة الأحداث المعروضة وإظهار الحدث الجديد الذي تم إنشاؤه. مع إضافة معالجة أساسية للأخطاء في الدالتين onSubmit و getEvent لعرض رسائل خطأ واضحة للمستخدم في حالة حدوث أي مشكلة. واستخدام العرض الشرطي لعرض قائمة الأحداث (posts.length > 0) أو رسالة "لا توجد مناسبات" إن لم تكن هناك أحداث.
    1 نقطة
  19. قبل تدريب النموذج، تحتاج إلى تحويل الصور إلى بيانات رقمية ليتمكن للنموذج من فهمها، وذلك عبر تحويل كل صورة إلى مصفوفة أرقام، حيث يمثل كل بكسل في الصورة قيمة رقمية. وطالما أنك قمت بتحميل الـ Data set من Kaggle إذن تلك البيانات Labeled، وتتوفر عدة طرق ونماذج يمكن استخدامها لتصنيف الصور واستخراج الـ features، لكن أشهرها وأكثرها فعالية هي الشبكات العصبية العميقة (Deep Neural Networks)، وخاصة الشبكات العصبية التلافيفية (Convolutional Neural Networks - CNNs) التي تُستخدم بكثرة في تحليل الصور. وتحتاج إلى تجهيز البيانات قبل إدخالها في النموذج، وذلك يتضمن: تغيير حجم الصور بحيث تكون كلها بنفس الأبعاد. تطبيع الصور (Normalization) لتسريع عملية التدريب. تقسيم البيانات إلى مجموعات تدريب وتحقق validation واختبار. ولو تستخدم الشبكات العصبية التلافيفية (CNNs)، فتستطيع استخدام مكتبات مثل TensorFlow أو PyTorch لبناء النموذج. للتوضيح إليك مثال مبسط لبناء نموذج CNN باستخدام Keras (واجهة برمجية لـ TensorFlow): from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=(height, width, channels)), MaxPooling2D((2, 2)), Conv2D(64, (3, 3), activation='relu'), MaxPooling2D((2, 2)), Flatten(), Dense(128, activation='relu'), Dense(1, activation='sigmoid') # لأن لديك فئتين فقط: رجل أو امرأة ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) وتستطيع تدريب النموذج باستخدام بيانات التدريب: model.fit(train_images, train_labels, epochs=10, validation_data=(validation_images, validation_labels)) بعد التدريب، بإمكانك تقييم النموذج باستخدام بيانات الاختبار: test_loss, test_acc = model.evaluate(test_images, test_labels) print(f'Test accuracy: {test_acc}') وللعلم، بدلاً من البدء من الصفر تستطيع استخدام نموذج مُدرب بالفعل والبناء عليه مثل VGG16 و ResNet50 وهي شبكات عصبية ضخمة تم تدريبها على ملايين الصور لتمييز آلاف الأشياء (حيوانات، سيارات، أشكال، ألوان، ...إلخ)، وتلك الشبكات أصبحت خبيرة في استخراج الـ Features الهامة من الصور. أي نزيل الطبقات الأخيرة المسؤولة عن التصنيف النهائي، ونحتفظ بالطبقات الأولى التي تعلمت استخراج الـ Features الهامة من الصور.
    1 نقطة
  20. هذا ملف StudentController.php : <?php namespace App\Http\Controllers; use App\Models\student; use Illuminate\Http\Request; class StudentController extends Controller { /** * Display a listing of the resource. */ public function index() { // $students = student::all(); return view('student', compact('students')); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(Request $request) { // } /** * Display the specified resource. */ public function show(student $student) { // } /** * Show the form for editing the specified resource. */ public function edit(student $student) { // } /** * Update the specified resource in storage. */ public function update(Request $request, student $student) { // } /** * Remove the specified resource from storage. */ public function destroy(student $student) { // } } وهذا ملف web.php : <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\StudentController; Route::get('/', function () { return view('welcome'); }); Route::get('/student',[StudentController::class, 'index']);
    1 نقطة
  21. نعم انشئت ملف وعملت امر php artisan migrate ثم اضفت اعمدة في امر جديد مالسبب يجعله لاتعمل في امر تاني
    1 نقطة
  22. الإصدار 2.0.0

    3019 تنزيل

    أصبح إنشاء متجر إلكتروني في أيامنا هذه حاجةً ضرورية خصوصًا في المناطق التي تنتشر فيها التجارة الإلكترونية وتطغى على التجارة العادة التقليدية، فبعد أن كان المعتاد النزول إلى السوق وزيارة المتاجر للتسوق منها وإضاعة وقت في الطريق والسوق نفسه وحصر الخيارات بالمتاجر الموجودة آنذاك، أصبحت المتاجر كلها تقبع خلف شاشتنا بمختلف أماكن وجودها في الواقع ويمكن أن نصل لها بنقرة زر أينما كنت، بل أبعد من ذلك، أصبحنا نصل إلى المنتجات التي نريدها بضربة بحث ونحن في الطريق إلى العمل أو في المنزل مستلقين على الأريكة، نرتبها بحسب سعرها أو مواصفاتها لننتقي ما نريد وبالسعر الذي نريد، فإن لم يكن لمنتجات متجر تقليدي موضع قدم بين تلك المنتجات على الإنترنت فقد تخلف عن الركب وأضاع فرصة استثمارية كبيرة. بناءً على ذلك، زاد الطلب على سوق بناء المتاجر الإلكترونية زيادة متصاعدة لم تتوقف بعد خصوصًا في عالمنا العربي وهنا تجد أن السوق منقسم إلى قسمين، قسم المتاجر الجاهزة مسبقة البناء وقسم المتاجر المبنية بالكامل، فالنوع الأول هو عبارة عن متاجر قائمة على منصات جاهزة ولا يحتاج ضبط المتجر وتجهيزه إلى خبرة كبيرة ولا إلى فريق تقني -عادةً في المتاجر الصغيرة والمتوسطة- على عكس النوع الثاني الذي يتطلب فريق تطوير لبنائه ورفع واجهاته الأمامية والخلفية وضبط عملياته من دفع وشحن وغيرهما ولا يمكن الاستغناء عن فريق التطوير بعد تلك المرحلة وذلك للصيانة وتنفيذ أي متطلبات أو تعديلات لاحقة على المتجر. سنتحدث في هذا الكتاب عن النوع الأول، المتاجر الجاهزة مسبقة الصنع، وسنتطرق فيه إلى أكبر منصة بناء مواقع جاهزة وهي منصة ووردبريس مع إضافة ووكومرس الخاصة بالتجارة الإلكترونية، حيث توفر ووردبريس الكثير من الإضافات التي توسع عمل الموقع ومنها إضافة ووكومرس التي توسع عمل الموقع الإلكتروني وتحوله إلى متجر إلكتروني بإضافة كل الوظائف التي يطلبها مثل إدارة المنتجات والعملاء وإدارة عمليات البيع والشحن والدفع وغيرها وكل ذلك بواجهات بسيطة سنتعرف عليها في هذا الكتاب. يشرح هذا الكتاب كيفية بناء متجر إلكتروني وضبطه وإدارته بالكامل من الصفر، إذ يبدأ أولًا بشرح المفاهيم المتعلقة بالنطاق والاستضافة لحجز عنوان للمتجر -الذي هو موقع إلكتروني أصلًا- وحجز استضافة له وربطهما معًا ثم يشرح كيفية تثبيت منصة ووردبريس وضبطها ثم تثبيت إضافة ووكومرس وضبطها أيضًا مثل ضبط ووسائل الدفع والشحن ثم يتطرق أخيرًا إلى شرح كيفية تأمين المتجر الإلكتروني وحمايته ثم أخيرًا إطلاقه والتسويق له. الفئة المستهدفة من هذا الكتاب هي: الأشخاص غير التقنيين -في المقام الأول- الذين يملكون نشاطًا تجاريًا على أرض الواقع ويخططون للدخول بالتجارة الإلكترونية ولكنهم يفتقدون للرؤية الواضحة والمتكاملة حول بناء متجر إلكتروني. جميع الشباب من رواد الأعمال الذين يخططون لدخول مجال التجارة الإلكترونية ولكن يفتقدون إلى معرفة كافة التفاصيل المتعلقة به ولديهم معرفة تقنية بسيطة. المبرمجون المبتدئون الذين ليس لديهم المعلومات الكافية عن كيفية بناء متجر إلكتروني. مطورو ووردبريس ومطورو PHP. يمكنك قراءة فصول الكتاب على شكل مقالات من سلسلة "متجر ووكومرس" وتجد روابطها تاليًا: الخطوات الابتدائية لإنشاء متجرك الإلكتروني: عنوان المتجر وحجز النطاق (Domain) أنواع الاستضافات وكيفية حجز استضافة وربطها مع اسم نطاق متجرك الإلكتروني دليلك المصور لتثبيت ووردبريس والبدء بإنشاء متجر ووكومرس لمحة عن لوحة تحكم ووردبريس أفضل القوالب والإضافات للتجارة الالكترونية ومتاجر ووكومرس تثبيت إضافة WooCommerce وضبطها وبدء العمل على إنشاء متجر إلكتروني إعداد صفحات المتجر الضرورية وإضافة منتجات جديدة في متجر ووكومرس إضافة مركز مساعدة وخدمة دردشة مباشرة لموقع ووردبريس ومتجر ووكوميرس تعديل صفحات المتجر عبر Gutenberg وتخصيصها بما يناسب متجرك ومنتجاته تعرف على أشهر وسائل الدفع الإلكترونية في العالم العربي وكيفية ربطها مع متجر ووكومرس أفضل شركات الشحن العربية والدولية وكيفية ربط متجر ووكومرس بوسائل الشحن المتاحة تأمين متجر ووكومرس وحمايته وأخذ نسخ احتياطية منه التسويق لمتجر ووكومرس: ربط المتجر بأدوات جوجل والترويج له عبر seo وإعلانات فيسبوك والبريد الإلكتروني
    1 نقطة
    الكتاب قدم لي المعرفة التي كنت أحتاجها، فرغم انضمامي لمجال التصميم منذ بضعة أشهر إلا أنني اكتفيت بتقليد بعض التصاميم، وبعد قِراءة الكتاب حاولت بناء تصميم من الصفر كتطبيق عملي لما قرات ونجحت في ذلك أشكر الأستاذ محمد زاهر على جهوده المباركة وكتبت ملخص للكتاب ونشرته في مدونتي على الرابط أدناه https://salwa569540860.wordpress.com/2021/08/22/كيف-تحترف-التصميم-الجرافيكي-دون-موهبة/
    1 نقطة
    لكل من مرّ على صفحتي ولكل من قام بتحميل نسخته من الكتاب جزيل شكري وامتناني، واسأل الله أن يوفقكم وييسر لكم الخير
    1 نقطة
×
×
  • أضف...