2015-09-14 9 views
5

मैं प्रत्येक पृष्ठ पर एक नौसेना बार दिखाना चाहता हूं। PHP में, मैं नेविगेशन बार लिखूंगा और फिर इसे अन्य पृष्ठों पर शामिल करूंगा। मैंने अन्य टेम्पलेट्स में नेविगेशन बार टेम्पलेट को शामिल या विस्तार करने का प्रयास किया, लेकिन यह काम नहीं किया। यह केवल आउटपुट करता है "यह होम पेज है।" मैं प्रत्येक टेम्पलेट में एनएवी बार को सही तरीके से कैसे शामिल करूं?सभी टेम्पलेट्स पर एक नेविगेशन बार जोड़ें

layout.html

<!doctype html> 
<html> 
    <body> 
     {% block navbar %} 
      <style> 
       body { 
        margin: 0; 
        padding: 0; 
       } 

       div{ 
        background: #333; 
        color: #f9f9f9; 
        width: 100%; 
        height: 50px; 
        line-height: 50px; 
        text-align: center; 
       } 
      </style> 

      <div>NAVBAR</div> 
     {% endblock %} 

     {% block content %} 
     {% endblock %} 
    </body> 
</html> 

index.html

This is the home page. 
{% extends "layout.html" %} 

{% block navbar %} {% endblock %} 

{% block content %} 
    <h1>This is the homepage!</h1> 
{% endblock %} 

उत्तर

6

लेआउट और नेविगेशन के साथ एक आधार टेम्पलेट बनाएं जो सभी पृष्ठों के लिए आम होगा। फिर वास्तविक पेज बनाने के लिए इस टेम्पलेट का विस्तार करें। आधार टेम्पलेट में ब्लॉक जोड़ें जो दूसरों में ओवरराइड हो सकता है।

base.html

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"/> 
     <title>{% block title %} - My Site</title> 
    </head> 
    <body> 
     <div>Navbar</div> 
     {% block content %}{% endblock %} 
    </body> 
</html> 

index.html

{% extends 'base.html' %} 

{% block content %} 
<h3>{% block title %}Home{% endblock %}</h3> 
<p>Hello, World!</p> 
{% endblock %} 

ध्यान दें कि नेवबार सिर्फ आधार टेम्पलेट में परिभाषित किया गया है। इसे किसी ब्लॉक की आवश्यकता नहीं है, और इसके बाद बच्चे टेम्पलेट्स की सामग्री को प्रतिस्थापित किया जाएगा।

+2

@ टोनीली अपने अगले प्रश्न को एंटीसीएपेट करने के लिए, यहां बताया गया है कि [प्रत्येक टेम्पलेट के लिए एनएवी बार में सक्रिय लिंक सेट करें] (http://stackoverflow.com/a/21992246/400617) – davidism

-1

आप हर पृष्ठ में एक ही नेवबार का उपयोग करना चाहते हैं, तो आप layout.html में {% block navbar %}...{% endblock %} जरूरत नहीं है। वैकल्पिक रूप से, here वर्णित के रूप में आपको {{ super() }} का उपयोग करना पड़ सकता है।

3

आप प्रत्येक पृष्ठ में एनएवी बार शामिल कर सकते हैं।

nav.html

<style> 
    body { 
     margin: 0; 
     padding: 0; 
    } 

    div{ 
     background: #333; 
     color: #f9f9f9; 
     width: 100%; 
     height: 50px; 
     line-height: 50px; 
     text-align: center; 
    } 
</style> 

<div>NAVBAR</div> 

layout.html: ध्यान दें {% include 'nav.html' %}

<!doctype html> 
<html> 
    <body> 
    {% include 'nav.html' %} 

    {% block content %} 
    {% endblock %} 
    </body> 
</html> 

index.html

{% extends "layout.html" %} 

{% block content %} 
    <h1>This is the homepage!</h1> 
{% endblock %} 

कभी कभी, यह आप वेब पेज डिजाइन करने के लिए एक अच्छा तरीका है। आप पेज को तोड़ते हैं, उदाहरण के लिए: head.html, nav.html, footer.html ... आप उन्हें लेआउट.html में उनका उपयोग करने के लिए शामिल कर सकते हैं।

+0

धन्यवाद। '{% शामिल 'nav.html'%} 'वही है जो मैं ढूंढ रहा था। मैं नेविबार, आसान संपादन के स्वैपिंग की अनुमति देने के लिए अलग-अलग फाइलों में स्पष्ट रूप से अपना आधार और navbar (आदि) रखना चाहता था। लेकिन मुझे net.html में navbar.html को "आयात" करने का तरीका नहीं मिला। –

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