I have two types of nodes: metals and prices.

Metals has two fields:




How to render this fields on node--prices.html.twig (not node--metals.html.twig)

Please, help me!

  • what's the relationship between metals and prices, one of them refer to another ??
    – berramou
    Nov 13 '18 at 10:27
  • No, I did not make any relationship. Nov 13 '18 at 10:29
  • 2
    I think should be a relationship between the two nodes, otherwise will not know the fields of which metals node should show on which prices.
    – berramou
    Nov 13 '18 at 10:31
  • Theoretically, if I establish a relationship between them, then it will be possible to display the field of one node in the TWIG(!!!) template of another? Nov 13 '18 at 10:37
  • Better configure in UI how to display the referenced node. For TWIG see drupal.stackexchange.com/questions/198694/…
    – 4k4
    Nov 13 '18 at 10:52

After you made reference between prices and metals implement hook_preprocess_node like the following:

use Drupal\node\Entity\Node;
 * Implements hook_preprocess_node().
function MyTemplate_preprocess_node(&$variables) {
  if ($variables['node']->bundle() == 'prices') {
    $price_node = $variables['node'];
    //- Get reference target id
     * @TODO: change field_reference_metals by the referenced field.
    $metals_node_target_id = $price_node->field_reference_metals->getValue()[0]['target_id'];

    //- Load metals referred node
    $metals_node = Node::load($metals_node_target_id);

    //- Set field_gold from metals node
    $variables['field_gold'] = $metals_node->field_gold->value;
    //- Set field_silver from metals node
    $variables['field_silver'] = $metals_node->field_silver->value;

In node--prices.html.twig template add:

   {{ field_gold }}
   {{ field_silver }}
  1. Change MyTemplate by your custom theme/module name.
  2. Change field_reference_metals by the field from your prices content type referred to metals.
  3. clear cache.
  • Thank you for your time. I did everything as you indicated, but I get an error The website encountered an unexpected error. Please try again later. Error: Class 'Node' not found in unctema_preprocess_node() (line 59 of themes\unctema\unctema.theme). Nov 15 '18 at 9:29
  • $metal_prices_node = Node::load($metal_prices_node_target_id); Nov 15 '18 at 9:32
  • 1
    add this use Drupal\node\Entity\Node; on top of your file unctema.theme
    – berramou
    Nov 15 '18 at 9:32
  • Now site works, but I see error under my node - User error: "value" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core\lib\Drupal\Core\Render\Element.php). and I do not see the value from metal fields... Nov 15 '18 at 9:36
  • Try with the edit use ->value instead of ->getValue() ?
    – berramou
    Nov 15 '18 at 9:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.