উত্তর:
{{ myentity.text|length > 50 ? myentity.text|slice(0, 50) ~ '...' : myentity.text }}
আপনার টুইগ 1.6 দরকার
{{ text > 50 ? text|slice(0, 51)|split(' ')|slice(0, -1)|join(' ') ~ '…' : text }}
। আমি …
3 রিয়েল ডট ( ...
) এর পরিবর্তে উপবৃত্তাকার অক্ষর ( ) ব্যবহার করারও পরামর্শ দিচ্ছি
{{ myentity.text[:50] ~ (myentity.text|length > 50 ? '...') }}
|length
পরে কেবল মিস করছেন text
তবে এটি নিখুঁত, আপনাকে ধন্যবাদ!
কেন ট্যুইজের কাটা বা ওয়ার্ডর্যাপ ফিল্টার ব্যবহার করবেন না? এটি টুইগ এক্সটেনশনের অন্তর্গত এবং lib Symfony2.0 এর অংশ হিসাবে আমি দেখছি।
{{ text|truncate(50) }}
...
, দ্বিতীয় প্যারামিটারটি এ সেট করা উচিত true
যেমন{{ text|truncate(50, true)
require twig/extensions
আর একটি হ'ল:
{{ myentity.text[:50] ~ '...' }}
আমি জানি এটি একটি খুব পুরানো প্রশ্ন, তবে ডানা দ্বিগুণ থেকে আপনি স্লাইস ফিল্টারটি ব্যবহার করতে পারেন;
{{ myentity.text|slice(0, 50) ~ '...' }}
টিলড থেকে দ্বিতীয় অংশটি alচ্ছিক যদি আপনি কিছু যোগ করতে চান উদাহরণস্বরূপ উপবৃত্তাকার।
সম্পাদনা: আমার খারাপ, আমি স্লাইস ফিল্টারটি ব্যবহার করে সর্বাধিক ভোট দেওয়া উত্তর দেখতে পাচ্ছি।
ইউটিএফ -8 এলিপসিসযুক্ত @ ওলেগখুস সমাধান:
{{ (my.text|length > 50 ? my.text|slice(0, 50) ~ '…' : my.text) }}
text
ভেরিয়েবলের মাধ্যমে এইচটিএমএল ইনজেকশন সক্ষম করে ।
@mshobnr / @olegkhuss সমাধানটি একটি সাধারণ ম্যাক্রোতে তৈরি:
{% macro trunc(txt, len) -%}
{{ txt|length > len ? txt|slice(0, len) ~ '…' : txt }}
{%- endmacro %}
ব্যবহারের উদাহরণ:
{{ tools.trunc('This is the text to truncate. ', 50) }}
এনবি আমি ম্যাক্রোগুলিযুক্ত একটি ট্যুইগ টেম্পলেট আমদানি করি এবং এটিকে (সিমফনি) এর মতো 'সরঞ্জাম' হিসাবে আমদানি করি:
{% import "@AppBundle/tools.html.twig" as tools -%}
এছাড়াও, আমি এইচটিএমএল অক্ষর কোডটি প্রকৃত চরিত্রের সাথে প্রতিস্থাপন করেছি, ইউটিএফ -8 ফাইল এনকোডিং হিসাবে ব্যবহার করার সময় কোনও সমস্যা হওয়া উচিত নয়। এইভাবে আপনাকে ব্যবহার করতে হবে না |raw
(কারণ এটি কোনও সুরক্ষা সমস্যার কারণ হতে পারে)।
এর চেয়ে আরও মার্জিত সমাধান হ'ল শব্দের সংখ্যা দ্বারা (এবং অক্ষরের সংখ্যা দ্বারা নয়) পাঠ্য সীমাবদ্ধ করা। এটি কুৎসিত টিয়ার প্রতিরোধ করে (উদাঃ 'স্ট্যাকভ ...')।
এখানে একটি উদাহরণ যেখানে আমি কেবলমাত্র 10 টি শব্দের চেয়ে বেশি পাঠ্য ব্লককে ছোট করে রেখেছি:
{% set text = myentity.text |split(' ') %}
{% if text|length > 10 %}
{% for t in text|slice(0, 10) %}
{{ t }}
{% endfor %}
...
{% else %}
{{ text|join(' ') }}
{% endif %}
সীমা অতিক্রম করার পরে একটি স্ট্রিং কেটে দেওয়ার জন্য কাটা ফিল্টারটি ব্যবহার করুন
{{ "Hello World!"|truncate(5) }} // default separator is ...
হ্যালো...
আপনি দ্বিতীয় প্যারামিটারটিকে সত্য হিসাবে সেট করে পুরো শব্দগুলি সংরক্ষণ করার জন্য কেটেঙ্কেটকে বলতে পারেন। শেষ শব্দটি পৃথককারীটিতে থাকলে, ছাঁটাইটি পুরো শব্দটি মুদ্রণ করে।
{{ "Hello World!"|truncate(7, true) }} // preserve words
এখানে হ্যালো ওয়ার্ল্ড!
আপনি যদি বিভাজকটি পরিবর্তন করতে চান তবে কেবলমাত্র আপনার পছন্দসই পৃথককে তৃতীয় প্যারামিটার সেট করুন set
{{ "Hello World!"|truncate(7, false, "??") }}
হ্যালো ডাব্লু ??
টুইগ 2 এবং টুইগ 3 এর জন্য আপডেট।
ছাঁটাই ফিল্টার উপলভ্য নয়, এর পরিবর্তে আপনি ইউ-ফিল্টার ব্যবহার করতে পারেন
এখানে একটি উদাহরণ:
{{ 'Lorem ipsum'|u.truncate(8) }}
Lorem ip
{{ 'Lorem ipsum'|u.truncate(8, '...') }}
Lorem...
দ্রষ্টব্য: এই ফিল্টারটি স্ট্রিংএক্সটেনশনের অংশ যা দ্বারা প্রয়োজনীয় হতে পারে
twig/string-extra
আমি একই উদ্দেশ্যে এই সাধারণ মার্কোটি লিখেছি, আশা করি এটি সহায়তা করে:
{%- macro stringMaxLength(str, maxLength) -%}
{%- if str | length < maxLength -%}
{{ str }}
{%- else -%}
{{ str|slice(0, maxLength) }}...
{%- endif -%}
{%- endmacro -%}
ব্যবহারের উদাহরণ # 1 (আউটপুট: "আমার দীর্ঘ স্ট্রিং এখানে ..."):
{{ _self.stringMaxLength("my long string here bla bla bla la", 20) }}
ব্যবহারের উদাহরণ # 2 (আউটপুট: "খাটো স্ট্রিং!"):
{{ _self.stringMaxLength("shorter string!", 20) }}
নতুন ড্রুপাল 8 টি সক্ষমতা এখানে বগিটি * আমাদের নিজস্ব লেখার জন্য অনুপ্রাণিত করেছে:
<a href="{{ view_node }}">{% if title|length > 32 %}{% set title_array = title|split(' ') %}{% set title_word_count = 0 %}{% for ta in title_array %}{% set word_count = ta|length %}{% if title_word_count < 32 %}{% set title_word_count = title_word_count + word_count %}{{ ta }} {% endif %}{% endfor %}...{% else %}{{ title }}{% endif %}</a>
এটি উভয় শব্দ এবং অক্ষর বিবেচনায় নেয় (* ডি 8-তে "শব্দ সীমানা" সেটিংস কিছুই প্রদর্শন করছে না)।
এইচটিএমএল অক্ষর ব্যবহার করা ভাল
{{ entity.text[:50] }}…
…
।
...
এবং এটা এমন একটা মগের মুল্লুক নয়…