Добавление контекстных ссылок в плагин настраиваемого типа контента Ctools

Пользовательский тип контента Ctools, называемый Custom Panes, показывает контекстные ссылки, когда у вас есть разрешение на доступ, и вы наводите курсор на панель (так же, как блок показывает контекстные ссылки), что позволяет вам легко настраивать содержимое панели. Создав свой собственный плагин, похожий на тип содержимого пользовательских панелей (с несколькими настраиваемыми полями), я заметил, что у меня нет контекстных ссылок, когда я наводил курсор на свои собственные панели. Мне интересно, могу ли я установить это в определении плагина $, чтобы показывать контекстные ссылки или то, что будет работать. Я нашел функцию шаблона, которую панели используют для template_preprocess_panels_pane(&$vars), который фактически ищет $vars['content']->content['#contextual_links']. Мне интересно, есть ли способ добавить контекстные ссылки к настраиваемым плагинам контента типа ctools?

Любые советы были бы замечательными!

5 голосов | спросил tthenne 31 Jpm1000000pmThu, 31 Jan 2013 23:21:16 +040013 2013, 23:21:16

2 ответа


0

Вам не нужно это делать, что вы можете сделать, это реализовать hook_menu_alter и сделать это.

function YOUR-MODULE_menu_alter(&$items) {
  $items['YOUR-PLUGIN-PATH/%ctools_export_ui/edit']['context'] = MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE;
}

, а затем добавьте свою контекстную ссылку на свой объект. Если это блок, вы можете добавить код ниже к вашему hook_block_view.

$block['content']['#contextual_links'] = array(
  'YOUR-CUSTOM-PLUGIN' => array('YOUR-PLUGIN-PATH', array($delta, 'edit'))
);
ответил heshanlk 2 MaramSat, 02 Mar 2013 02:51:19 +04002013-03-02T02:51:19+04:0002 2013, 02:51:19
0

Внутри обратного вызова рендеринга вашего собственного файла содержимого типа содержимого CTools вы можете указать admin_links.

Вот примерная панель со страницей редактирования сопутствующих URL в URL admin/config/custom/my_custom_pane_settings

<?php

$plugin = array(
  'title' => t('Custom Pane'),
  'single' => TRUE,
  'render callback' => 'my_custom_pane_render',
  'defaults' => array(),
  'category' => t('Page elements'),
  'edit form' => 'my_custom_pane_edit_form',
);

function my_custom_pane_edit_form($form, &$form_state) {
  return $form;
}

function my_custom_pane_render($subtype, $conf, $args, $context) {

  // Output.
  $block = new stdClass();

  // Define pane title & content.
  $block->title = 'Default pane title';
  $block->content = 'My custom pane content';

  // Add custom contextual links.
  $block->admin_links = array(
    'my_custom_pane' => array(
      'title' => t('Edit my custom pane'),
      'href' => 'admin/config/custom/my_custom_pane_settings',
      'query' => array(
        'destination' => current_path(),
      ),
    ),
  );

  return $block;
}
ответил JamesWilson 20 AM00000020000005631 2015, 02:01:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132