User Tools

This is an old revision of the document!


Drupal

d7

d7 base modules

drush dl module_filter admin_menu views ctools pathauto sitemap bootstrap jquery_update date devel metatag xmlsitemap libraries transliteration token field_group autocomplete_deluxe entity rules calendar date_ical

simple drupal 7 field

external_image_link.info

name = External image field
description = "Display an image link as an image"
package = Fields
core = 7.x
files[] = external_image_field.module

external_image_link.install

/**
 * Implements hook_field_schema().
 */
function external_image_field_field_schema($field) {
  $columns = array(
    'title' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
    'thumb_url' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
    'full_url' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
  );
  return array(
    'columns' => $columns
  );
}

external_image_link.module

/**
 * Implements hook_field_info().
 */
function external_image_field_field_info() {
  return array(
    'external_image_field_external_image' => array(
      'label' => t('External image link'),
      'description' => t('Display a link to an image.'),
      'default_widget' => 'external_image_field_text',
      'default_formatter' => 'external_image_field_simple_text',
    ),
  );
}

/**
 * Implements hook_field_is_empty().
 */
function external_image_field_field_is_empty($item, $field) {
  return empty($item['full_url']);
}

/**
 * Implements hook_field_formatter_info().
 */
function external_image_field_field_formatter_info() {
  return array(
    'external_image_field_simple_text' => array(
      'label' => t('Simple text-based formatter'),
      'field types' => array('external_image_field_external_image'),
    ),
  );
}

/**
 * Implements hook_field_formatter_view().
 */
function external_image_field_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  foreach ($items as $delta => $item) {
    $variables = array(
      'path' => $item['thumb_url'],
      'alt' => 'Test alt',
      'title' => 'Test title',
      'attributes' => array(),
    );
    $element[$delta] = array(
      '#markup' => l(theme_image($variables), $item['full_url'], array('html' => TRUE, 'attributes' => array('title' => $item['title'], 'class' => 'colorbox'))),
    );
  }
  return $element;
}

/**
 * Implements hook_field_widget_info().
 */
function external_image_field_field_widget_info() {
  return array(
    'external_image_field_text' => array(
      'label' => t('Default'),
      'field types' => array('external_image_field_external_image'),
    ),
  );
}

/**
 * Implements hook_field_widget_form().
 */
function external_image_field_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $element['title'] = array(
    '#type' => 'textfield',
    '#title' => t('Image title'),
    '#default_value' => isset($items[$delta]['title']) ? $items[$delta]['title'] : '',
  );
  $element['thumb_url'] = array(
    '#type' => 'textfield',
    '#title' => t('Image thumb URL'),
    '#default_value' => isset($items[$delta]['thumb_url']) ? $items[$delta]['thumb_url'] : '',
  );
  $element['full_url'] = array(
    '#type' => 'textfield',
    '#title' => t('Image full URL'),
    '#default_value' => isset($items[$delta]['full_url']) ? $items[$delta]['full_url'] : '',
  );
  return $element;
}

/**
 * Implements hook_field_widget_error().
 */
function external_image_field_field_widget_error($element, $error, $form, &$form_state) {
  switch ($error['error']) {
    case 'external_image_field_invalid':
      form_error($element, $error['message']);
      break;
  }
}

function mymodule_menu() {
  $items['mymodule/%'] = array(
    'title' => 'My module callback',
    'type' => MENU_CALLBACK,
    'page callback' => 'mymodule_callback',
    'page arguments' => array(1),
    'access callback' => TRUE,
  );
}

function mymodule_node_view($node, $build_mode = 'full') {
  if ($node->type == 'mynodetype' && $build_mode == 'full') {
      $node->content['mylink'] = array(
        '#type' => 'link',
        '#title' => t('Do the magic'),
        '#href' => 'mymodule/'.$node->nid,
        '#prefix' => '<div id="mylink">',
        '#suffix' => '</div><div id="mylink-ajax-result"></div>',
        '#ajax' => array(
          'effect' => 'fade',
        ),
      );
  }
}

function mymodule_callback($nid) {
  $output = 'Yeah';
  $commands = array();
  $commands[] = ajax_command_replace('#mylink-ajax-result', $output);
  $page = array('#type' => 'ajax', '#commands' => $commands);
  ajax_deliver($page);
}

d7 quick vertical tabs

$form['main_fieldset'] = array(
  '#type' => 'fieldset',
  '#title' => 'my fieldset'
);
$form['main_fieldset']['mytabs'] = array(
  '#type' => 'vertical_tabs',
);
$form['main_fieldset']['other'] = array(
  '#type' => 'fieldset',
  '#title' => 'my fieldset',
  '#group' => 'mytabs'
);

d7 relations

Here are some pieces of code to play with nodes and “relation” module.

function relation_new_child_node_view($node, $build_mode = 'full') {
  if ($build_mode == 'full') {
    // get available relations
    $relation_types = relation_get_available_types('node', $node-&gt;type, 'target');
    if ($relation_types) {
      $content = array();
      foreach ($relation_types as $relation_type) {
        // get available node types
        $nodes_types = array();
        $items = array();
        foreach ($relation_type-&gt;source_bundles as $source_bundle) {
          $values = explode(':', $source_bundle);
          $nodes_types[$values[1]] = node_type_get_name($values[1]);
          $items[] = l(
            t('Create a new !type', array('!type' =&gt; $nodes_types[$values[1]])),
            'node/add/' . $values[1],
            array(
              'query' =&gt; array(
              'destination' =&gt; 'node/' . $node-&gt;nid,
                'rt' =&gt; $relation_type-&gt;relation_type,
                'nid' =&gt; $node-&gt;nid
              )
            )
          );
        }
        if (!empty($items)) {
          $content['relation_links'] = array(
            '#markup' =&gt; theme_item_list(array(
              'items' =&gt; $items,
              'title' =&gt; t('Create related content'),
              'type' =&gt; 'ul',
              'attributes' =&gt; array()
              ))
          );
        }
        // get related content
        $query = relation_query('node', $node-&gt;nid);
        $query-&gt;entityCondition('bundle', $relation_type-&gt;relation_type);
        $results = $query-&gt;execute();
        if ($results) {
          // get the related nodes
          $related_nodes = array();
          foreach ($results as $result) {
            $relation = relation_load($result-&gt;rid);
            $entities = field_get_items('relation', $relation, 'endpoints');
            $related_nodes[] = node_load((int)$entities[0]['entity_id']);
          }
          if (!empty($related_nodes)) {
            $nodes_types = array_unique($nodes_types);
            foreach ($nodes_types as $node_type =&gt; $node_type_name) {
              $items = array();
              foreach ($related_nodes as $related_node) {
                if ($related_node-&gt;type == $node_type) {
                  $items[] = l($related_node-&gt;title, 'node/' . $related_node-&gt;nid, array('attributes' =&gt; array('title' =&gt; $related_node-&gt;title)));
                }
              }
              if (!empty($items)) {
                $content['related_links'][$node_type] = array(
                  '#markup' =&gt; theme_item_list(array(
                    'items' =&gt; $items,
                    'title' =&gt; $node_type_name,
                    'type' =&gt; 'ul',
                    'attributes' =&gt; array()
                    ))
                );
              }
            }
          }
        }
      }
      if (!empty($content['related_links'])) {
        $node-&gt;content[] = $content['related_links'];
      }
      if (!empty($content['relation_links'])) {
        $node-&gt;content[] = $content['relation_links'];
      }
    }
  }
}

function relation_new_child_node_insert($node) {
  dsm('passed');
  if ((isset($_GET['rt']) &amp;&amp; !empty($_GET['rt'])) &amp;&amp; (isset($_GET['nid']) &amp;&amp; !empty($_GET['nid']))) {
    $endpoints = array();
    $endpoints[] = array('entity_type' =&gt; 'node', 'entity_id' =&gt; $node-&gt;nid);
    $endpoints[] = array('entity_type' =&gt; 'node', 'entity_id' =&gt; $_GET['nid']);

    $new_relation = relation_create($_GET['rt'], $endpoints);

    if ($rid = relation_save($new_relation)) {
      drupal_set_message(t('Relation created'), 'status', FALSE);
    }
    else {
      drupal_set_message(t('Creating relation failed'), 'warning', FALSE);
    }
  }
}

d8

d8 install

sudo apt install php-gd
sudo apt install php-mbstring
composer create-project drupal/recommended-project:8.x d8test

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information