उत्पादों और श्रेणियों की कार्यक्षमता बनाने से पहले, आइए सोचें कि हमारे ग्राहकों और साइट प्रशासकों को कौन सी जानकारी की आवश्यकता होगी। उत्पाद के बारे में पर्याप्त जानकारी प्रदान करना आवश्यक है — हमें उत्पाद का नाम, उसका विस्तृत विवरण और उसकी कीमत दिखानी चाहिए। हम उत्पाद की मुख्य तस्वीर और अतिरिक्त छवियाँ भी जोड़ सकते हैं। डिलीवरी की लागत की गणना के लिए उत्पाद का वजन भी आवश्यक हो सकता है। हमें स्टॉक में वस्तुओं की मात्रा भी चाहिए ताकि ऐसी वस्तु न बेची जाए जो उपलब्ध नहीं है। साइट के प्रशासक के लिए उत्पाद ID और खोज इंजनों के लिए एक पठनीय URL की आवश्यकता होगी।
अंततः, हमारे पास कम से कम निम्नलिखित फ़ील्ड होने चाहिए:
डेटा |
विवरण |
ID |
साइट की आंतरिक कार्यप्रणाली के लिए उत्पाद संख्या |
Name |
उत्पाद का नाम |
Slug (ЧПУ) |
मुख्य रूप से खोज इंजनों के लिए आवश्यक |
Description |
उत्पाद का विस्तृत विवरण |
SKU |
उपयोगकर्ताओं के लिए उत्पाद कोड |
Price |
उत्पाद की कीमत |
Stock |
स्टॉक में उत्पाद की मात्रा |
Primary image |
मुख्य छवि |
Additional images |
अतिरिक्त छवियाँ |
आगामी लेखों में हम इस सूची का विस्तार करेंगे, लेकिन अभी के लिए यह पर्याप्त है।
उत्पाद श्रेणियों के अपने फ़ील्ड होते हैं:
डेटा |
विवरण |
ID |
साइट की आंतरिक कार्यप्रणाली के लिए श्रेणी संख्या |
Name |
श्रेणी का नाम |
Description |
श्रेणी का विवरण |
Slug (ЧПУ) |
खोज इंजनों के लिए पठनीय URL |
हम डेटा संरचना और हमारे फ्रेमवर्क की सहायता से उत्पादों और श्रेणियों को प्रदर्शित करने की कार्यक्षमता को अभी बना सकते थे, लेकिन यदि हम ऐसा करते, तो हम संभावित लचीलापन खो देते। अधिकांश सामग्री में सामान्य जानकारी होती है। यदि हम उस सामान्य जानकारी की पहचान करें और एक अमूर्त सामग्री प्रकार बनाएं, तो हमारा फ्रेमवर्क अधिक लचीला होगा। हम विभिन्न प्रकार की सामग्री के लिए एक ही कार्यक्षमता का उपयोग कर सकते हैं बिना कोड को दोहराए। ऐसी कार्यक्षमताओं में शामिल हो सकते हैं:
- सामग्री का संस्करण नियंत्रण
- प्रवेश अधिकारों का विभाजन
- सामग्री, पृष्ठों और उत्पादों पर टिप्पणियाँ
- पृष्ठों और उत्पादों के लिए रेटिंग
पृष्ठ (Pages)
पृष्ठ हमारे साइट के स्थिर अनुभाग होंगे — जैसे संपर्क जानकारी, डिलीवरी और भुगतान जानकारी आदि। इन पृष्ठों के डेटा इस प्रकार होंगे:
डेटा |
विवरण |
Имя |
पृष्ठ का नाम |
ЧПУ |
पृष्ठ का URL |
ID |
पृष्ठ की आंतरिक संख्या |
Heading |
h1 टैग की सामग्री |
Title |
<title> टैग की सामग्री |
Content |
पृष्ठ की सामग्री |
Keywords |
मेटा कीवर्ड टैग की सामग्री |
Description |
मेटा विवरण टैग की सामग्री |
Content
पृष्ठ हमारी मुख्य सामग्री प्रकार हैं, जिन्हें हम भविष्य में अतिरिक्त फ़ील्ड्स जोड़कर विस्तारित करेंगे। श्रेणी पृष्ठ भी ऐसे ही पृष्ठ होंगे, बस उनमें उत्पादों से संबंधित अतिरिक्त फ़ील्ड्स होंगी।
डेटा |
विवरण |
ID |
आंतरिक कार्यप्रणाली के लिए नंबर |
Name |
सामग्री का नाम |
ЧПУ |
पठनीय URL |
Content |
सामग्री पृष्ठ की सामग्री |
Type |
सामग्री का प्रकार (उदाहरण: page, product, category) |
Order |
सामग्री का क्रम, जैसे मेनू आइटम के लिए |
Parent |
अभिभावक सामग्री, जैसे उप-श्रेणियों या पृष्ठ कैटलॉग के लिए |
Meta keywords |
कुंजीशब्द |
Meta description |
मेटा विवरण |
Date created |
निर्माण की तिथि |
Creator |
सामग्री का लेखक |
Active |
क्या सामग्री उपयोगकर्ताओं को दिखाई जाएगी या नहीं |
Secure |
प्रवेश नियंत्रण के लिए फ़ील्ड (केवल पंजीकृत उपयोगकर्ताओं के लिए) |
Revisions
Drupal की तरह, हमारे पास भी एक संशोधन प्रणाली (revision system) होगी।
डेटा |
विवरण |
ID |
सामग्री की आंतरिक संख्या |
Current revision |
वर्तमान संशोधन संख्या |
अब जब हमने अपने सामग्री प्रकारों की योजना बना ली है, तो हम अपनी डेटाबेस बनाना शुरू कर सकते हैं। प्रत्येक प्रकार के लिए एक अलग तालिका बनाई जाएगी। अंततः हमारे पास निम्न तालिकाएँ होंगी:
तालिका |
विवरण |
Content |
सक्रिय संस्करणों को ऐसी जानकारी से जोड़ने के लिए जो संशोधनों में नहीं बदलती, जैसे कि लेखक। |
Versions |
सामग्री के प्रत्येक संस्करण के डेटा को संग्रहीत करने के लिए |
Content types |
फ्रेमवर्क में विभिन्न सामग्री प्रकारों को रिकॉर्ड करने और सामग्री को उनसे जोड़ने के लिए |
Products |
उत्पाद डेटा का विस्तार करने के लिए |
Revision history |
संशोधन इतिहास को संग्रहीत करने के लिए |
Content
साइट की सभी सामग्री इस तालिका में संग्रहीत होगी। यदि हमें किसी सामग्री प्रकार को विस्तारित करना है, तो हम एक नई तालिका बनाएंगे। उदाहरण के लिए, उत्पादों को Content तालिका में संग्रहीत किया जाएगा, लेकिन वे Products तालिका से ID के माध्यम से जुड़े होंगे।
फ़ील्ड |
प्रकार |
विवरण |
ID |
Integer (auto increment) |
अन्य तालिकाओं से लिंक करने के लिए |
Current_revision |
Integer |
संशोधन तालिका से संबंध |
Active |
Boolean |
सामग्री प्रकाशित है या नहीं |
Secure |
Boolean |
केवल लॉग इन उपयोगकर्ताओं के लिए सामग्री उपलब्ध है या नहीं |
Parent |
Integer |
मुख्य सामग्री से लिंक |
Order |
Integer |
सामग्री क्रमबद्ध करने के लिए |
Author |
Integer |
सामग्री बनाने वाले उपयोगकर्ता का ID |
Type |
Integer |
सामग्री प्रकार का ID |
Path |
Varchar |
Slug या ЧПУ को संग्रहीत करने के लिए |
अब हम डेटाबेस में क्वेरी चलाकर Content तालिका बना सकते हैं:
CREATE TABLE `content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`current_revision` int(11) NOT NULL,
`active` tinyint(1) NOT NULL,
`secure` tinyint(1) NOT NULL,
`parent` int(11) NOT NULL,
`order` int(11) NOT NULL,
`author` int(11) NOT NULL,
`type` int(11) NOT NULL,
`path` char(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;