নোড শিরোনামের আগে ক্ষেত্রটি কীভাবে প্রদর্শন করবেন?


41

আমি ডি 7-তে একটি টিজার প্রদর্শন করার সময় নোডের শিরোনামের আগে একটি নির্দিষ্ট ক্ষেত্র সরবরাহ করতে চাই।

কার্যকরীভাবে আমি থেকে যেতে চাই এই জন্য এই

আমি নোড.টিপিএলপিএফপি আপডেট করার বিষয়টি দেখেছি তবে আমি লক্ষ্য করেছি যে এটি আলাদা $titleহয়ে গেছে $contentতাই আমি কীভাবে এটি পৌঁছাতে পারি তা সম্পর্কে আমি নিশ্চিত নই। কিছু অনুসন্ধানের পর পাওয়া যায় যে মানুষ ব্যবহার পরামর্শ দিয়েছেন CCK এবং ভাবা মডিউল Drupal এর -6 এ এই কাছাকাছি পেতে কিন্তু আছে যদি আরো একটি Drupal এর -7 সমাধান আমি হতাশ করছি।

কোনও পরামর্শ?


সমস্ত পিএইচপি-ভিত্তিক টেম্পলেট সমাধানগুলি ছাড়াও আপনি কেবল সিএসএসের সাহায্যে দীর্ঘ পথ যেতে পারেন। নেতিবাচক মার্জিনগুলি অনেক কিছু করতে পারে। আপনার jsfiddle উদাহরণে এটির মতো দেখাবে ।
মার্ভানজেন্ডেন্ড

আমি এটি বিবেচনা করেছি কিন্তু দীর্ঘ শিরোনামের জন্য কী হয় ?
আইরিশবাজ

আপনি একেবারে সঠিক, শিরোনামের একটি নির্দিষ্ট উচ্চতা থাকলে এটি কেবলমাত্র কাজ করে। প্রতিটি সমাধানের মতো এটির দুর্বল পয়েন্ট রয়েছে। ব্যক্তিগতভাবে, আমি মনে করি যে (আপনি যে নকশা এবং প্রযুক্তি ব্যবহার করছেন তা নির্বিশেষে) সম্পাদকদের শিক্ষিত করে দীর্ঘ শিরোনাম প্রতিরোধ করা উচিত, তবে আমি বুঝতে পারি যে এটি সর্বদা বিকল্প নয় not
মার্চভ্যান্ডেন্ড 22

উত্তর:


53

এটি ড্রপাল 7 এর সাথে সত্যিই বেশ সহজ।

সঙ্গে renderএবং hideআপনি কি জানেন একটি একক উপাদান বসানো নিয়ন্ত্রণ করতে posibility আছে $contentসব নিজের আইটেম প্রিন্ট আউট করতে মত Drupal এর 6 প্রয়োজন ছিল করেও।

সরলীকৃত নোড টেম্পলেটটি এর মতো দেখাচ্ছে:

<div>
  <h2><?php print $title; ?></h2>
  <div class="content">
    <?php print render($content); ?>
  </div>
</div>

সামান্য পরিবর্তন আপনার প্রয়োজনগুলি পরিচালনা করবে:

<div>
  <?php print render($content['field_name_of_image']); ?>
  <h2><?php print $title; ?></h2>
  <div class="content">
    <?php print render($content); ?>
  </div>
</div>

ব্যবহার করে render, আপনি একটি উপাদান আউটপুট করতে পারেন। এটি কেবল প্রিন্টিং স্টাফের চেয়ে আরও চতুর, কারণ একই জায়গায় দু'বার মুদ্রিত হওয়া এড়াতে দ্রুপাল যা রেন্ডার করেছে তা ট্র্যাক করবে। শিরোনামের উপরের ক্ষেত্রটি রেন্ডার করার সময় আপনি যখন রেন্ডার করা হয় তখন $contentযা যা রেন্ডার হয় তা সরিয়েও দিচ্ছেন।


2
খুব সুন্দর. একটি আদর্শ বিশ্বে এটি কেবলমাত্র দ্রুপালকে অন্য ক্ষেত্রের মতো শিরোনাম ক্ষেত্রের চিকিত্সা করতে বলাই ভাল তবে কমপক্ষে দ্রুপাল 7 এ আমাদের মতো সহজ সমাধান রয়েছে। গুডস @googletorp!
আইরিশবাজ

রেকর্ডের জন্য: উপরের মন্তব্যটি জাগ্রত করতে পারে তার বিপরীতে, এটি দ্রুপাল from এর থেকে খুব কমই আলাদা।
বার্ক

1
@ বার্কস: আপনি ডি 6-তে পৃথকভাবে ক্ষেত্রগুলি মুদ্রণ করলে, আপনাকে নোড টেমপ্লেট বজায় রাখতে হবে, এবং নতুন ক্ষেত্রগুলি যুক্ত করতে সক্ষম করতে কোড সম্পাদনা করতে হবে। এটি ডি 7 এর তুলনায় একটি বড় পার্থক্য যেখানে আপনি ক্ষেত্রগুলি যুক্ত করতে এবং তাদের পাশাপাশি বাছাই করতে ইউআই ব্যবহার করতে পারেন।
googletorp

রেন্ডার আসলে নতুন। তবে এর ধারণা নেই। এটি অর্জনের জন্য বেশ কয়েকটি কৌশল রয়েছে। আমি বলতে চাইনি যে ড্রুপাল 6 এ এটি ঠিক তত সহজ, পরিষ্কার এবং সুন্দর। কেবল এটি সম্ভব যে।
বার্ক

@googletorp- তে পেজ.tpl.php এ কোনও ক্ষেত্র মুদ্রণের উপায় আছে?
কোকস্কিন

9

ডিসপ্লে স্যুটটিও বেশ দুর্দান্ত।

ডিসপ্লে স্যুট আপনাকে কীভাবে আপনার সামগ্রী টানা এবং ড্রপ ইন্টারফেস ব্যবহার করে তা সম্পূর্ণ নিয়ন্ত্রণ নিতে দেয়। আপনার নোড, ভিউ, মন্তব্য, ব্যবহারকারীর ডেটা ইত্যাদির ব্যবস্থা করুন যাতে আপনি কয়েক ডজন টেম্পলেট ফাইলের মাধ্যমে কাজ না করেই চান। লেআউটগুলির একটি পূর্বনির্ধারিত তালিকা (কেবলমাত্র ডি 7) আরও বেশি টানা এবং ড্রপ মজাদার জন্য উপলভ্য!


এটি একটি দুর্দান্ত মডিউল ঠিক আছে তবে দুর্ভাগ্যক্রমে এটি কেবল শিরোনামহীন ক্ষেত্রগুলির জন্য নিয়ন্ত্রণ সরবরাহ করে বলে মনে হচ্ছে এখানে কোনও সহায়তা নেই। সব একই ধন্যবাদ।
আইরিশবাজ

আসলে এটি সত্য নয়, আপনাকে কেবলমাত্র সমস্ত প্রয়োজনীয় মডিউল ইনস্টল করতে হবে: drupal.org/project/ds , drupal.org/project/nd এবং drupal.org/project/nd_contrib
ডাইফার

@ ডিসিফার: এইচ 2 ট্যাগের উপরে কোনও চিত্র-ট্যাগ সরানোর জন্য 3 টি মডিউল ইনস্টল করা হচ্ছে? আপনি অবশ্যই মজা করছেন, :)
বার্ক

@ বার্কস - একটি ওয়েবপৃষ্ঠা প্রদর্শনের জন্য ড্রুপাল ইনস্টল করা, আপনি নিশ্চয়ই মজা করছেন? আমার বক্তব্যটি হ'ল এই মডিউলগুলি ইনস্টল করে আপনি এত কিছু করতে পারবেন ঠিক যেমন দ্রুপালের সাহায্যে আপনি এত কিছু করতে পারেন তবে আপনি এটি কোনও মেন্যালি টাস্ক সমাধান করতেও ব্যবহার করতে পারেন।
ডিসিফার

@ ডিসিফার: অবশ্যই, জেনেরিক মডিউলগুলি ইনস্টল করা আপনার সাইটে নতুন সুযোগ নিয়ে আসে। তবে কেবল চিত্রগুলির সারি প্রদর্শন করার জন্য ভিউ, ভিউ-গ্যালারী, সিসি, ফাইলফিন্ড এবং চিত্র-ক্ষেত্র ইনস্টল করার জন্য এটি খারাপ পরামর্শ। এটি ভাল পরামর্শ হবে যদি ভিউ, সিসি এবং বাকী আরও বেশি ব্যবহার করা হয় তবে কেবলমাত্র এই তালিকাগুলির তালিকা। তবে ওপি মোটেই তা উল্লেখ করেনি।
বার্ক

8

শিরোনাম মডিউলটি দেখুন - http://drupal.org/project/title । এটি আপনার দৃশ্যের জন্য কার্যকর প্রমাণিত হতে পারে। আমি কোনও কারণে এটি ইনস্টল / সক্ষম করেছি, সম্ভবত আপনার অনুরূপ, এবং এটি শিরোনাম ক্ষেত্রটি কীভাবে রাখবে তার নমনীয়তা বলে মনে হয়েছে।

আমি তখন থেকে এটি অক্ষম করে রেখেছি (এবং প্রদর্শন স্যুটটি ব্যবহার করছি), তাই আমার পুনরুদ্ধারটি কিছুটা স্কেচিযুক্ত হতে পারে।


5

এটি হ্যাকিশ সমাধান এবং আমি নিশ্চিত যে কেউ আরও মার্জিত কিছু নিয়ে আসবে, তবে আপনি যদি আটকে থাকেন এবং কেউ করেন না ...

আপনি পুরোপুরি page.tpl.phpমুদ্রণটি মুছে ফেলতে $titleএবং শিরোনাম নামে একটি নতুন কাস্টম ফিল্ড যুক্ত করতে পারেন মেশিনের নাম $ new_title বা এর মতো কিছু। তারপর নোড সম্পাদনাটি, মূল শিরোনাম বক্স লুকাতে এবং নোড সংরক্ষণ ব্যবহার কম্পিউটেড ফিল্ড বা কপি করার কিছু কাস্টম পিএইচপি উপর $new_titleথেকে $title

সর্বোপরি, পৃষ্ঠার শিরোনামটির মতো $ new_title এর মতো দেখতে কিছু সিএসএস লিখুন এবং আপনার পছন্দ অনুযায়ী যে কোনও ক্ষেত্র স্থাপন করতে সক্ষম হওয়া উচিত, কেবল ক্ষেত্রগুলি পরিচালনা করে স্ক্রিনে টেনে এনে ফেলে। আপনি অনুলিপি করেছেন $new_titleবলে $title, ব্রাউজার বারের পৃষ্ঠার শিরোনামটি এখনও কাজ করা উচিত এবং নোড শিরোনাম হারিয়ে যাওয়ার বিষয়ে কোনও অভিযোগ করা উচিত নয়।

আমি যেমন বলেছিলাম, এটি হ্যাক - তবে এটি কার্যকর হবে। তোমার আরো তথ্য জানার থাকলে আমাকে বলো


1
ফ্রেডেরিক পরামর্শের জন্য ধন্যবাদ। আপনি যেমনটি ইঙ্গিত করেছেন এটি আদর্শ থেকে অনেক দূরে তবে কয়েকটি সম্ভাব্য কাজের মাত্রার মতো দেখাচ্ছে। আমি এই সমাধানটি গ্রহণ করলে Auto_nodetitle মডিউলটি ব্যবহার করা উচিত বলে পরামর্শ দিয়ে আপনার সমাধানটিতে যুক্ত করব । আমি প্রশ্নটি আপাতত ছেড়ে দেব কারণ আমি সত্যিই আশা করি এর থেকে আরও ভাল উপায় আছে এবং আমি অনুগ্রহ শুরু করতে পারি। আপনার প্রচেষ্টার জন্য +1 করুন।
আইরিশবুজ

4

page.tpl.php (মালা)

...
      <div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
          <?php print $breadcrumb; ?>
          <?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>

          /*
           * Print custom block or var
           */
          <?php if ($custom_block): print '<div id="custom-block" class="clear-block">'. $custom_block .'</div>'; endif; ?>

          <?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block">'; endif; ?>
          <?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
          <?php if ($tabs): print '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
          <?php if ($tabs2): print '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?>
          <?php if ($show_messages && $messages): print $messages; endif; ?>
          <?php print $help; ?>
          <div class="clear-block">
            <?php print $content ?>
          </div>
          <?php print $feed_icons ?>
          <div id="footer"><?php print $footer_message . $footer ?></div>
      </div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
...

template.php

/**
 * Override or insert variables into the page template.
 */
function phptemplate_preprocess_page(&$variables) {
  $node = $variables['node'];
  if($node->type == MY_NODE_TYPE) {
    $variables['custom_block'] = 'bla bla bla';
  }
}

আমি নিশ্চিত নই যে প্রথম কোড স্নিপেট কী নতুন এবং কী বিদ্যমান তা সম্পর্কে খুব কম ইঙ্গিত দেয় বলে আমি এখানে যা চলছে তা অনুসরণ করছি। গারল্যান্ডের চেয়ে জেন থিমটিও ব্যবহার করছি যদিও প্রয়োজনীয় পরিবর্তনগুলি একই রকম হওয়া উচিত। দ্বিতীয় কোড স্নিপেটে আপনি কি একটি হুক_প্রিপ্রসেস_পেজ () প্রেরণ করছেন? আপনি আরও দৃ concrete় উদাহরণ দিয়ে প্রসারিত করতে পারেন?
আইরিশবাজ

দ্বিতীয় কোডে আমরা একটি নতুন ভেরিয়েবল 'কাস্টম_ব্লক' সংজ্ঞায়িত করেছি। প্রথম কোডের অংশটি দেখুন যেখানে আমরা 'কাস্টম_ব্লক' মুদ্রণ করছি। <? পিএইচপি যদি ($ কাস্টম_ব্লক): '<ডিভিডি আইডি = "কাস্টম-ব্লক" শ্রেণি = "ক্লিয়ার-ব্লক"> মুদ্রণ করুন। $ কাস্টম_ব্লক '</ div>'; যদি শেষ; ?> এই পরিবর্তনশীলটি উত্পন্ন করার জন্য কেবল নিয়মগুলি সংজ্ঞায়িত করুন। তাই? :)
dobeerman

4

এটি মূল পোস্টে টিজার প্রশ্নের ক্ষেত্রে প্রযোজ্য নয়, তবে যে সমস্ত লোকেরা এটিকে হোঁচট খায় এবং কেবল এটি সম্পূর্ণ দৃষ্টিতে ঘটতে চান তাদের জন্য এখানে একটি কোড-মুক্ত বিকল্প রয়েছে: একটি ব্লকে ক্ষেত্রটি প্রদর্শন করুন (দেখুন, উদাহরণস্বরূপ) এবং আপনার কন্টেন্ট ব্লকের উপরে কিন্তু একই অঞ্চলে সেই ব্লকটি রাখুন।


আমি এখনও একটি ড্রুপাল এন 100 বি, আপনি কী বোঝাতে চেয়েছিলেন তা ব্যাখ্যা করতে পারেন?
কেনি ওয়াইল্যান্ড 15:53

3

আমি মনে করি আপনার টেম্পলেট.পিএইচপিতে আপনার প্রিপ্রোসেস ফাংশন ব্যবহার করা উচিত

/**
 * Override or insert variables into the page template.
 */
function THEMENAME_process_page(&$variables) {
  // look for $variables['page_title'] if i remember
}

এবং অতিরিক্ত হিসাবে

/**
 * Override or insert variables into the node template.
 */
function THEMENAME_preprocess_node(&$variables) {
  //
}

ভেরিয়েবলগুলি ডাম্প করুন এবং যা চান তা করুন। যোগ / অপসারণ / আপডেট।


1
এই ফাংশনগুলি শিরোনাম এবং অন্যান্য নোড ক্ষেত্রগুলি আউটপুট হয় এমন ক্রমটি পরিবর্তন করে না। তার জন্য, আপনার টেমপ্লেট ফাইলটি পরিবর্তন করা উচিত।
কিমলালুনো

আমি দেখতে পেয়েছি I আমি ভেবেছিলাম আপনি শিরোনামে একটি ক্ষেত্রের মান যুক্ত করতে চাই।
dobeerman

3

আমি ডিসপ্লে স্যুট এবং এর "অঞ্চল থেকে অবরুদ্ধ করা" অতিরিক্ত বৈশিষ্ট্য ব্যবহার করে কোডহীন সমাধান দ্বারা এটি সমাধান করেছি । আমি এই সমাধানটি সবচেয়ে নমনীয়তার জন্য পছন্দ করি।

মূলত, "অঞ্চল থেকে ব্লক করুন" অতিরিক্ত অংশ সক্ষম করুন, প্রদর্শন স্যুটে "ফুলটেক্সট সামগ্রী" প্রদর্শন সক্ষম করুন। (ধরে নিলাম আপনি পুরো নোড ডিসপ্লেতে শিরোনামের উপরে সামগ্রীটি প্রদর্শন করতে চান, একইভাবে আপনি এটি ডিফল্ট ব্যতীত অন্য কোনও ভিউ মোডের জন্য ব্যবহার করতে পারেন )। এখন, "ফুলটেক্সট সামগ্রী" এর "প্রদর্শন পরিচালনা করুন" অংশে, স্ক্রিনের নীচে, "ব্লক অঞ্চলগুলি" ট্যাব উপস্থিত হওয়া উচিত। সেখানে নতুন ব্লকের নাম লিখুন, সংরক্ষণ করুন এবং টানুন এবং এই ব্লকে পছন্দসই ক্ষেত্রগুলি ফেলে দিন। শেষ অবধি, নোড শিরোনামের উপরে কোথাও ব্লকস স্ক্রিনে সদ্য নির্মিত ব্লকটি সরান ।

আপনি এখানে একই পদ্ধতির ভিডিওটি দেখতে পারেন: http://www.youtube.com/watch?v=y4wyjxyhbNA অবশ্যই অবশ্যই আপনাকে শীর্ষে শীর্ষে (বাম দিকের বারে নয়) উপরে ব্লক স্থাপন করতে হবে।


2

কোডের নীচে জেন টেম্পলেটগুলির জন্য আমার পক্ষে কাজ করে।

<?php
// this goes in template.php
// check if node type page and then add to $vars array
// declaring $vars['foo'] gives you a $foo variable to use in page.tpl.php

function YOURTHEMENAME_preprocess_page(&$vars, $hook) {
    if (isset($vars['node'])) :
        if($vars['node']->type == 'page'):       
            $node = node_load($vars['node']->nid);
            $output = field_view_field('node', $node, 'field_image', array('label' => 'hidden'));       
            $vars['my_image_field'] = $output;               
        endif;
    endif;
}
?>

সুতরাং শেষ পর্যন্ত, আপনি সহজেই পেজ.টিপিএল.পিপিতে আপনার ক্ষেত্রটি মুদ্রণ করতে পারেন;

<?php
if ($my_image_field):
   print render($my_image_field);
endif;
?>

পৃষ্ঠা.tpl.php সম্পর্কিত, আমি বিজনেস রিসপন্সিয়াল থিমের সাথে এর সাথে একটি অপরিজ্ঞাত পরিবর্তনশীল সতর্কতা পেয়েছিলাম তবে যখন আমি শর্তসাপেক্ষে অপসারণ করেছি, এটি ঠিক কাজ করে। অন্য কথায়, আমি পরিবর্তিত <? পিএইচপি যদি ($ my_image_field): প্রিন্ট রেন্ডার ($ my_image_field); যদি শেষ; ?> থেকে <? পিএইচপি প্রিন্ট রেন্ডার ($ my_image_field); ?> যা আমার সমস্ত পৃষ্ঠাগুলিতে কোনও সতর্কতা ছুঁড়ে না বলে মনে হচ্ছে।
অ্যামি নিবেল

2

আমি জানি আপনি ইতিমধ্যে কিছু থিম তৈরি করতে ব্যবহার করেছেন এবং এখন শিরোনামের শীর্ষে ক্ষেত্রগুলি যুক্ত করার চেষ্টা করছেন।

ড্রুপাল 7-তে থিম বিল্ডিংয়ের সমস্ত বিকাশকারীদের কাছে আমার পরামর্শগুলি ব্যবহার করতে হবে: ওমেগা থিম + প্রসঙ্গ এবং ডেল্টা মডিউল। এটি আপনার বিন্যাসের জন্য একটি খুব শক্তিশালী ভিত্তি দেয়।

এবং অঞ্চল, ব্লক এবং ক্ষেত্রগুলি সাজানোর ক্ষেত্রে নমনীয়তা।


1

আপনি প্যানেল মডিউল সঙ্গে না করতে পারেন


পুরানো উত্তর এখানে, কিন্তু এটি একটি পতাকা ধরা। এই পরিস্থিতিতে প্যানেলগুলি কীভাবে ব্যবহার করা যেতে পারে সে সম্পর্কে কিছুটা ব্যাখ্যা করা ভাল।
এমপিডোনাদিও

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