Урок один. Создаем модуль на Drupal. Как с Drupal создать форму и вывести данные из формы на этой или другой страници. Хук hook

Прислано: _Lenchik

пн, 09/01/2012 - 02:18

Пример 1. Как с Drupal создать форму и вывести данные из формы на этой или другой страници.

------------------------
| Создаем форму |
------------------------
|
---------------------------------------------------------------------
| Выводим данные с помощью функции variable_get() |
----------------------------------------------------------------------

Для этого:
Создаем модуль.
Для этого:

- создаем папку и называем ее по названию модуля, например urokone и сохраняем его в my_site/sites/all/modules

- в этой папке создаем в notepad++ два файла в формате utf-8 without BOM. Что такое BOM и где скачать notepad++ смотрим в википедии.

Создаем два файла в этой папке и называем их
urokone.info
urokone.module

Темизация Блока модуля

Прислано: AK_design

пн, 28/02/2011 - 09:21

Хочу создать модуль который выводит простой блок, а содержание блока можно менять с помощью темы/темплейта( например block-example.tpl.php в папке с модулем, который потом можно перекрыть).

вот текст модуля block-example.module:


<?php
function block_example_menu() {
  
$items['examples/block_example'] = array(
    
'page callback' => 'block_example_page',
    
'access callback' => TRUE,
    
'title' => 'Block Example',
  );
  return 
$items;
}

/**
 * Simple page function to explain what the block example is about.
 */
function block_example_page() {
  
$page = array(
    
'#type' => 'markup',
    
'#markup' => t('The Block Example provides one  price block.'),
  );
  return 
$page;
}


function 
block_example_block_info() {
  
$blocks['example_configurable_text'] = array(
    
// info: The name of the block.
    
'info' => t('Example: configurable text string'),
    
// Block caching options (per role, per user, etc.)
    
'cache' => DRUPAL_CACHE_PER_ROLE// default
  
);
  return 
$blocks;
}


function 
block_example_block_view($delta 0) {
    
$name 'Andrey';
      
$block['content'] = theme('block_example_content'$name);
  return 
$block;
}

function 
block_example_theme() {
  return array(
    
'block_example_content' => array(
      
'arguments' => array('name' => NULL))
  );
}

function 
theme_block_example_content($name){
    return 
'Hello ' $name;
}
?>

Модуль вообще не выводится! Подскажите где ошибка ?
Листинг выше пока без внешнего темплейта, но и он не работает.

как задать видимость блока в модуле?

Прислано: WiseMan

вт, 30/03/2010 - 12:28

Другие статьи по теме:

Решил написать небольшой модуль для облегчения задачи управления видимостью блоков на страницах словарей и их терминов.

Все это можно сделать сниппетом (приведу ниже, мож кому пригодится), но для менеджера сайта это слишком сложно.

Споткнулся на этапе, когда нужно вывести блок. Настройки, с указанием в каком словаре выводить - сделал:

<?php
/**
 * Implementation of hook_form_alter().
 */
function custom_mod_form_alter(&$form, &$form_state$form_id) {
  if ((
$form_id == 'block_admin_configure' || $form_id == 'block_box_form' || $form_id == 'block_add_block_form')) {

      
$module $form['module']['#value'];
      
$delta $form['delta']['#value'];
      
      
$form['custom_mod_vis_settings'] = array(
        
'#type' => 'fieldset',
        
'#title' => t('Vocabulary visibility settings'),
        
'#collapsible' => TRUE,
        
'#collapsed' => FALSE,
        
'#weight' => 0,
      );

  
// Vocab-based visibility settings
  
$default_vocab_vis_options = array();
  
$result db_query("SELECT vid FROM {blocks_vocabulary} WHERE module = '%s' AND delta = '%s'"$module$delta);
  while (
$vocab db_fetch_object($result)) {
    
$default_vocab_vis_options[] = $vocab->vid;
  }
  
$result db_query('SELECT vid, name FROM {vocabulary} ORDER BY name');
  
$vocab_vis_options = array();
  while (
$vocab db_fetch_object($result)) {
    
$vocab_vis_options[$vocab->vid] = $vocab->name;
  }  
      
     
$form['custom_mod_vis_settings']['vocab_visability_blocks'] = array(
    
'#type' => 'radios'//checkboxes?>

Разработка модуля на примере создания блока

Прислано: i_byte

вс, 28/02/2010 - 17:53

Судя по форуму, количество людей работающих с Drupal не так уж и мало, а количество и объем русскоязычных статей о разработке модулей под Drupal оставляют желать лучшего. Поэтому решил один раз сесть, разобраться, написать русскоязычную документацию по написанию шаблона для модуля типа блок, дабы каждый раз не вгрызаться в дебри англоязычного текста.
Приведенный ниже материал является вольной интерпретацией документации с drupal.org. Попытался не обойти стороной и локализацию модуля. Подразумевается, что используется переведенный на русский "движок" Drupal. В конце теории будет приведен код простого модуля для отображения самых активных пользователей сайта на основе подсчета количества оставленных комментариев.
Любые конструктивные замечания и советы приветствуются.
Итак

Разработка модулей для Drupal 6.x на примере блока

В каталоге modules создаем каталог латиницей по имени модуля (без пробелов)
Создаем файл латиницей имямодуля.info
В файле необходимо заполнить как минимум следующие данные

; $Id$
name = Module name
description = A description of what your module does.
core = 6.x

где
; $Id$ - тег для подстановки системой контроля версий (CVS) номера версии, даты создания и автора данного файла; используется при публикации модуля на drupal.org и контроля версий

name - отображаемое имя модуля

Изменить вывод блока

Прислано: player

вт, 11/08/2009 - 10:08

Другие статьи по теме:

Можно ли изменить вывод блока? Имеется в виду не темизация, а добавление или изменение вывода данных. Ну что-то типа hook_nodeapi только для блока. Или нужно свой блок писать?

(решено) проблема с hook_block

Прислано: karakurt

пт, 28/11/2008 - 11:06

Другие статьи по теме:

решил написать модуль для D6 и сразу же столкнулся с проблемой...
модуль mymod.module:

<?php
// $Id$

function mymod_block($op 'list'$delta 0$edit = array()) {
  if (
$op == 'list') {
    
$blocks[0]['info'] = t('mymod');
    return 
$blocks;
  } else if (
$op == 'view') {
    
$output '';
    
$output .= '<div id=mymod>'t('mymod_text') .'</div>';

    if (
$output) {
      
$block['subject'] = t('mymod_subject');
      
$block['content'] = $output;
      return 
$block;
    }
  }
}
?>

в результате напрочь пропадают все менюшки, и не пойму что за касяк :(

id нодов на странице в hook_block()

Прислано: jeehadina

пт, 11/07/2008 - 04:28

Другие статьи по теме:

Товарищи,
можно ли получить доступ к списку всех nid'ов со страницы из хука hook_block()?
Имеется в виду страница с пейджером, на которой находятся анонсы материалов.
Так вот мне нужны айдишники этим самых анонсов.
Пожалуйста, направте на путь правильный.
Заранее благодарен!

RSS-материал

Новое на сайте

Ссылки партнёров