में सशर्त टेम्पलेट का विस्तार निम्नलिखित वृक्ष संरचना लें:टहनी
├───base
│ ├───0001
│ │ └───pages
│ │ file.twig
│ │ file_content.twig
│ └───ext
│ └───store
│ │ └───pages
│ │ └───all
│ │ │ file.twig
│ │ └───0001
│ │ file.twig
│ └───newsletter
│ └───pages
│ └───all
│ │ file.twig
│ └───0001
│ file.twig
└───pages
│ file.twig
└───0001
file.twig
जैसा कि आप देख सकते हैं, वहाँ चारों ओर बिखरे हुए file.twig
का भार है।
मैं फ़ाइल base/0001/pages/file_content.twig
फ़ाइल की सामग्री प्रस्तुत करना चाहता हूं।
लेकिन, मैं चाहता हूँ कि निम्न फ़ाइलें ब्लॉक के अंदर सामग्री बदल सकते हैं:
ext/<...>/pages/0001/file.twig
ext/<...>/pages/all/file.twig
/pages/0001/file.twig
/pages/file.twig
लेकिन, इन फ़ाइलों को हो सकता है या नहीं हो सकता मौजूद है, हो सकता है या नहीं भी हो सकता है और किसी भी ब्लॉक की सामग्री को बदलने में सक्षम होना चाहिए।
क्या यह काम करने का कोई तरीका है?
{% embed 'base/pages/file_content.twig' %}
{% block page_file %}
{{ parent() }}
{% if data.store_enabled %}
{% include [
'base/ext/store/pages/0001/file.twig',
'base/ext/store/pages/all/file.twig'
] ignore missing
%}
{% endif %}
{% include ['pages/0001/file.twig', 'pages/file.twig'] ignore missing %}
{% endblock %}
{% endembed %}
यह "काम", इस अर्थ में कि यह पेज से प्रस्तुत होती है किसी भी ब्लॉक overrided किए जाने की अनुमति नहीं है में:
अब तक, मैं निम्नलिखित है।
मैं यह काम कैसे कर सकता हूं? है
├───base
│ ├───0001
│ │ └───pages
│ │ file.twig
│ │ file_content.twig
│ └───ext
│ └───store
│ │ └───pages
│ │ └───0001
│ │ file.twig
└───pages
file.twig
फ़ाइल base/0001/pages/file_content.twig
निम्नलिखित:
उदाहरण के लिए, फ़ाइलों की इस संरचना पर विचार करें (हाँ, फ़ाइलें अनुपलब्ध हैं, और कहा कि उम्मीद है)
{% block page_file %}
{% block title %}<h1>Nice title</h1>{% endblock %}
{% block price %}{% endblock %}
<div class="clearfix"></div>
{% endblock %}
फ़ाइल base/ext/store/pages/0001/file.twig
में निम्न सामग्री है:
{% block price %}<span class="price">55 €</span>{% endblock %}
और फ़ाइल pages/file.twig
है:
{% block title %}{{ parent() }}<hr>{% endblock %}
{% block price %}<div>{{ parent() }}</div>{% endblock %}
उत्पादन मैं उम्मीद है निम्नलिखित:
<h1>Nice title</h1><hr>
<div><span class="price">55 €</span</div>
<div class="clearfix"></div>
लेकिन उस कोड के साथ, अन्य सभी फ़ाइलों 'परिवर्तन अनदेखा किया जा रहा है और उत्पादन किया जा रहा है केवल निम्नलिखित:
<h1>Nice title</h1>
<div class="clearfix"></div>
नोट:
ऐसा नहीं है कि मैं टहनी 1.33.2 उपयोग कर रहा हूँ, और Twig_Autoloader::register();
विधि का उपयोग कर सूचना के लिए महत्वपूर्ण है।
मैं Twig 2.x का उपयोग नहीं कर सकता, क्योंकि इसे PHP 7.0+ की आवश्यकता है और मैं PHP 5.3.29 तक सीमित हूं।
'उपेक्षा missing' भी एम्बेड नोड – DarkBee
@DarkBee के लिए उपलब्ध है लेकिन आप केवल 1 फ़ाइल एम्बेड कर सकते हैं, और' use' किसी भी 'missing' –
उपेक्षा क्या करें की अनुमति नहीं है आप केवल एक एम्बेड शामिल करने के साथ मतलब है? वर्तमान सेटअप में पहला पाया गया टेम्पलेट शामिल होगा और इसे प्रदर्शित करेगा? यदि आपका मतलब है कि एम्बेड के अंदर एक एम्बेड डालना है, तो यह संभव है [यहां] (https://twigfiddle.com/y9q0yp) – DarkBee