Craft CMS Asked on April 9, 2021
I have a use case where I need to set a maxChars
variable to pass into the Wordsmith plugin’s chop
parameters.
So I know I can do this (with the Empty Coalesce plugin):
{% set maxChars = matrixBlock.maxChars ??? null %}
{% set intro = entry.intro ??? null %}
{% if intro and maxChars %}
{% set intro = intro|md|chop(limit= maxChars, unit='c', allowedTags='<p><em><strong><a>') %}
{% endif %}
…
<div class="whatever">
{{ intro|raw }}
</div>
But maxChars
might be null
and I might want the allowedTags
string to be a variable too, so it would be handy to be able to set the chop parameters as a hash and pass them in.
The following doesn’t seem to work, but is there something that does?
{# Default tags permitted #}
{% set chopArgs = { allowedTags: '<p>' } %}
{# Custom tag list #}
{% set tagList = matrixBlock.tagList ??? null %}
{% if maxChars %}
{% set chopArgs = chopArgs|merge({ limit: maxChars, unit: 'c' }) %}
{% endif %}
{% if tagList %}
{% set chopArgs = chopArgs|merge({ allowedTags: tagList }) %}
{% endif %}
…
{% if intro %}
{% set intro = intro|md|chop(chopArgs) %}
{% endif %}
Your only problem here is limit
but would something like this work for you?
{# Default tags permitted #}
{% set defaultTags = "<p>" %}
{# Concatenate default + custom tags #}
{% set allowedTags = defaultTags ~ matrixBlock.tagList ?? null %}
{# Limit - use if provided or set to unlimited using a huge number #}
{% set limit = matrixBlock.maxChars ?? 1000000000000000 %}
{% if intro %}
{% set intro = intro|md|chop(limit= limit, unit='c', allowedTags=allowedTags) %}
{% endif %}
Answered by Oli on April 9, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP