How do I use 2 different taxonomy view modes on one node page?
On a node page I have a term reference field. This term contains 3 fields
For the term I've created a few view modes:
- view_mode_first contains: field_1
- view_mode_second contains: field_2, field_3
hook theme suggestions:
function theme_theme_suggestions_taxonomy_term_alter(array &$suggestions, array $variables) {
$term = $variables['elements']['#taxonomy_term'];
array_splice($suggestions, 2, 0, 'taxonomy_term__' . $term->bundle() . '__' . $variables['elements']['#view_mode']);
}
node field template, where I'm displaying referenced terms:
{% for item in items %}
{% set first = item.content|merge({'#view_mode': 'view_mode_first'}) %}
{{ first }}
{% endfor %}
{% for item in items %}
{% set second = item.content|merge({'#view_mode': 'view_mode_second'}) %}
{{ second }}
{% endfor %}
But as a result I'm getting the same templates everywhere: taxonomy-term--name--view-mode-first.html.twig and not a taxonomy-term--name--view-mode-second.html.twig
I found that if I disable render cache in a settings.local file, both templates work:
$settings['cache']['bins']['render'] = 'cache.backend.null';
Is there possibility to disable render cache for specific node and/or fields?
theming taxonomy-terms
add a comment |
On a node page I have a term reference field. This term contains 3 fields
For the term I've created a few view modes:
- view_mode_first contains: field_1
- view_mode_second contains: field_2, field_3
hook theme suggestions:
function theme_theme_suggestions_taxonomy_term_alter(array &$suggestions, array $variables) {
$term = $variables['elements']['#taxonomy_term'];
array_splice($suggestions, 2, 0, 'taxonomy_term__' . $term->bundle() . '__' . $variables['elements']['#view_mode']);
}
node field template, where I'm displaying referenced terms:
{% for item in items %}
{% set first = item.content|merge({'#view_mode': 'view_mode_first'}) %}
{{ first }}
{% endfor %}
{% for item in items %}
{% set second = item.content|merge({'#view_mode': 'view_mode_second'}) %}
{{ second }}
{% endfor %}
But as a result I'm getting the same templates everywhere: taxonomy-term--name--view-mode-first.html.twig and not a taxonomy-term--name--view-mode-second.html.twig
I found that if I disable render cache in a settings.local file, both templates work:
$settings['cache']['bins']['render'] = 'cache.backend.null';
Is there possibility to disable render cache for specific node and/or fields?
theming taxonomy-terms
add a comment |
On a node page I have a term reference field. This term contains 3 fields
For the term I've created a few view modes:
- view_mode_first contains: field_1
- view_mode_second contains: field_2, field_3
hook theme suggestions:
function theme_theme_suggestions_taxonomy_term_alter(array &$suggestions, array $variables) {
$term = $variables['elements']['#taxonomy_term'];
array_splice($suggestions, 2, 0, 'taxonomy_term__' . $term->bundle() . '__' . $variables['elements']['#view_mode']);
}
node field template, where I'm displaying referenced terms:
{% for item in items %}
{% set first = item.content|merge({'#view_mode': 'view_mode_first'}) %}
{{ first }}
{% endfor %}
{% for item in items %}
{% set second = item.content|merge({'#view_mode': 'view_mode_second'}) %}
{{ second }}
{% endfor %}
But as a result I'm getting the same templates everywhere: taxonomy-term--name--view-mode-first.html.twig and not a taxonomy-term--name--view-mode-second.html.twig
I found that if I disable render cache in a settings.local file, both templates work:
$settings['cache']['bins']['render'] = 'cache.backend.null';
Is there possibility to disable render cache for specific node and/or fields?
theming taxonomy-terms
On a node page I have a term reference field. This term contains 3 fields
For the term I've created a few view modes:
- view_mode_first contains: field_1
- view_mode_second contains: field_2, field_3
hook theme suggestions:
function theme_theme_suggestions_taxonomy_term_alter(array &$suggestions, array $variables) {
$term = $variables['elements']['#taxonomy_term'];
array_splice($suggestions, 2, 0, 'taxonomy_term__' . $term->bundle() . '__' . $variables['elements']['#view_mode']);
}
node field template, where I'm displaying referenced terms:
{% for item in items %}
{% set first = item.content|merge({'#view_mode': 'view_mode_first'}) %}
{{ first }}
{% endfor %}
{% for item in items %}
{% set second = item.content|merge({'#view_mode': 'view_mode_second'}) %}
{{ second }}
{% endfor %}
But as a result I'm getting the same templates everywhere: taxonomy-term--name--view-mode-first.html.twig and not a taxonomy-term--name--view-mode-second.html.twig
I found that if I disable render cache in a settings.local file, both templates work:
$settings['cache']['bins']['render'] = 'cache.backend.null';
Is there possibility to disable render cache for specific node and/or fields?
theming taxonomy-terms
theming taxonomy-terms
asked Dec 9 '18 at 12:50
IanIan
487
487
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
The problem is that the view mode is also part of the cache keys and you would need to update them as well to avoid that both view modes are cached under the same cache id.
Is there possibility to disable render cache for specific node and/or
fields?
Yes, this is another possibility, you can disable caching of specific entities, in this case taxonomy terms, by removing the cache keys, which are in the #cache
property. It's easier to manipulate this array in PHP, but this should also be possible in Twig. You can try to get #cache with the filter |without('keys')
and merge it later with first
and second
.
You can also try to remove #cache
completely from the second rendering
{{ second|without('#cache') }}
because all relevant cache metadata should bubble up already from the first rendering of the taxonomy term.
Wow!without('#cache')
did the trick. Thanks a lot for your help and explanation!
– Ian
Dec 10 '18 at 7:43
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "220"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f273748%2fhow-do-i-use-2-different-taxonomy-view-modes-on-one-node-page%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The problem is that the view mode is also part of the cache keys and you would need to update them as well to avoid that both view modes are cached under the same cache id.
Is there possibility to disable render cache for specific node and/or
fields?
Yes, this is another possibility, you can disable caching of specific entities, in this case taxonomy terms, by removing the cache keys, which are in the #cache
property. It's easier to manipulate this array in PHP, but this should also be possible in Twig. You can try to get #cache with the filter |without('keys')
and merge it later with first
and second
.
You can also try to remove #cache
completely from the second rendering
{{ second|without('#cache') }}
because all relevant cache metadata should bubble up already from the first rendering of the taxonomy term.
Wow!without('#cache')
did the trick. Thanks a lot for your help and explanation!
– Ian
Dec 10 '18 at 7:43
add a comment |
The problem is that the view mode is also part of the cache keys and you would need to update them as well to avoid that both view modes are cached under the same cache id.
Is there possibility to disable render cache for specific node and/or
fields?
Yes, this is another possibility, you can disable caching of specific entities, in this case taxonomy terms, by removing the cache keys, which are in the #cache
property. It's easier to manipulate this array in PHP, but this should also be possible in Twig. You can try to get #cache with the filter |without('keys')
and merge it later with first
and second
.
You can also try to remove #cache
completely from the second rendering
{{ second|without('#cache') }}
because all relevant cache metadata should bubble up already from the first rendering of the taxonomy term.
Wow!without('#cache')
did the trick. Thanks a lot for your help and explanation!
– Ian
Dec 10 '18 at 7:43
add a comment |
The problem is that the view mode is also part of the cache keys and you would need to update them as well to avoid that both view modes are cached under the same cache id.
Is there possibility to disable render cache for specific node and/or
fields?
Yes, this is another possibility, you can disable caching of specific entities, in this case taxonomy terms, by removing the cache keys, which are in the #cache
property. It's easier to manipulate this array in PHP, but this should also be possible in Twig. You can try to get #cache with the filter |without('keys')
and merge it later with first
and second
.
You can also try to remove #cache
completely from the second rendering
{{ second|without('#cache') }}
because all relevant cache metadata should bubble up already from the first rendering of the taxonomy term.
The problem is that the view mode is also part of the cache keys and you would need to update them as well to avoid that both view modes are cached under the same cache id.
Is there possibility to disable render cache for specific node and/or
fields?
Yes, this is another possibility, you can disable caching of specific entities, in this case taxonomy terms, by removing the cache keys, which are in the #cache
property. It's easier to manipulate this array in PHP, but this should also be possible in Twig. You can try to get #cache with the filter |without('keys')
and merge it later with first
and second
.
You can also try to remove #cache
completely from the second rendering
{{ second|without('#cache') }}
because all relevant cache metadata should bubble up already from the first rendering of the taxonomy term.
edited Dec 9 '18 at 13:53
answered Dec 9 '18 at 13:26
4k44k4
50.5k55698
50.5k55698
Wow!without('#cache')
did the trick. Thanks a lot for your help and explanation!
– Ian
Dec 10 '18 at 7:43
add a comment |
Wow!without('#cache')
did the trick. Thanks a lot for your help and explanation!
– Ian
Dec 10 '18 at 7:43
Wow!
without('#cache')
did the trick. Thanks a lot for your help and explanation!– Ian
Dec 10 '18 at 7:43
Wow!
without('#cache')
did the trick. Thanks a lot for your help and explanation!– Ian
Dec 10 '18 at 7:43
add a comment |
Thanks for contributing an answer to Drupal Answers!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f273748%2fhow-do-i-use-2-different-taxonomy-view-modes-on-one-node-page%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown