Привет.
Новичек. Вопрос:
Меню, по ссылке, в содержании должны открываться последовательно 4 страницы с формами
собирающие у пользователя информацию, с кнопками "далее". После
чего писать собранную информацию в БД.
Код на php реализующий эти 4 страницы с формочками уже есть. Надо натянуть на друпал.
Куда смореть?? Оформлять этот код как модуль?
Комментарии
да.
Есть уже готовый http://drupal.org/project/webform
добавлю: не обязательно вебформ, если уже готов сам скрипт (может свои какие причиндалы), но посмотреть перед переводом в модуль, всё таки стоит, может то же самое делает...
Спасибо большое за ответы.
Подскажите еще раз:
Буду писать свой модуль. Но только не пойму куда смотреть?
в how-to обычно рассматривается модуль типа block.
Мне же как я понимаю нужен модуль типа node.
Укажите на примерчик хоть небольшой.
взял код по этой ссылке: http://drupal.ru/node/9561
function testform_menu() {
global $user;
$items = array();
$items['testform'] = array(
'title' => t('Тест формы'),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
'callback' => 'testform_page');
return $items;
}
function _test_form() {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('test test'),
);
$form['submit'] = array('#type' => 'submit', '#value' => t('Save'));
return $form;
}
function testform_page() {
return drupal_get_form('_test_form');
}
?>
Не работает, пишет нет доступа, открываю
hostname.ru/?q=testform
Почему так по разному выглядят модули, block модуль сильно по другому выглядел.
смотри на
'access arguments' => array('access content'),
это определяет доступ.
Нет такого понятия, block-модуль, как правило в модулях определяется всё.
И чтобы не спотыкаться о камни, советую почитать книжку Pro drupal development и так далее.
Спасибо.
Просветление потихоньку наступает. Книжку читаю.
Подскажите. В модуле пишу
'#title' => 'Тест',
Ну и текст по русски не отображается. Просто пусто вместо текста.
Надо писать:
'#title' => t('Test'),
и писать po файл для своего модуля??
или есть путь по проще7
Да, именно.
Хотя, если вы не собираетесь распространять модуль (или не будет нужна мультязычность), можете использовать редакторы, понимающие utf-8, например notepad++. Там сразу пишете без t()...
Спасибо.
Я уж тут совсем обнаглею.
Я пока не понимаю, как мне на одной и той же странице, показать следующую форму.
Т.е. есть первая форма, есть кнопка "Далее", вот по "Далее", нужно чтобы показывалась
следующая форма.
Я пока буду искать сам. Но если кто подскажет - буду рад.
Немного разобрался.
Но тут другой вопрос.
Как дебажить модули???
У меня есть сейчас 3 тестовых модуля у которых hook_menu - один и тот же.
При этом 1 - работает.
2 - доступ запрещен.
3 - не работает, страница не найдена.
глазами мне тяжело понять, почему не работает.
Для начала посмотрите на hook_menu^api для 6й версии, код который вы привели - это гибрид между 5ть и 6ть
title, description в 6ке не подлежат переводу - они автоматически системой меню пропускаются через t^api
type тоже
MENU_NORMAL_ITEM - будет в меню
MENU_CALLBACK - не будет в меню
подробнее hook_menu^api
<?php
/**
* Implementation of hook_menu().
*/
function privatemsg_menu() {
$items['messages/new'] = array(
'title' => 'Create',
'page callback' => 'drupal_get_form',
'page arguments' => array('privatemsg_new'),
'access arguments' => array('write privatemsg'),
'type' => MENU_LOCAL_TASK,
'weight' => -7,
);
?>
Победил
Подскажите а как можно писать текст между формами???
Например:
'#type' => 'radios',
'#title' => "First radio",
'#options' => array(t('First choice'), t('Second choice')),
);
$form['Second_radios'] = array(
'#type' => 'radios',
'#title' => "Second radio",
'#options' => array(t('First choice'), t('Second choice')),
);
Вот хочу например написать один параграф текста между First_radios и Second_radios.
Желательно чтоб его можно было форматировать(выбрать цвет, шрифт и т.п.)
Как?
Спасибо.
Для этого есть '#type' => 'markup'
он еще и работает по умолчанию
Например
<?php
$form['delimeter'] = array('#value' => variable_get('mydelimeter','');
?>
причем mydelimeter можно делать настраиваемым в админской части, через создание формы настроек для модуля