আপনি যদি কেবলমাত্র বর্তমান ব্যবহারকারী লগ ইন আছেন তা পরীক্ষা করতে পারেন, আপনি ব্যবহার করতে পারেন $variables['logged_in']
যা সাধারণত সমস্ত টেম্পলেট ফাইলগুলিতে পাওয়া যায়।
উদাহরণস্বরূপ, চিহ্ন। Html.twig ফাইলটি নিম্নলিখিত কোডটি ব্যবহার করে, যদিও কেবলমাত্র ডকুমেন্টেড ভেরিয়েবল status
।
{% if logged_in %}
{% if status is constant('MARK_NEW') %}
<span class="marker">{{ 'New'|t }}</span>
{% elseif status is constant('MARK_UPDATED') %}
<span class="marker">{{ 'Updated'|t }}</span>
{% endif %}
{% endif %}
ভেরিয়েবলটি অন্যান্য টেম্পলেট ফাইলগুলিতে যেমন html.html.twig , page.html.twig এবং node.html.twig এ স্পষ্ট করে ডকুমেন্টেড থাকে ।
ভেরিয়েবলটি সমস্ত টেম্পলেট ফাইলগুলিতে পাওয়া যায়, যেহেতু এটি _template_preprocess_default_variables()
চালিত হয় user_template_preprocess_default_variables_alter()
(যার প্রয়োগ hook_template_preprocess_default_variables_alter()
), যা নিম্নলিখিত কোডটি ধারণ করে।
$user = \Drupal::currentUser();
$variables['user'] = clone $user;
// Remove password and session IDs, since themes should not need nor see them.
unset($variables['user']->pass, $variables['user']->sid, $variables['user']->ssid);
$variables['is_admin'] = $user->hasPermission('access administration pages');
$variables['logged_in'] = $user->isAuthenticated();
_template_preprocess_default_variables()
দ্বারা ডাকা হয় template_preprocess()
, যা টেমপ্লেট হিসাবে প্রয়োগ থিম হুক জন্য ডাকা ফাংশন; এটি গ্যারান্টি দেয় যে সমস্ত টেম্পলেট ফাইলগুলিতে ভেরিয়েবল উপলব্ধ।
মনে রাখবেন যে ম্যাক্রোগুলির বর্তমান টেম্পলেট ভেরিয়েবলগুলিতে অ্যাক্সেস নেই so সুতরাং ম্যাক্রোর কোডটিতে অ্যাক্সেস করার চেষ্টা logged_in
করা কোনও প্রভাব ফেলবে না।
ড্রুপাল কোর মডিউলগুলি থেকে ব্যবহৃত টেম্পলেট ফাইলগুলির মধ্যে যেগুলি ম্যাক্রো ব্যবহার করে তা হ'ল:
menu.html.twig
{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes }}>
{% else %}
<ul>
{% endif %}
{% for item in items %}
<li{{ item.attributes }}>
{{ link(item.title, item.url) }}
{% if item.below %}
{{ menus.menu_links(item.below, attributes, menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
বুক-tree.html.twig
{% macro book_links(items, attributes, menu_level) %}
{% import _self as book_tree %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes }}>
{% else %}
<ul>
{% endif %}
{% for item in items %}
<li{{ item.attributes }}>
{{ link(item.title, item.url) }}
{% if item.below %}
{{ book_tree.book_links(item.below, attributes, menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
মেনু - toolbar.html.twig
{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes.addClass('toolbar-menu') }}>
{% else %}
<ul class="toolbar-menu">
{% endif %}
{% for item in items %}
{%
set classes = [
'menu-item',
item.is_expanded ? 'menu-item--expanded',
item.is_collapsed ? 'menu-item--collapsed',
item.in_active_trail ? 'menu-item--active-trail',
]
%}
<li{{ item.attributes.addClass(classes) }}>
{{ link(item.title, item.url) }}
{% if item.below %}
{{ menus.menu_links(item.below, attributes, menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
উদাহরণস্বরূপ, নিম্নলিখিত কোড সহ শেষ ম্যাক্রো পরিবর্তন করার প্রত্যাশিত ফলাফল হবে না।
{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes.addClass('toolbar-menu') }}>
{% else %}
<ul class="toolbar-menu">
{% endif %}
{% for item in items %}
{%
set classes = [
'menu-item',
logged_in ? 'menu-item--logged-in-user',
item.is_expanded ? 'menu-item--expanded',
item.is_collapsed ? 'menu-item--collapsed',
item.in_active_trail ? 'menu-item--active-trail',
]
%}
<li{{ item.attributes.addClass(classes) }}>
{{ link(item.title, item.url) }}
{% if item.below %}
{{ menus.menu_links(item.below, attributes, menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
The variable is surely available in all the template files
আমি আশঙ্কা করছি আপনি এই সম্পর্কে ভুল। যদি টেমপ্লেট মন্তব্যগুলিতে এটি উল্লেখ না করে তবে অবশ্যই একটি কারণ থাকতে হবে, তাই না? কারণ আমি মেনু . html.twig (যা মন্তব্যে এটি উল্লেখ করে না) চেষ্টা করেছিলাম এবং কার্যকর হয়নি। টুইগ এক্সটেন্ডার ব্যবহার করার সময় এটি কাজ করে।