@degressor

Как отобразить output от моего модуля для друпала в одной странице по среди текста?

Здравствуйте,

начал работу с drupal 6, первое задание сделать карту филиалов и поместить её по в странице с текстом. Для карты сделал модуль, работает, но вот как её теперь выдать посреди страницы не пойму. Как варианты вижу:
а) чере Iframe — извращение?
б) выдать как блок, а блок показывать только на этой самой странице, но тогда блок будет вызываться при каждом запросе к странице? или как-то можно его вызывать только на одной конкретной?
в) каким то образом выдать в темплейте? только не пойму где имено.
г) как-то использовать preprocess функцию для темплейта, но не совсем понимаю как.

Есть идеи?
  • Вопрос задан
  • 2636 просмотров
Пригласить эксперта
Ответы на вопрос 4
Anonym
@Anonym
Программирую немного )
Вам на drupal.ru
Ответ написан
Комментировать
Anonym
@Anonym
Программирую немного )
И не пинайте уже Drupal 6. Седьмая версия намного лучше, да и восьмая не за горами.
Ответ написан
Комментировать
Anonym
@Anonym
Программирую немного )
Ну а если по-существу, предлагаю варианты:
1) Создайте в теме регион и в page.tpl.php выведите его в нужном месте. В регионе расположите ваш блок, в настройках блока укажите «Показывать только на определенных страницах».
2) В препроцессе node или page допишите в content в нужное место.
3) Прямо в шаблоне page.tpl.php или node.tpl.php выведите ваш контент в нужном месте.
Ответ написан
Комментировать
@artemln
Можете использовать небольшой снипет, который позволит создавать шаблоны типа: node-NODETYPE-VIEWMODE.tpl.php

/**
 * Implements hook_preprocess_node() for node theming.
 */
function THEMENAME_preprocess_node(&$vars, $hook) {
  $node = $vars['node'];
  // Calculate build mode machine name.
  switch ($node->build_mode) {
    case NODE_BUILD_NORMAL:
    case NODE_BUILD_PREVIEW:
      $build_mode = $vars['teaser'] ? 'teaser' : 'full';
      break;

    case NODE_BUILD_SEARCH_RESULT:
      $build_mode = 'teaser';
      break;

    case NODE_BUILD_RSS:
      $build_mode = 'rss';
      break;
    default:
      $build_mode = $node->build_mode;
      break;
  }

  $vars['template_files'][] = 'node--' . $build_mode;
  $vars['template_files'][] = 'node-' . $node->type . '-' . $build_mode;

  $build_mode_for_preprocess = str_replace('-', '_', $build_mode);
  // Defines the priority of calling preprocess fuctions for specific nodetype & build modes.
  // Note: priority is calculated in reverse mode.
  $preprocess = array(
    'THEMENAME_preprocess_node_' . $node->type,
    'THEMENAME_preprocess_node__' . $build_mode_for_preprocess,
    'THEMENAME_preprocess_node_' . $node->type . '_' . $build_mode_for_preprocess,
  );

  // Run existing preprocesses.
  foreach (array_reverse($preprocess) as $function) {
    if (function_exists($function)) {
     $function($vars, $hook);
     // Note, that we call only one preprocess, but it could be easily changed.
     break;
    }
  }
}

Для D6, что бы все заработало нужно стандартный (либо ваш переопределенный) шаблон ноды — node.tpl.php, положить в туже папку где будут лежать специфичные шаблоны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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