monster_menus-9.0.x-dev/monster_menus.views.inc

monster_menus.views.inc
<?php

/**
 * @file
 * Provide views data for monster_menus.module.
 */

/**
 * Implements hook_views_data().
 */
function monster_menus_views_data() {
  $data = [];
  $node_group = t('Content');

  // ----------------------------------------------------------------------
  // mm_recycle table

  $data['mm_recycle']['table']['group'] = $node_group;
  $data['mm_recycle']['table']['join'] = [
    'node_field_data' => [
      'field' => 'id',
      'left_table' => 'node_field_data',
      'left_field' => 'nid',
      'extra' => [['field' => 'type', 'value' => 'node']],
    ],
    'mm_tree' => [
      'field' => 'id',
      'left_table' => 'mm_tree',
      'left_field' => 'mmtid',
      'extra' => [['field' => 'type', 'value' => 'cat']],
    ],
  ];
  $data['mm_recycle']['table']['entity type'] = 'node';

  $data['mm_recycle']['recycled'] = [
    'title' => t('Recycled'),
    'help' => t('Whether or not the node is in a recycle bin'),
    'filter' => [
      'id' => 'is_recycled',
      'real field' => 'id',
    ],
  ];

  // ----------------------------------------------------------------------
  // mm_node_schedule table

  $data['mm_node_schedule']['table']['group'] = $node_group;
  $data['mm_node_schedule']['table']['join'] = [
    'node_field_data' => [
      'field' => 'nid',
      'left_field' => 'nid',
    ],
  ];

  $data['mm_node_schedule']['publish_on'] = [
    'title' => t('Publish On (MM)'),
    'help' => t('When to start publishing a node'),
    'sort' => [
      'id' => 'standard',
    ],
    'field' => [
      'real field' => 'publish_on',
      'id' => 'date',
      'click sortable' => TRUE,
    ],
    'filter' => [
      'id' => 'date',
      'label' => t('Is Published'),
    ],
  ];

  $data['mm_node_schedule']['unpublish_on'] = [
    'title' => t('Unpublish On (MM)'),
    'help' => t('When to stop publishing a node'),
    'sort' => [
      'id' => 'standard',
    ],
    'field' => [
      'real field' => 'unpublish_on',
      'id' => 'date',
      'click sortable' => TRUE,
    ],
    'filter' => [
      'id' => 'date',
      'label' => t('Is Unpublished'),
    ],
  ];

  // ----------------------------------------------------------------------
  // mm_node_reorder table

  $data['mm_node_reorder']['table']['group'] = $node_group;
  $data['mm_node_reorder']['table']['join'] = [
    'node_field_data' => [
      'field' => 'nid',
      'left_field' => 'nid',
    ],
  ];

  $data['mm_node_reorder']['weight'] = [
    'title' => t('Node Weight (MM)'),
    'help' => t('The order of this node on the MM page'),
    'sort' => [
      'id' => 'standard',
    ],
  ];

  // ----------------------------------------------------------------------
  // mm_node2tree table

  $data['mm_node2tree']['table']['group'] = $node_group;
  // Explain how this table joins to others.
  $data['mm_node2tree']['table']['join'] = [
    'node_field_data' => [
      'field' => 'nid',
      'left_field' => 'nid',
      'type' => 'INNER',
    ],
  ];
  $data['mm_node2tree']['table']['entity type'] = 'node';

  $data['mm_node2tree']['mmtid'] = [
  // Appears in views UI.
    'title' => t('Content on page(s)'),
    'help' => t('Content on one or more pages in MM.'),
    'relationship' => [
      'base' => 'node_field_data',
      'base field' => 'nid',
      'relationship field' => 'nid',
      'id' => 'standard',
      'label' => t('Content on page(s)'),
    ],
    'argument' => [
      'id' => 'many_to_one',
      'numeric' => TRUE,
      'label' => t('Content on page(s)'),
    ],
  ];

  return $data;
}

/**
 * Implements hook_views_data_alter().
 */
function monster_menus_views_data_alter(&$data) {
  if (isset($data['node_field_data'])) {
    $data['node_field_data']['mm_tree'] = [
      'title' => t('Page(s) containing this content'),
      'help' => t('Page(s) on which this content appears'),
      'relationship' => [
        'label' => t('Page(s) containing this content'),
        'base' => 'mm_tree',
        'base field' => 'mmtid',
        'id' => 'sequential_join',
        'relationship_table' => 'node_field_data',
        'joins' => [
          [
            'left table' => 'node_field_data',
            'left field' => 'nid',
            'table' => 'mm_node2tree',
            'field' => 'nid',
          ],
          [
            'left field' => 'mmtid',
            'table' => 'mm_tree',
            'field' => 'mmtid',
          ],
        ],
      ],
    ];
  }

  if (isset($data['node'])) {
    $data['node']['version_history']['field'] = [
      'title' => t('Link to revision history'),
      'help' => t('Provide a link to the node\'s revision history.'),
      'id' => 'node_link_version_history',
    ];
  }
}

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

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