2009-12-07 19 views
8

मुझे दिलचस्पी है कि अन्य लोग वेबसाइट नेविगेशन कैसे संभालते हैं। स्टाइल या उपयोगिता हिस्सा नहीं, बल्कि पीढ़ी का हिस्सा है। अधिकांश वेबसाइटों में किसी प्रकार का "नेविगेशन ट्री" होता है जो एक या अधिक मेनू स्तरों के रूप में प्रदर्शित होता है - आप इस पेड़ को किस प्रकार से सहेजते हैं और संसाधित करते हैं? सबसे सरल समाधान एक स्थिर मेनू टेम्पलेट है, इस तरह कुछ:आप वेबसाइट नेविगेशन कैसे उत्पन्न करते हैं?

<ul id="menu"> 
    <li><a href="…">One</a></li> 
    <li><a href="…">Two</a></li> 
    <li><a href="…">Three</a></li> 
</ul> 

लेकिन यह बहुत लचीला नहीं है। आप मेनू में वर्तमान पृष्ठ को बस चिह्नित नहीं कर सकते हैं और वर्तमान पृष्ठ के आधार पर मेनू पेड़ के हिस्से को दिखाने या छिपाने का कोई आसान तरीका नहीं है।

मैं एक नेविगेशन ट्री के साथ आया था, कुछ इस तरह (या यह क्या है?):

 
    - title: Fruits 
     nodes: 
     - title: Apples 
     - title: Oranges 
     - title: Bananas 
    - title: Music and Stuff 
     url: music 
     nodes: 
     - title: Classical 
     - title: Jazz 

इस पेड़ एक विशेष Navigation वर्ग है कि मौजूदा अनुरोध के आधार पर नेविगेशन के कुछ हिस्सों में काम कर सकते द्वारा लोड हो जाता है पथ। ऐसा लगता है कि यह थोड़ा बेहतर काम करता है, लेकिन फिर भी मैं अन्य लोगों के समाधानों के बारे में बहुत उत्सुक हूं।

उत्तर

6

MySQL एक लेख "Managing Hierarchical Data in MySQL" हकदार जो मैं पहले काफी अमूल्य हो पाया है है ASP.NET है। यह गतिशील नेविगेशन और उनकी सीमाओं को संग्रहीत करने के लिए दो सामान्य तकनीकों पर चर्चा करता है।

+1

+1 विशेष रूप से नेस्टेड सेट सामान के लिए ग्रेट संसाधन। – Yacoby

+0

लिंक के लिए –

+0

मैं इस स्वीकार्य को चिह्नित कर रहा हूं, भले ही कोई 'सही' समाधान न हो। (मैं इसे लोगों को अच्छे उत्तरों के लिए प्रतिष्ठा अंक देने के लिए एक सीडब्ल्यू नहीं बनाना चाहता था।) – zoul

5

अपने स्वाद, Sitemaps काम महान

+0

पर्ल/उत्प्रेरक यहां, लेकिन धन्यवाद, यह उपयोगी है। – zoul

+1

हां। वे साइटमैप युक्त एक एक्सएमएल फ़ाइल पर भरोसा करते हैं। यदि आप ASP.Net का उपयोग नहीं कर रहे हैं, तो भी आप एक एक्सएमएल-आधारित समाधान का उपयोग करने में सक्षम हो सकते हैं। लिंक – DOK

-2

गूगल वेबमास्टर उपकरण साइटमैप बनाने तथा प्रबंधन के लिए कुछ उपयोगी विचारों और सहायता प्रदान करता है:

+0

साइटमैप (उस संदर्भ में) खोज इंजन के लिए भोजन हैं, नेविगेशन नहीं। – Quentin

+0

मेरा बुरा, मैंने सवाल को गलत तरीके से पढ़ा ... – Upgradingdave

1

एसक्यूएल सर्वर 2008 एक गंधा नए डेटाप्रकार "HierarchyID" कहा जाता है, जो पदानुक्रमित डेटा के साथ काम करने के सिरदर्द के लॉट को दूर ले जाता है।

4

तुम मेरे उपयोगी मॉड्यूल में से एक हो सकते हैं: विधि विशेषताओं से CatalystX::Menu::Suckerfish

मेनू संरचना उत्पन्न होता है। इसमें वर्तमान पृष्ठ की मेनू प्रविष्टि की स्थिति को बदलने का कोई तरीका नहीं है, लेकिन इसे जोड़ना मुश्किल नहीं होना चाहिए।

विधि विशेषताएं मनमाने ढंग से स्ट्रिंग्स मेनूपैथ और मेनूटाइटल हैं जो पेड़ में मेनू विकल्प के लिए स्लैश-सीमांकित पथ निर्दिष्ट करती हैं और एक स्ट्रिंग जो मेन्यू विकल्प लेबल और एचटीएमएल शीर्षक विशेषता के रूप में उपयोग की जाती है, जहां लागू हो।

3

हम डेटाबेस में संग्रहीत मेनू पदानुक्रम के साथ आपके समान दृष्टिकोण का उपयोग करते हैं। इसके बजाय प्रेषण विधियों के आधार पर मेनू संरचना को स्वतः उत्पन्न करना अच्छा होगा, लेकिन डीबी दृष्टिकोण के अन्य फायदे हैं। उदाहरण के लिए, हम एप्लिकेशन को पुनर्निर्माण किए बिना एक्सेस को बदल/प्रतिबंधित कर सकते हैं, और हम मेनू आइटम बना सकते हैं जो प्रेषण पेड़ को मानचित्र नहीं करते हैं, जैसे बाहरी लिंक। हम मनमाने ढंग से वर्बोज़ लेबल भी प्रदान कर सकते हैं जो मनुष्यों के लिए चीजों को आसान बनाने के लिए, प्रेषण पथ पर जरूरी नहीं है।

मुख्य नुकसान (प्रेषण पेड़ को डुप्लिकेट करने के अलावा) यह है कि वास्तव में MySQL में पदानुक्रमित डेटा का प्रबंधन थोड़ा अजीब है। उस विषय पर एक अच्छे संसाधन के लिए cballou's answer देखें।

2

जब पेड़ के हिस्सों के दिखने और छिपाने की बात आती है, तो सीएसएस आपका मित्र है।

उदाहरण के लिए, अपने फल सबमेनू हो सकता है

id="fruitmenu"

आप अपनी शैली पत्रक के शीर्ष पर

display:none;

करने के लिए सभी सबमेनू निर्धारित किया है।

फिर आप प्रत्येक पृष्ठ के बॉडी टैग में एक आईडी का उपयोग एक और विशिष्ट नियम के अनुसार उन्हें दृश्यमान बनाने के लिए करते हैं।

अपने फल पेज है, जो है

<body id="fruitpage">

पर उदाहरण के लिए

तो

फल सबमेनू दिखाई, क्योंकि यह की तरह

#fruitpage #fruitmenu {display:block;}

+0

मैं स्थिर वेबसाइटों पर यही करता हूं, लेकिन मैं (1) नियमों की मात्रा को पसंद नहीं करता हूं और (2) हर बार थोड़ा दोषी महसूस करता हूं I वर्तमान मेनू आइटम का नाटक करने के लिए 'कर्सर' प्रॉपर्टी को बदलें क्लिक करने योग्य नहीं है :) – zoul

+0

मुझे नहीं पता कि आपको कर्सर को क्यों बदलना होगा - निश्चित रूप से एक छिपी हुई सूची के शीर्ष पर हेडवर्ड क्लिक करने योग्य है? और आप सीएसएस में नियमों को जोड़ सकते हैं! अल्पविराम के साथ एक लंबा नियम। – AmbroseChapel

+0

क्षमा करें, आपकी टिप्पणी याद आ गई। कभी-कभी पूरा मेनू दृश्यमान होता है, केवल वर्तमान आइटम को हाइलाइट किया जाता है और क्लिक करने योग्य नहीं होता है। यह तब होता है जब मुझे 'कर्सर' संपत्ति के साथ 'धोखा' करना पड़ता है। और 'body.foo # foo' नियमों को गठबंधन करने का कोई तरीका नहीं है, है ना? यदि उपमेनू के साथ 10 पृष्ठ थे, तो मुझे 10 'body.foo # foo' नियम लिखना होगा। (साझा किए गए 'प्रदर्शन' खंड के साथ, सुनिश्चित करें।) यह पुराना जल्दी हो जाता है, मैं एक पुन: प्रयोज्य वर्ग लिखूंगा जो मेनू से मेनू उत्पन्न करता है। – zoul

संबंधित मुद्दे