আমি কীভাবে ইউআরএল ভিত্তিক কোনও থিম পরিবর্তন করব?


38

আমার একটি ড্রুপাল উদাহরণ আছে। যার একটি থিম এক্স ইনস্টল করা এবং সক্রিয় করা আছে। এখন একটি সীমিত সময়ের জন্য একটি ইভেন্ট সাইটে করা হবে বলে মনে করা হচ্ছে যার জন্য একটি বিশেষ বিভাগ "খোদাই করা হয়েছে"। এই ইভেন্টের সাথে সম্পর্কিত সমস্ত জিনিস উদাহরণ.org/event2011 এ যাবে।

এই বিভাগের অধীনে যখনই কোনও পৃষ্ঠা দেখা হয় তখনই আমি আলাদা থিম প্রদর্শন করতে চাই (যেমন http://example.org/event2011/about , http://example.org/event2011/node/123 )। আমি কেমন করে ঐটি করি?

আমি অনেকগুলি মডিউল পেরিয়েছি, তবে তাদের কোনওটিই ড্রুপাল supporting. সমর্থন করছে না Pre সম্ভবত, আমি এটি মডিউলগুলি ব্যবহার করে সম্পন্ন করতে চাই এবং কোড স্তরে আমার স্ব পরিবর্তন করতে চাই না।


1
আপনি কি পথ / ইভেন্ট2011 / নোড / 123 এর নীচে পুরো আলাদা আলাদা সাইটটি দেখতে চাইছেন বলে মনে করছেন?
জেরেমি ফরাসী

উত্তর:


33

পরিবর্তনটি সীমিত সময়ের জন্য, এবং এই জাতীয় কোডটি কার্যকর করা কঠিনতা নয়, এই বিষয়টি বিবেচনা করে আমি একটি কাস্টম মডিউল প্রয়োগ করার পরামর্শ দেব যা নির্দিষ্ট পৃষ্ঠাগুলির জন্য থিমটি ব্যবহার করে পরিবর্তিত হবে।

এটি hook_custom_theme()নিম্নলিখিত হিসাবে কার্যকর করার জন্য যথেষ্ট :

function mymodule_custom_theme() {
  if (arg(0) == 'event2011') {
    return 'the theme to use for that page';
  }
}

আপনার যদি থিমটি কেবলমাত্র http://example.com/event2011 এর জন্য পরিবর্তন করতে হবে তবে http://example.com/event2011/node/123 এর জন্য নয় তবে কোডটি পরিবর্তন করা উচিত

function mymodule_custom_theme() {
  if (arg(0) == 'event2011' && !arg(1)) {
    return 'the theme to use for that page';
  }
}

মেনু কলব্যাকের সংজ্ঞায় থিম কলব্যাকগুলি ব্যবহার করার জন্য ডকুমেন্টেশনটি বলে:

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


আমি বর্তমান_পথ () ফাংশনটি api.drupal.org/api/drupal/includes%21path.inc/function/… পরামর্শ দেব । আপনার কাছে "শর্ত" এর জন্য আরও সহজ হবে
আগস্ট

22

অন্যান্য মন্তব্যের পরামর্শ মতো একটি কাস্টম সমাধান সম্ভবত সেরা, তবে আপনি যদি সত্যিই কোনও মডিউল ব্যবহার করতে চান তবে আপনার সেরা বেট থিমকি । 5/23/11 হিসাবে এটির একটি স্থিতিশীল প্রকাশ রয়েছে।


8

বিকল্পভাবে আপনি theme callbackমেনু সিস্টেমের নতুন বিকল্পটি hook_menu_alter()নীচে বর্ণিত হিসাবে ব্যবহার করতে পারেন । আরও তথ্যের জন্য PS চেকআউট হুক_মেনু ()theme callback

<?php
/**
* Implements hook_menu_alter().
*/
function mymodule_menu_alter(&$items) {
  // Set the theme callback function for all node pages. As per the
  // standard behavior for hook_menu() properties, this will be
  // inherited by all paths underneath node/%node as well, unless
  // they define their own theme callback.
  $items['node/%node']['theme callback'] = 'mymodule_default_node_theme';

  // Set a different theme callback for node edit pages, and pass
  // along the node object to this function so we can make decisions
  // based on it.
  $items['node/%node/edit']['theme callback'] = 'mymodule_edit_node_theme';
  $items['node/%node/edit']['theme arguments'] = array(1);
}
/**
* Defaults to using the 'some_theme' theme for node pages.
*/
function mymodule_default_node_theme() {
  return 'some_theme';
}

/**
* For editing page nodes, uses the 'some_other_theme' theme.
*/
function mymodule_edit_node_theme($node) {
  return $node->type == 'page' ? 'some_other_theme' : mymodule_default_node_theme();
}
?>

অধিকতর প্রচলিত ব্যবহারের উদাহরণ রয়েছে hook_custom_theme()

<?php 
/**
* Implements hook_custom_theme().
*/
function mymodule_custom_theme() {
  // check path using arg(0)
  // check $user
  // do whatever special checking you want and simply return theme key (name of theme folder most of the time)
    return 'special_theme';
  }
}
?>

থেকে নেওয়া: http://drupal.org/node/224333# কাস্টম_থমে


6

পাথ / ইভেন্ট2011 হয় যখন আপনি সহজভাবে প্রসঙ্গ ব্যবহার করতে পারেন এবং থিমটি ব্যবহার করতে পারেন / আপনি কোটেক্সট শর্তে সরল পথ নির্ধারণ করতে পারেন এবং সামগ্রীটির ক্রিয়ায় থিমটি পরিবর্তন করতে পারেন। এটি আপনি URL এর উপর ভিত্তি করে কোনও থিমগুলির মধ্যে খুব সহজেই স্যুইচ করতে পারেন। এমনকি মোবাইলের জন্যও কাজ করে;)


থিম অ্যাকশন থিমটিতে কাস্টম ভেরিয়েবলগুলি পাস করে, এটি আসলে এটি পরিবর্তন করে না
অ্যালেক্স ওয়েবার

6

থিমকি ব্যবহার করা সহজ এবং থিম স্যুইচিংয়ের নিয়মের জন্য এটি এখন পর্যন্ত (8.x এর সমর্থনে) সর্বাধিক জনপ্রিয় এবং শক্তিশালী মডিউল যা বর্তমান পথ, শ্রেণীবদ্ধের শর্তাদি, ভাষা, নোড-টাইপ এবং অনেকের উপর নির্ভর করে কোনও থিমের স্বয়ংক্রিয় নির্বাচনের অনুমতি দেয়, অন্যান্য অনেক সম্পত্তি। অন্যান্য মডিউল দ্বারা প্রকাশিত অতিরিক্ত সম্পত্তি সমর্থন করার জন্য এটি সহজেই বাড়ানো যেতে পারে। স্ট্যান্ডার্ড বৈশিষ্ট্যগুলির পাশে থিমকি স্বয়ংক্রিয়ভাবে এটির অনেকগুলি অবদানকারী মডিউলগুলির বৈশিষ্ট্যগুলি প্রসারিত করে এবং এতে মডিউলগুলি প্রসারিত করে।

ব্যবহার (7.x)

মডিউল সক্ষম করার পরে, এ যান admin/config/user-interface/themekey। থিমটি স্যুইচ করার জন্য অনেকগুলি বিকল্প রয়েছে, তবে সম্ভবত আপনি এতে আগ্রহী হবেন path:node_alias, তাই আপনি / my_url বলার মতো মানটি সেট করুন এবং তারপরে আপনি এই ইউআরএলে সক্ষম করতে চান থিমটি নির্বাচন করুন। এছাড়াও আপনি যেমন ওয়াইল্ডকার্ড ব্যবহার করতে পারেন web/*বা /^web/.*

চেক করুন: কীভাবে পথের জন্য কোনও থিম লোড করুন

উন্নত ব্যবহার

কীভাবে থিমকে কীভাবে বাড়ানো যায় তা বিকাশকারীদের প্রদর্শনের জন্য থিমকি 7.x এ থিমকি উদাহরণ নামে একটি alচ্ছিক মডিউল রয়েছে।

সহায়তা (7.x)

পরীক্ষা করে দেখুন Mustardseed দ্বারা ভিডিও টিউটোরিয়াল (7.x)।

এই বিষয়ে আরও সহায়তা পাওয়া যাবে /admin/help/themekey

সম্পর্কিত অন্যান্য এসই প্রশ্নও পরীক্ষা করে


বিকল্পভাবে স্যুইচথেম ( x.x ) এছাড়াও রয়েছে যা ব্যবহারকারীদের সক্ষম থিমগুলির মধ্যে স্যুইচ করার অনুমতি দিতে একটি ব্লক যুক্ত করে।


5

ব্যবহার করার সময় URL টি alias লেখা বা Pathauto মডিউল , সুক্ষ্ণ বিষয়গুলো ও পার্থক্য সম্পর্কে সচেতন যখন বর্তমান Drupal এর পাথ উপাদান ব্যবহার করা।

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

নিম্নলিখিত উদাহরণটি বিবেচনা করুন, যেমন কিমলালুনো প্রস্তাবিত :

function mymodule_custom_theme() {
  if (arg(0) == 'event2011') {
    return 'custom_theme_machine_name';
  }
}

ড্রুপাল In-তে , কোনও নোডের ইভেন্ট 2011 এর একটি এলিফ থাকলে , ব্যবহার করে প্রথম ইউআরএল উপাদান হিসাবে arg(0)ফিরে আসবে , যার সাথে উল্টোটি থাকবে nodeনা।

print_r(arg(0));

Array
(
    [0] => node
    [1] => 150
)

পরিবর্তে, আপনি একটি ওরফে সঙ্গে কাজ করার প্রয়োজন আছে Drupal এর বর্তমান URL টি পেতে বিভিন্নভাবে সহ menu_get_object(), current_path(), request_path()এবং অন্যদের।

এখানে একটি পুনরায় কাজ করা উদাহরণ যা থিমটি স্যুইচ করার জন্য একটি উপাধি ব্যবহার করে:

function mymodule_custom_theme() {
  $current_page_path = explode('/', request_path());      

  if ($current_page_path[0] == 'event2011') {
    return 'custom_theme_machine_name';
  }
}

3

কীভাবে ব্যবহারকারীর ভূমিকার উপর নির্ভর করে থিমটি পরিবর্তন করতে হবে:

একটি কাস্টম মডিউল তৈরি করুন এবং নিম্নলিখিতটি অনুলিপি করুন এবং পেস্ট করুন:

<?php
/**
 * Implementation of hook_init().
 */
function mymodule_init() {
  global $custom_theme, $user;
  if (in_array('my special role', $user->roles)) {
    $custom_theme = 'mytheme';
  }
}
?>

আপনাকে প্রতিস্থাপন করতে হবে:

mymodule => আপনার মডিউল নাম সহ

আমার বিশেষ ভূমিকা => আপনার ব্যবহারকারীদের আলাদা থিম দেখার জন্য যে ভূমিকার প্রয়োজন হবে সেই নামটির সাথে।

mytheme => আপনি যে থিমটিতে যেতে চান তার নাম সহ


1

ঠিক তা অর্জন করতে আপনি পৃষ্ঠা থিম মডিউলটি ব্যবহার করতে পারেন

পৃষ্ঠা থিম মডিউলটি একটি সাধারণ এবং সহজ মডিউল যা ব্যবহারের জন্য নির্দিষ্ট পৃষ্ঠায় সাইটের ডিফল্টের চেয়ে বিভিন্ন থিম ব্যবহার করতে দেয় is

বৈশিষ্ট্য

  • একক পৃষ্ঠায় বা পৃষ্ঠাগুলির তালিকায় একটি থিম বরাদ্দ করুন। (একটি পৃষ্ঠাটিকে একটি ড্রুপাল পথ হিসাবে সেট করুন)
  • '*' অক্ষরকে ড্রুপাল পাথগুলিতে ওয়াইল্ডকার্ড হিসাবে ব্যবহারের অনুমতি দিন।
  • থিমগুলি সাজানোর অনুমতি দিন। (যদি পৃষ্ঠাগুলি একাধিক সংজ্ঞায়িত হয় তবে তালিকার প্রথম থিমটি ব্যবহৃত হবে)
  • কোনও থিম সক্ষম / অক্ষম করার অনুমতি দিন।
  • দ্রুপাল আভিজাত্য বন্ধুত্বপূর্ণ।

0

আপনি ঠিক এটি অর্জন করতে পৃষ্ঠা থিম মডিউলটি ব্যবহার করতে পারেন : পৃষ্ঠা থিম মডিউলটি এমন একটি সহজ এবং সহজ মডিউল যা নির্দিষ্ট পৃষ্ঠায় সাইটের ডিফল্টের চেয়ে বিভিন্ন থিম ব্যবহার করতে দেয়।

বৈশিষ্ট্য:

একক পৃষ্ঠায় বা পৃষ্ঠাগুলির তালিকায় একটি থিম বরাদ্দ করুন। (একটি পৃষ্ঠাটিকে একটি দ্রুপাল পাথ হিসাবে সেট করুন) '*' অক্ষরকে দ্রুপাল পাথগুলিতে ওয়াইল্ডকার্ড হিসাবে ব্যবহার করার অনুমতি দিন। থিমগুলি সাজানোর অনুমতি দিন। (পৃষ্ঠাগুলি যদি বেশ কয়েকটি সংজ্ঞায়িত হয় তবে তালিকার প্রথম থিমটি ব্যবহৃত হবে) কোনও থিম সক্ষম / অক্ষম করার অনুমতি দিন। দ্রুপাল আভিজাত্য বন্ধুত্বপূর্ণ।

যেমনটি আপনি ব্যবহার করতে পারেন: বিভাগগুলি যেমন পৃষ্ঠার থিম হিসাবে একই বৈশিষ্ট্য রয়েছে তবে থিমটি চয়ন করতে ভূমিকা ভিত্তিক নির্বাচন এবং একটি "পিএইচপি স্নিপেট" অঞ্চল যুক্ত করে।

তবে আপনি যদি বিষয়বস্তু তৈরি, সম্পাদনা এবং পৃষ্ঠাগুলি দেখার ক্ষেত্রে সাইটের ডিফল্টের চেয়ে আলাদা থিম ব্যবহার করতে চান তবে আপনি সামগ্রী থিম ব্যবহার করতে পারেন যা সামগ্রী তৈরি, সম্পাদনা এবং পৃষ্ঠাগুলি দেখার বিষয়ে সাইটের ডিফল্টের চেয়ে বিভিন্ন থিম ব্যবহার করতে দেয় allows

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