উত্তর:
ড্রুপাল 6 এ, আপনি ব্যবহার করুন hook_token_values()
।
এই হুক আপনাকে টোকেন তৈরি করার অনুমতি দেবে। আপনি এগুলি বিশ্বব্যাপী সুযোগে তৈরি করতে পারেন বা আপনি নোডের মতো কোনও বস্তু বা মান ব্যবহার করতে ব্যবহারকারীকে ব্যবহার করতে পারেন।
hook_token_list()
আপনার টোকেনগুলি কী তা বোঝাতে আপনার ব্যবহার করা উচিত ।
Token.api ডকুমেন্টেশন বেশ স্পষ্ট।
function my_user_token_values($type, $object = NULL, $options = array()) {
if ($type == 'user') {
$user = $object;
$tokens['name'] = $user->name;
$tokens['mail'] = $user->mail;
return $tokens;
}
}
আমি পুরো জিনিসটি এক্স পোস্ট করব না তবে এটি আপনাকে একটি উচ্চ স্তরের ধারণা দেবে।
দ্রুপাল In-তে টোকেন পরিচালনা করার কোডটি দ্রুপাল কোর মডিউলটির অংশ।
টোকন মডিউলগুলি প্রয়োগ করতে হুকগুলি হ'ল:
অন্যান্য মডিউল হুক_ টোকেন_ইনফো_াল্টার () এবং হুক_ টোকেন_লটার () ব্যবহার করে মডিউল থেকে প্রদত্ত টোকেন প্রয়োগকে পরিবর্তন করতে পারে ।
টোকেন মডিউল থেকে আলাদাভাবে, দ্রুপাল কোর কোডটি কেবলমাত্র কঠোরভাবে প্রয়োজন হলে টোকেনের সামগ্রী তৈরি করতে দেয়। ড্রুপাল 6 এ, টোকেন মডিউলটি তাদের টোকেন ব্যবহারের জন্য সমস্ত মান টোকেন প্রয়োগকারী মডিউলগুলিকে জিজ্ঞাসা করবে hook_token_values()
; এর অর্থ হল একটি মডিউল একটি টোকেনের মান গণনা করতে পারে যা টোকেনগুলি প্রতিস্থাপনের জন্য প্রয়োজন হয় না। ড্রুপাল 7-এ, hook_tokens()
প্রাপ্তির বাস্তবায়ন $tokens
, টোকেনের একটি অ্যারে প্রতিস্থাপনের জন্য, যুক্তি হিসাবে; মডিউলটি তখন টোকেনের মান গণনা করতে সক্ষম, এটি ব্যবহার করা হবে তা জেনে।
টুঙ্কনগুলি তাদের মানের সাথে প্রতিস্থাপন করতে ড্রুপাল 7-এ যে ফাংশনটি ব্যবহৃত হয় তা হ'ল টোকেন_রেপ্লেস () , যা টোকেনগুলি তাদের মানগুলির সাথে প্রতিস্থাপন করতে ব্যবহৃত একমাত্র ফাংশন।
দ্রুপাল 6 এর টোকেন মডিউল এবং দ্রুপাল 7-এর কোডের মধ্যে অন্যান্য পার্থক্য হ'ল
hook_tokens()
একটি প্যারামিটার যে হুক যখন টোকেন চাহিদা বিষয়বস্তুর sanitized করা বলে পান; যখন টোকেন মানটি স্যানিটাইজ করার প্রয়োজন হয় না, তখন সামগ্রীটি ফাংশনগুলিতে প্রেরণ করা হয় না check_plain()
বা filter_xss()
।আমি টোকেনগুলির সাইটের তথ্য বিভাগে একটি নতুন টোকেন যুক্ত করতে চেয়েছিলাম , যার নাম ছিল শহরের নাম । ড্রুপাল in-তে আমি এটিই করেছি।
/**
* Implements hook_token_info().
*/
function my_module_token_info() {
// Add tokens.
$site['city_name'] = array(
'name' => t('Token Name'),
'description' => t('Token Description'),
);
return array(
'tokens' => array(
'site' => $site,
),
);
}
/**
* Implements hook_tokens().
*/
function my_module_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
if ($type == 'site') {
foreach ($tokens as $name => $original) {
switch ($name) {
case 'city_name':
$city_name = variable_get('city_name');
$replacements[$original] = $sanitize ? check_plain($city_name) : $city_name;
break;
}
}
}
// Return the replacements.
return $replacements;
}
[site:city_name]
। নিশ্চিত হয়ে নিন আপনি ক্যাচগুলি সাফ করেছেন বা ব্যবহার করা হলে ম্যাকচেড পুনরায় চালু করবেন।
$sanitize
উপরের উদাহরণে সংজ্ঞায়িত করা হয়নি, সুতরাং আপনি Notice: Undefined variable
এটি সম্পর্কে পাবেন ।
ড্রুপাল 8 এর জন্য উদাহরণস্বরূপ নোড অবজেক্টটি ব্যবহার করে:
আপনি প্রতিস্থাপনের ডেটার জন্য hook_token_info () ব্যবহার করে এবং হুক_ টোকেন () ব্যবহার করে mymodule.tokens.inc এ আপনার মডিউলটিতে টোকেন রাখতে পারেন।
আপনি যদি কোনও বিদ্যমান টোকেন ধরণের জন্য যেমন নোডের জন্য একটি কাস্টম টোকেন তৈরি করতে চান তবে আপনাকে আপনার টোকেনটি হুক_ টোকেন_ইনফো () এর মধ্যে সাববারির মধ্যে রাখতে হবে। আপনি কী তৈরি করছেন তা দেখার জন্য নোড মডিউলে নোড.টোকেনস.ইনিকে দেখুন।
mymodule.tokens.inc:
<?php
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\image\Entity\ImageStyle;
/**
* Implements hook_token_info().
*/
function mymodule_token_info() {
$info = array();
$info['tokens']['node']['custom_title'] = [
'name' => t("Custom Title"),
'description' => t("a custom node title token"),
];
// Return them.
return $info;
}
/**
* Implements hook_tokens().
*/
function mymodule_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
$replacements = array();
if ($type == 'node') {
foreach ($tokens as $name => $original) {
// Find the desired token by name
switch ($name) {
case '$data['node']':
$node = $data['node'];
$replacements[$original] = $node->label();
break;
}
}
}
// Return the replacements.
return $replacements;
}
দ্রুপাল 8 এর জন্য
// We need to include the needed class for tokens.
use Drupal\Core\Render\BubbleableMetadata;
/**
* Implements hook_token_info().
*/
function modulename_token_info() {
$info = array();
// Add any new tokens.
$info['tokens']['customtokentype']['customtoken'] = t('Telling drupal that you define custom token');
// Return them.
return $info;
}
/**
* Implements hook_tokens().
*/
function modulename_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
$replacements = array();
$simple = $data["customanything"];
if ($type == 'customtokentype') {
foreach ($tokens as $name => $original) {
// Find the desired token by name
switch ($name) {
case 'customtoken':
$new = $simple;
$replacements[$original] = $new;
break;
}
}
}
// Return the replacements.
return $replacements;
}
আপনার ফাংশনে টোকেনের মান পেতে নিম্নলিখিত কোডগুলির মতো কোড দরকার requires
$token = \Drupal::token();
$message_html = "hello my custom token is replaced see it here [customtokentype:customtoken]";
// Token data.
$data = array('customanything' => $tosendtotokens);
$message_html = $token->replace($message_html, $data);
new
এবং simple
এই উদাহরণে?