Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 2.0.x
  • 7.x-1.x
  • 8.x-1.x
  • 2.0.0
  • 2.0.0-alpha1
5 results

Target

Select target project
  • project/token_entity_render
  • issue/token_entity_render-3425042
  • issue/token_entity_render-3435049
  • issue/token_entity_render-3515134
4 results
Select Git revision
  • 2.0.x
  • 7.x-1.x
  • 8.x-1.x
  • project-update-bot-only
  • 2.0.0-alpha1
5 results
Show changes
name: Token Entity Render
description: Provides tokens that render full entities using view mode specified
type: module
core_version_requirement: ^9 || ^10
core_version_requirement: ^9 || ^10 || ^11
package: Token
......@@ -12,7 +12,7 @@ use Drupal\Core\Render\BubbleableMetadata;
*/
function token_entity_render_token_info_alter(array &$data) {
// Load all possible view modes.
$all_view_modes = \Drupal::service('entity.manager')->getStorage('entity_view_mode')->loadMultiple();
$all_view_modes = \Drupal::service('entity_type.manager')->getStorage('entity_view_mode')->loadMultiple();
// Traverse all view modes.
foreach ($all_view_modes as $mode) {
......@@ -67,21 +67,22 @@ function token_entity_render_tokens($type, array $tokens, array $data, array $op
}
// Load all possible view modes.
$all_view_modes = \Drupal::service('entity.manager')->getStorage('entity_view_mode')->loadMultiple();
$all_view_modes = \Drupal::service('entity_type.manager')->getStorage('entity_view_mode')->loadMultiple();
// Traverse again all tokens to process.
$renderer = \Drupal::service('renderer');
foreach ($to_process as $token_replaceable_value => $view_mode_name) {
$target_view_mode = $data['entity_type'] . '.' . $view_mode_name;
// If the view mode actually exists and if the entity type matches.
if (($view_mode = $all_view_modes[$data['entity_type'] . '.' . $view_mode_name])) {
// The view mode name does not have the entity name.
$mode_machine_name = substr($view_mode->id(), strlen($view_mode->getTargetType()) + 1);
$rendered_entity = \Drupal::entityTypeManager()->getViewBuilder($view_mode->getTargetType())->view($data['entity'], $mode_machine_name);
// Add the replacement.
$replacements[$token_replaceable_value] = $renderer->renderPlain($rendered_entity);
if (!isset($all_view_modes[$target_view_mode])) {
continue;
}
$view_mode = $all_view_modes[$target_view_mode];
// The view mode name does not have the entity name.
$mode_machine_name = substr($view_mode->id(), strlen($view_mode->getTargetType()) + 1);
$rendered_entity = \Drupal::entityTypeManager()->getViewBuilder($view_mode->getTargetType())->view($data['entity'], $mode_machine_name);
// Add the replacement.
$replacements[$token_replaceable_value] = $renderer->renderPlain($rendered_entity);
}
// Return replacements, if any.
......