আমি একটি কাস্টম যোগ করতে চাই সিএসএস বর্গ করার <body>
ট্যাগ। আমি ড্রুপাল 7 / করোল্লা ব্যবহার করছি।
আমি কীভাবে এটি আমার কাস্টম মডিউল থেকে প্রোগ্রামগতভাবে করতে পারি?
আমি একটি কাস্টম যোগ করতে চাই সিএসএস বর্গ করার <body>
ট্যাগ। আমি ড্রুপাল 7 / করোল্লা ব্যবহার করছি।
আমি কীভাবে এটি আমার কাস্টম মডিউল থেকে প্রোগ্রামগতভাবে করতে পারি?
উত্তর:
প্রিপ্রোসেস ফাংশনগুলি মডিউল এবং থিমগুলি থেকে প্রয়োগ করা যেতে পারে।
আপনার যে প্রিপ্র্রোসেস ফাংশনটি প্রয়োজন তা হ'ল hook_preprocess_html()
এবং সেট করতে চলকটি $variables['classes_array']
হ'ল এটি অ্যারের যা <body>
উপাদানটির জন্য সেট সমস্ত শ্রেণি সমন্বিত । Html.tpl.php ফাইলের বিষয়বস্তু যা দ্রুপাল দ্বারা ডিফল্টরূপে ব্যবহৃত হয় (যদি থিমটি আলাদা টেম্পলেট ফাইল ব্যবহার করে না) নিম্নলিখিতটি হ'ল:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language; ?>" version="XHTML+RDFa 1.0" dir="<?php print $language->dir; ?>"<?php print $rdf_namespaces; ?>>
<head profile="<?php print $grddl_profile; ?>">
<?php print $head; ?>
<title><?php print $head_title; ?></title>
<?php print $styles; ?>
<?php print $scripts; ?>
</head>
<body class="<?php print $classes; ?>" <?php print $attributes;?>>
<div id="skip-link">
<a href="#main-content" class="element-invisible element-focusable"><?php print t('Skip to main content'); ?></a>
</div>
<?php print $page_top; ?>
<?php print $page; ?>
<?php print $page_bottom; ?>
</body>
</html>
আপনার মডিউলে আপনি কেবল নীচে প্রিপ্রসেস ফাংশনটি প্রয়োগ করেন:
function mymodule_preprocess_html(&$variables) {
$variables['classes_array'][] = "new-class";
}
টেমপ্লেট_প্রসেস () তারপরে নিম্নলিখিত কোডের সাহায্যে $variables['classes_array']
পপুলেশন $variables['classes']
করতে ব্যবহৃত হয়:
$variables['classes'] = implode(' ', $variables['classes_array']);
যদি আপনার সাইট একাধিক থিম ব্যবহার করে বা আপনার সাইটের জন্য থিম সেটটি আপনি তৈরি করেন না তবে কোনও মডিউলে একটি প্রিপ্রোসেস ফাংশন ব্যবহার করা বাঞ্ছনীয়। এই ক্ষেত্রে, আপনি আপনার কাস্টম সিএসএস ক্লাস সেট করতে সক্ষম হয়েছেন, এবং থিমটি আপডেট করার সময়, বা কেবল আপনার সাইটের ব্যবহৃত ডিফল্ট থিম পরিবর্তন করার সময় সেগুলি হারাবেন না। যদি আপনার সাইটটি কেবল একটি থিম ব্যবহার করে এবং সেই থিমটি আপনি তৈরি করেছেন এমন একটি কাস্টম থিম, তবে আপনি নিজের কাস্টম থিমটিতে প্রিপ্রোসেস ফাংশনটি প্রয়োগ করতে পারেন। আপনি থিমটি বজায় রাখার সাথে সাথে আপনার থিমটি আপডেট করার সময় CSS ক্লাসগুলি হারাবে না।
আপনি এই কাজটি হুক_প্রিপ্রসেস_এইচটিএমএলের মাধ্যমে করতে পারবেন, যখনই আপনি যখন এটির প্রয়োজন হবে তখন প্রায়শই আপনি আপনার কোডবেজের সম্পূর্ণ আলাদা অংশে থাকবেন। যদি এটি হয় তবে আমি আপনাকে ctools_class_add
পরিবর্তে এটি ব্যবহার করার পরামর্শ দিচ্ছি :
ctools_class_add(array('class1', 'class2', 'class3'));
আপনি যে কোনও জায়গা থেকে কল করতে পারবেন যতক্ষণ না হুক_প্রিপ্রসেস_এইচটিএমএল চালানো হয়নি এবং ক্লাসগুলি যুক্ত করা হবে।
ধরে নিই যে আপনি পাঠাটো মডিউলটি ব্যবহার করছেন মেনু পাথের উপর ভিত্তি করে আপনার সামগ্রী পৃষ্ঠাগুলির জন্য স্বয়ংক্রিয়ভাবে অর্থশালী পথ তৈরি করতে আপনি যে শ্রেণীর সন্ধান করছেন সেগুলি তৈরি করতে পৃষ্ঠার পথটি ব্যবহার করতে পারেন:
function THEMENAME_preprocess_html(&$vars) {
$path = drupal_get_path_alias();
$aliases = explode('/', $path);
foreach($aliases as $alias) {
$vars['classes_array'][] = drupal_clean_css_identifier($alias);
}
}
আপনি এটি মাধ্যমে করতে পারেন template_preprocess_html()
। তুমি তোমার এই লাগাতে পারেন template.php
যেখানেই থাকুন না কেন আপনার থিম / বেস থিম ঘোষিত সবচেয়ে উপযুক্ত (যেমন, ওমেগা preprocess ফোল্ডারের), অথবা এ একটি কাস্টম মডিউল, কি সবচেয়ে উপযুক্ত উপর নির্ভর করে।
function mytheme_preprocess_html(&$variables) {
$variables['classes_array'][] = "class1";
$variables['classes_array'][] = "class2";
$variables['classes_array'][] = "class3";
}
এপিআই রেফারেন্সে নাম থাকা সত্ত্বেও, theme_preprocess
এবং theme_process
ফাংশনগুলিকে মডিউল থেকে ডেকে নেওয়া যেতে পারে, কেবল থিম নয় not আপনার মডিউলের সাথে মেলে হুকের নামকরণ করা আপনার কেবল দরকার mymodule_preprocess_html()
।