रेंडर और नोड द्वारा जोड़े गए डिव को हटाना


15

मैं Drupal 7 के लिए एक HTML5 टेम्पलेट बनाने की कोशिश कर रहा हूं, और मैं स्वच्छ कोड के बारे में काफी विशेष हूं। मैं HTML और CSS पर पूर्ण नियंत्रण चाहता हूं, जो कि अधिकांश भाग के लिए मुझे अपने स्वयं के कस्टम थीम का उपयोग करने के लिए मिलता है। दूसरे शब्दों में, मेरे पास एक HTML5 और सीएसएस सेट है जिसे मैं बिल्कुल वैसे ही उपयोग करना चाहता हूं जैसा कि Drupal में है। मैं इस बात से भी नहीं जूझ रहा हूं कि पूरी प्री-प्रोसेस फंक्शन चीज कैसे काम करती है।

जब मैं अपने पेज में 'प्रिंट रेंडर ($ पेज [' कंटेंट ')' 'का उपयोग करता हूं। यह फाइल जुड़ती है

<div class="region region-content"> 
    <div id="block-system-main" class="block block-system"> 
        <div class="content">

और फिर जब मैं नोड में 'प्रिंट रेंडर ($ सामग्री)' जोड़ता हूं - custom.tpl.php यह जोड़ता है

<div class="field field-name-body field-type-text-with-summary field-label-hidden">
    <div class="field-items">
        <div class="field-item even" property="content:encoded">

मैं इनमें से किसी भी विभाग को नहीं चाहता। मैं इनसे कैसे छुटकारा पाऊं?


मैं $ नोड-> बॉडी [$ नोड-> भाषा] [0] ['मूल्य'] का उपयोग कर सकता हूं; यह प्रदर्शित करने के लिए कि मैं page.tpl.php के अंदर क्या चाहता हूं, लेकिन तब मैं प्रत्येक सामग्री प्रकार के लिए कस्टम नोड.tpl.php पृष्ठों का उपयोग करने में सक्षम होने का लाभ खो देता हूं। इसका मतलब है कि मैं page.tpl.php के अंदर सशर्त वक्तव्यों का उपयोग कर सकता हूं, जो मैं चाहता हूं कि प्रत्येक सामग्री प्रकार के लिए विभिन्न कक्षाएं जोड़ने के लिए, लेकिन यह एक गड़बड़ समाधान लगता है।
जैक मैकेंजी

जवाबों:


17

आपके द्वारा $ पृष्ठ ['सामग्री' के अंदर देखी जाने वाली div ids और कक्षाएं [.t Content]] से आती हैं ।.t.t.php> block.tpl.php> node.tpl.php Drupal सामग्री इन टेम्पलेट फ़ाइलों से गुजरती है, प्रत्येक चरण कुछ divs जोड़ता है।

  • पहला कदम

Region.tpl.php फ़ाइल में निम्नानुसार कोड होता है

       <?php if ($content): ?>
  <div class="<?php print $classes; ?>">
    <?php print $content; ?>
  </div>
<?php endif; ?>

अब यदि आप इस फ़ाइल में परिवर्तन करते हैं तो यह आपके पृष्ठ के सभी क्षेत्रों को प्रभावित करेगा। यदि आप केवल सामग्री क्षेत्र को नियंत्रित करना चाहते हैं, तो एक नया फ़ाइल नाम क्षेत्र बनाएं - content.tpl.php केवल उस फ़ाइल पेस्ट में

<?php if ($content): ?>

    <?php print $content; ?>

<?php endif; ?>

यह केवल सामग्री क्षेत्र के लिए बनाए गए div से छुटकारा दिलाएगा।

  • दूसरा चरण

एक कॉपी बनाओ (अगर हम block.tpl.php में बदलाव करते हैं तो सभी ब्लॉक block.tpl.php के प्रभावित होंगे) और इसे ब्लॉक का नाम दें - content.tpl.php और divs को हटा दें या बदल दें। डिव के बिना फाइल में आउटपुट कंटेंट के लिए निम्न कोड होगा।

<?php print render($title_prefix); ?>
    <?php if ($block->subject): ?>
      <h2 class="block-title"<?php print $title_attributes; ?>><?php print $block->subject ?></h2>
    <?php endif;?>
      <?php print render($title_suffix); ?>
      <?php print $content; ?>

इससे bock.tpl.php द्वारा निर्मित div से छुटकारा मिलेगा

  • तीसरा कदम

अब divs को हटाने या बदलने के लिए node.tpl.php फ़ाइल को संपादित करें। डिव के बिना फाइल में आउटपुट कंटेंट के लिए निम्न कोड होगा। > ">

    <?php print $user_picture; ?>

    <?php if ($display_submitted): ?>
      <span class="submitted"><?php print $date; ?><?php print $name; ?></span>
    <?php endif; ?>


        <?php
          // We hide the comments and links now so that we can render them later.
        hide($content['comments']);
        hide($content['links']);
        print render($content);
       ?>


    <?php if (!empty($content['links']['terms'])): ?>
      <?php print render($content['links']['terms']); ?>
    <?php endif;?>

    <?php if (!empty($content['links'])): ?>
        <?php print render($content['links']); ?>
      <?php endif; ?>




<?php print render($content['comments']); ?>

इससे सभी div और classes को छुटकारा मिलेगा। अब आप सामग्री को अपने स्वयं के divs के साथ लपेट सकते हैं। कृपया मुझे बताएं कि क्या यह आपके लिए काम करता है।


हाय dkiscool, अपने अच्छी तरह से समझाया जवाब के लिए धन्यवाद। अब तक मुझे वहां आधा रास्ता मिल गया है। Block.tpl.php और region.tpl.php परिवर्तनों का उपयोग करके मुझे पहले तीन divs (यानी मेरे प्रश्न में शीर्ष सेट) से छुटकारा पाने में सक्षम किया गया। हालाँकि अब मेरे नोड .pl.php फ़ाइल में केवल एक पंक्ति है: print render($content);लेकिन दूसरी तीन डिव्स बनी हुई हैं। मुझे पता है कि जब मैं ठीक के माध्यम से फाइल में कुछ पाठ जोड़ता हूं, तो सही नोड फ़ाइल उठाता हूं।
जैक मैकेंजी

4
मुझे लगता है कि मैंने इसे हल कर लिया है, आप पर से मुझे सही दिशा में इशारा करते हुए। मैंने एक field.tpl.php फ़ाइल जोड़ी, जिसमें सिर्फ एक पंक्ति थी foreach ($items as $delta => $item) { print render($item); }। कोई भी व्यक्ति एक पूर्ण फ़ील्ड के साथ शुरू करना चाह सकता है। tpl.php हालाँकि मैंने कुछ पंक्तियाँ निकालीं जो कि आप जो करना चाह रहे हैं उसके आधार पर महत्वपूर्ण हो सकता है। इस फ़ाइल के द्वारा अंतिम तीन डिविजन जोड़े जा रहे थे - हालाँकि मैं इस बात में थोड़ा भ्रमित हूँ कि प्रलेखन का कहना है कि इस फ़ाइल का उपयोग नहीं किया गया है और यह केवल एक कस्टमाइज़िंग शुरुआती बिंदु के लिए प्रदान किया गया है।
जैक मैकेंजी

-2

मेरे लिए पूरी तरह से क्या काम करता है: strip_tags(render($var));


यह रास्ता नहीं है। थीम फ़ंक्शन या प्रीप्रोसेस फ़ंक्शन का उपयोग करें।
गागरिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.