রেন্ডার এবং node.tpl.php দ্বারা যোগ ডিভগুলি সরানো


15

আমি ড্রুপাল 7 এর জন্য একটি এইচটিএমএল 5 টেম্পলেট তৈরি করার চেষ্টা করছি, এবং আমি পরিষ্কার কোড সম্পর্কে বেশ বিশেষ। আমি এইচটিএমএল এবং সিএসএসের উপর সম্পূর্ণ নিয়ন্ত্রণ চাই যা বেশিরভাগ অংশে আমি আমার নিজস্ব কাস্টম থিম ব্যবহার করি। অন্য কথায় আমার কাছে একটি এইচটিএমএল 5 এবং সিএসএস সেট রয়েছে যা আমি ড্রুপালের মতো ব্যবহার করতে চাই। পুরো প্রাক-প্রক্রিয়া ফাংশন জিনিসটি কীভাবে কাজ করে সে সম্পর্কে আমি খুব একটা আঁকড়ে নেই।

আমি যখন আমার পৃষ্ঠায় 'মুদ্রণ রেন্ডার ($ পৃষ্ঠা [' বিষয়বস্তু ']]) ব্যবহার করি তখন এটি যুক্ত হয়

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

এবং তারপরে আমি নোডে 'প্রিন্ট রেন্ডার ($ বিষয়বস্তু)' যুক্ত করি - কাস্টম.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] ['মান']; আমি পেজ.tpl.php এর ভিতরে যা দেখতে চাই তা প্রদর্শন করতে, তবে তারপরে আমি প্রতিটি সামগ্রীর ধরণের জন্য কাস্টম নোড.tpl.php পৃষ্ঠাগুলি ব্যবহার করতে সক্ষম হবার সুবিধাটি হারাব। এর অর্থ, আমি যা চাই তা পাওয়ার জন্য প্রতিটি কন্টেন্টের জন্য বিভিন্ন ক্লাস যুক্ত করার জন্য পৃষ্ঠা.tpl.php এর ভিতরে শর্তাধীন বিবৃতি ব্যবহার করতে পারি, তবে এটি একটি অগোছালো সমাধান বলে মনে হচ্ছে।
জ্যাক ম্যাককেঞ্জি

উত্তর:


16

আপনি div পৃষ্ঠার ভিতরে 'ডিভিড আইডি এবং ক্লাসগুলি দেখতে পাচ্ছেন [' বিষয়বস্তু '] অঞ্চল থেকে আসে t

  • প্রথম ধাপ

অঞ্চল.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; ?>

এটি কেবলমাত্র সামগ্রী অঞ্চলের জন্য তৈরি ডিভ থেকে মুক্তি পাবে।

  • ধাপ দুই

Block.tpl.php এর একটি অনুলিপি (যদি আমরা block.tpl.php পরিবর্তন করি তবে সমস্ত ব্লক কার্যকর হবে) এবং এটির নাম ব্লক করুন - Content.tpl.php এবং ডিভগুলি মুছে ফেলুন বা পরিবর্তন করুন। ডিভগুলি ছাড়াই ফাইলটিতে আউটপুট সামগ্রীতে নিম্নলিখিত কোডটি থাকবে।

<?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 দ্বারা নির্মিত ডিভ থেকে মুক্তি পাবে

  • পদক্ষেপ তিন

ডিভগুলি অপসারণ বা পরিবর্তন করতে এখন নোড.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']); ?>

এটি সমস্ত ডিভ এবং ক্লাস থেকে মুক্তি পাবে। এখন আপনি নিজের ডিভ দিয়ে কন্টেন্টটি মোড়ানো করতে পারেন। এটি আপনার পক্ষে কাজ করে কিনা তা আমাকে জানান।


হাই ডিস্কিসুল, আপনার সুস্পষ্ট বর্ণিত উত্তরের জন্য ধন্যবাদ। এখন পর্যন্ত আমি সেখানে অর্ধেক পথ পেয়েছি। Block.tpl.php এবং অঞ্চল.tpl.php পরিবর্তনগুলি ব্যবহার করে আমাকে প্রথম তিনটি ডিভ (যেমন আমার প্রশ্নের শীর্ষ সেট) থেকে মুক্তি পেতে সক্ষম করে। তবে আমার node.tpl.php ফাইলটিতে এখন কেবল একটি লাইন রয়েছে: print render($content);তবে দ্বিতীয় তিনটি ডিভ বাকি রয়েছে। আমি জানি যে এর সঠিক নোড ফাইলটি বাছাই করা যেমন আমি যখন ফাইলে কিছু পাঠ্য যুক্ত করি তবে তা সূক্ষ্মভাবে আসে।
জ্যাক ম্যাককেঞ্জি

4
আমি মনে করি আমি এটি সমাধান করেছি, আপনার পক্ষ থেকে আমাকে সঠিক দিকে নির্দেশ করে। আমি একটি ফিল্ড.tpl.php ফাইল যুক্ত করেছি যাতে কেবল একটি লাইন রয়েছে foreach ($items as $delta => $item) { print render($item); }। অন্য যে কেউ একটি পূর্ণ ফিল্ড.tpl.php দিয়ে শুরু করতে চাইতে পারে কারণ আমি কয়েকটি লাইন বের করেছি যা আপনি যা করতে চেষ্টা করছেন তার উপর নির্ভর করে গুরুত্বপূর্ণ হতে পারে। এই ফাইলটির মাধ্যমে চূড়ান্ত তিনটি ডিভ যোগ করা হয়েছিল - যদিও আমি কিছুটা বিভ্রান্ত হয়েছি যে ডকুমেন্টেশন বলছে যে এই ফাইলটি ব্যবহৃত হয়নি এবং এটি কেবলমাত্র একটি কাস্টমাইজেশন শুরুর পয়েন্টের জন্য সরবরাহ করা হয়েছে।
জ্যাক ম্যাককেঞ্জি

-2

আমার জন্য যা নিখুঁতভাবে কাজ করে তা হ'ল: strip_tags(render($var));


এটি যাওয়ার উপায় নয়। থিম ফাংশন বা প্রাকপ্রসেস ফাংশন ব্যবহার করুন।
গাগারাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.