reactjs_mount-8.x-1.0-alpha2/reactjs_mount.module

reactjs_mount.module
<?php

/**
 * @file
 * Contains reactjs_mount.module.
 */

use Drupal\node\Entity\Node;
use Drupal\Component\Utility\Html;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function reactjs_mount_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the reactjs_mount module.
    case 'help.page.reactjs_mount':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Module for mounting ReactJS to a node') . '</p>';
      return $output;

    default:
  }
}

/**
 * Implements hook_theme().
 */
function reactjs_mount_theme($existing, $type, $theme, $path) {
  return [
    'reactjs_mount' => [
      'render element' => 'children',
    ],
    'node__reactjs_mount' => [
      'template' => 'node--reactjs-mount',
      'preprocess functions' => ['reactjs_mount_preprocess_node'],
    ],
  ];
}

/**
 * Implements hook_preprocess_node()
 */
function reactjs_mount_preprocess_node(&$vars) {
  // Make sure it's the right content type.
  if ($vars['elements']['#node']->getType() == 'react_mount_node') {

    // Get the nid to load the node and get the content.
    $nid = $vars['elements']['#node']->id();
    $node = Node::load($nid);

    // Get the value for the set ID.
    $div_id_field = $node->get('field_div_id');
    $div_id = $div_id_field->getValue();

    // Set the ID to the vars array to use in the twig.
    $vars['div_id'] = Html::escape($div_id[0]['value']);

    // Get the attached library from the node.
    $lib_field = $node->get('field_attached_library');
    $lib = $lib_field->getValue();
    if (isset($lib[0]['value'])) {
      $vars['my_lib'] = Html::escape($lib[0]['value']);
    }
    else {
      drupal_set_message(t('No library has been attached to this node'), 'error');
    }
  }
}

/**
 * Implements hook_theme_suggestions_HOOK_alter() for node templates.
 */
function reactjs_mount_theme_suggestions_node_alter(array &$suggestions, array $variables) {
  // Only force this template if it's a content type built for react.
  if ($variables['elements']['#node']->getType() == 'react_mount_node') {
    $suggestions[] = 'node__reactjs_mount';
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc