পৃষ্ঠার টেমপ্লেট পরামর্শগুলি কাজ করছে না


12

আমি একটি থিম তৈরি করেছি এবং আমার কাঠামোর ফাইলগুলি এই কাঠামোর মধ্যে রেখেছি

  • /templates/page/page.tpl.php
  • /templates/page/page--node-type.tpl.php

আমি একটি কাস্টম পৃষ্ঠার টেম্পলেট তৈরি করেছি তবে কোনও কারণে এটি দ্রুপাল বাছাই করছে না। আমি আমার ক্যাশে সাফ করে দিয়েছি এবং থিম টেমপ্লেট.এফপি ফাইলটিতে এই প্রিপ্রোসেসর ফাংশনটি যুক্ত করার চেষ্টা করেছি কিন্তু এটি এখনও কাজ করছে না।

if (isset($vars['node'])) 
  {
    // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
  }

কোন সাহায্য প্রশংসা করা হবে।


/templates/page/page--node-type.tpl.php এর পাতা হওয়া উচিত না - blog.tpl.php?
জেরেমি ফরাসী

উত্তর:


14

ড্রুপাল Template টেম্পলেট পরামর্শগুলিতে প্রতিবেদন হিসাবে , পৃষ্ঠাগুলির জন্য দ্রুপাল from থেকে ডিফল্টরূপে ব্যবহৃত টেম্পলেট পরামর্শ পৃষ্ঠা - [সম্মুখ | অভ্যন্তরীণ / পথ] .tpl.php।

Http://www.example.com/node/1/edit এ দৃশ্যমান পৃষ্ঠার জন্য , দ্রুপাল নিম্নলিখিত টেম্পলেট ফাইলগুলি সন্ধান করবে:

  • পৃষ্ঠা - নোড - edit.tpl.php
  • পৃষ্ঠা - নোড - 1.tpl.php
  • পৃষ্ঠা - node.tpl.php
  • page.tpl.php

অতিরিক্ত পরামর্শ জুড়তে, আপনার থিম বাস্তবায়ন করা উচিত template_preprocess_page () এবং নতুন প্রস্তাবনা যোগ $variables['theme_hook_suggestions']( $variablesপরিবর্তনশীল ফাংশন রেফারেন্স দ্বারা পাস)।

যদি আপনি এটি করেন, তবে প্রস্তাবিত টেমপ্লেট ফাইলটি ব্যবহার না করার একমাত্র কারণ ফাইলটির সঠিক নামকরণ করা হয়নি: ক্ষেত্রে পৃষ্ঠাটি কোনও বইয়ের পৃষ্ঠা দেখায়, উদাহরণস্বরূপ, টেমপ্লেট ফাইলটি পৃষ্ঠা হতে হবে - book.tpl .php। আপনি আপনার থিমের কোডটি পরিবর্তন করতে পারেন এবং পৃষ্ঠাটি - book.tpl.php এর মতো কোনও টেমপ্লেট না পেলে নোড-টাইপ.tpl.php টেমপ্লেটটি এটি ব্যবহার করতে দিন।

এছাড়াও লক্ষ্য করুন যে, থিম_জেট_সাগেশনস () এ (যা ফাংশন টেমপ্লেট_প্রেসপ্রসেস_পেজ () নামে পরিচিত ) হাইফেনগুলি প্রতিস্থাপন করা হয়েছে _, এবং বিপরীতে নয়। যে কারণটি সম্পন্ন হয়েছে তা ফাংশন কোডে রিপোর্ট করা একটি মন্তব্যে ব্যাখ্যা করা হয়েছে।

// When we discover templates in drupal_find_theme_templates(),
// hyphens (-) are converted to underscores (_) before the theme hook
// is registered. We do this because the hyphens used for delimiters
// in hook suggestions cannot be used in the function names of the
// associated preprocess functions. Any page templates designed to be used
// on paths that contain a hyphen are also registered with these hyphens
// converted to underscores so here we must convert any hyphens in path
// arguments to underscores here before fetching theme hook suggestions
// to ensure the templates are appropriately recognized.
$arg = str_replace(array("/", "\\", "\0", '-'), array('', '', '', '_'), $arg);

5

আমি ড্রুপাল .4.৪ ব্যবহার করছি এবং আমার একই সমস্যা এবং একমাত্র জিনিস যা এই পোস্টটি হ'ল: কীভাবে সামগ্রীর ধরণের উপর ভিত্তি করে একটি কাস্টম পৃষ্ঠা.tpl যুক্ত করতে হবে

পোস্ট থেকে:

<?php
/**
* Variables preprocess function for the "page" theming hook.
*/
function THEME_NAME_preprocess_page(&$vars) {

  // Do we have a node?
  if (isset($vars['node'])) {

    // Ref suggestions cuz it's stupid long.
    $suggests = &$vars['theme_hook_suggestions'];

    // Get path arguments.
    $args = arg();
    // Remove first argument of "node".
    unset($args[0]);

    // Set type.
    $type = "page__type_{$vars['node']->type}";

    // Bring it all together.
    $suggests = array_merge(
      $suggests,
      array($type),
      theme_get_suggestions($args, $type)
    );

    // if the url is: 'http://domain.com/node/123/edit'
    // and node type is 'blog'..
    //
    // This will be the suggestions:
    //
    // - page__node
    // - page__node__%
    // - page__node__123
    // - page__node__edit
    // - page__type_blog
    // - page__type_blog__%
    // - page__type_blog__123
    // - page__type_blog__edit
    //
    // Which connects to these templates:
    //
    // - page--node.tpl.php
    // - page--node--%.tpl.php
    // - page--node--123.tpl.php
    // - page--node--edit.tpl.php
    // - page--type-blog.tpl.php          << this is what you want.
    // - page--type-blog--%.tpl.php
    // - page--type-blog--123.tpl.php
    // - page--type-blog--edit.tpl.php
    //
    // Latter items take precedence.
  }
}
?>

ধন্যবাদ আপনাকে অনেক ধন্যবাদ ... প্রস্তাবনা এবং টেম্পলেট নামের মধ্যে সত্যিকারের সাহায্যের মধ্যে সম্পর্ক দেখাচ্ছে। আবারও ধন্যবাদ :)
এসঘোষ

2

আমি ড্রপাল D.২২ তে স্ট্রিং রিপ্লেসটি ব্যবহার করে উপরের উদাহরণটি অনুসরণ করার চেষ্টা করে দীর্ঘ সময় ব্যয় করেছি। এটি আমার পক্ষে কাজ করবে বলে মনে হয় না। মজার বিষয় হল কিছু সামগ্রীর প্রকারগুলি স্বয়ংক্রিয়ভাবে প্রস্তাবিত বলে মনে হচ্ছে, অন্যরা তা না করে। এই কোডটি আমার জন্য শেষ পর্যন্ত কাজ করেছিল।

if (isset($variables['node'])) {
   // $variables['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $variables['node']->type);
   //cannot get above working for some reason?
     $variables['theme_hook_suggestions'][] = 'page__' . $variables['node']->type;
  }

সুতরাং সামনের পৃষ্ঠার সামগ্রীর ধরণের জন্য টেমপ্লেটের পরামর্শটি হ'ল:

পৃষ্ঠা - front_cover.tpl.php

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

অর্থাত

সামগ্রীর ধরণের যেমন / ইস্যু / # / সামনের_কভারের উপর ভিত্তি করে দেখুন পথ / / ইস্যু / # টেমপ্লেট পরামর্শ


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