Время участия
5 дней 23 часа
вам сюда http://www.drupal.ru/book
и сюда
remage.su
drupal.bz - BZ DRUPAL HANDBOOK - хорошая вводная книга, правда для 6ки
Оно то красиво и я разделяю данный подход, но:
1. Что делать если не всегда передаются все переменные? Порядок то нарушится
2. Что делать если переменных более 7?
Еще такой вопрос, а можно сделать так, чтобы запуск модуля не перенаправлял меня на новую страницу ... а просто выполнил функцию (например вывел значение переменной) на текущей странице?
при запуске моего модуля через адресную строку http://Имя сайта/?q=zapros он выводит новую страницу ... а хотелось бы чтобы оставался на той же, с которой его вызвали по указанной ссылке ... так вообще возможно или нет ... можно конечно решить проблему редиректом назад, но не хотелось бы.
мне кажется init выполняется не только при запуске из адресной строки, но и просто при загрузке, включения выключения модуля ... разве нет? а нельзя сделать с помощью 'type' => MENU_CALLBACK,
например ... что только один вариант через init????
Так вроде же понятно написал )
мне надо чтобы новая страница не загружалась при вызове модуля: http://Имя сайта/?q=zapros
а просто выполнялась функция в этом модуле, а браузер отображал ту же страницу.
походу ты блябудовый программист.
тебя не устаивает включение модулей обычным способом?
я не программист, тем более не блябудовый ... и никогда не понимаю таких комментариев, если не можешь помочь и объяснить, лучше ничего не пиши. Меня не устраивает включение модулей обычным способом, если я прошу помочь объяснить.
спасибо, я прочитал ... но не понял как решить проблему ... все таки однозначно можно сказать, через хук menu можно так сделать или нет? если нет то можно пример через init ... у меня написан модуль через init, он выполняется при любой перезагрузки страницы
вкратце )) мне нужно запустить функцию в модуле через ссылку, но так чтобы браузер не переходил по ссылке, а просто выполнял эту функцию ... я уже не знаю как еще объяснить ...
Комментарии
Время участия
5 дней 23 часа
вам сюда
http://www.drupal.ru/book
и сюда
remage.su
drupal.bz - BZ DRUPAL HANDBOOK - хорошая вводная книга, правда для 6ки
http://www.drupal.ru/node/14653 прочитал здесь, но там пример для 5-го друпала ... а мне нужно сделать на 6-ом. Может кто описать?
в хуке _menu своего модуля ставите путь mymodule/%
кусок из модуля ad.module:
<?php$items["admin/content/ad/groups/%ad_group/edit"] = array(
'title' => 'Edit group',
'page callback' => 'drupal_get_form',
'page arguments' => array('ad_admin_group_form', 4),
'access arguments' => array('administer advertisements'),
'weight' => 1,
'file' => 'ad.admin.inc',
);?>
и из ad.admin.inc:
<?phpfunction ad_admin_group_form($form_state, $group = NULL) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Group name'),
'#default_value' => isset($group->name) ? check_plain($group->name) : '',
'#maxlength' => 64,
'#required' => TRUE,
'#description' => t('Specify a name for the ad group.')
);?>
в 'page arguments' задаешь что будет являтся переменной
а если мне не надо форму, могу я просто написать 'page callback' => 'Имя моей функции в модуле',?
да
<?php$items["module/%"] = array(
'title' => 'Бла',
'page callback' => 'Моя_функция',
'page arguments' => array(1),
'access arguments' => array('admin'),
'weight' => 1,
'file' => 'module.inc',
);?>
То есть я пишу к примеру в hook_menu
<?php$items["/mymodule/%"] = array(
'title' => 'mymodule',
'page callback' => 'mymodule_run',
'page arguments' => ,
'access arguments' => array('administer advertisements'),
'weight' => 1,
);?>
а что писать в 'page arguments'? в пхп я получаю значения переменных через $_GET['Имя Переменной']
array(1) тк переменная передается второй по счету (первой если с нуля)
а переменные получаеть должен из функции:
mymodule_run($peremenaya){}
function zapros_menu()
{
$items['zapros/%'] = array(
'title' => 'zapros',
'page callback' => 'zapros_run',
'access arguments' => array('access zapros'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
вот как я делаю, пытаюсь вызвать модуль http://Имя сайта/?q=zapros пишет что страница не найдена
сбрасывать кэш надо
сбросил - аналогично вот код
function zapros_perm() {
return array('access zapros');
}
function zapros_menu()
{
$items['zapros/%'] = array(
'title' => 'zapros',
'page callback' => 'zapros_run',
'page arguments' => array(1),
'access arguments' => array('admin'),
'weight' => 1,
'file' => 'module.inc',
// 'access arguments' => array('access zapros'),
// 'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function zapros_run($perem) {
то есть модуль не запускается даже без переменных ... может я его неправильно вызываю http://Имя сайта/?q=zapros
'access arguments' => array('access zapros'),
и http://Имя сайта/?q=zapros/бла
function zapros_run($perem) {
return $perem
}
выключи и включи модуль
Получилось )) так а как теперь быть если я хочу передать несколько переменных? и какого вида формировать url?
то есть для пхп я передавал так ... ?i1=текст1&i2=Текст2 итд ... а тут у нас получается что я в perem передаю просто строку ... там будет все
а вы изначально знаете ктколько у вас будет переменных
по-моему проще разрезать строку explode('/', $perem)
перем1/перем2/перем3
Огада
$_REQUEST придумали чиста для прикола и паржать?
зато строка адреса не будет выглятеть так ужастно:
?i1=текст1&i2=Текст2
а в соответствии с общими принципами:
/текст1/Текст2
КРАСИВО ИМХО
да знаю, сейчас попробую ... спасибо за помощь )
Оно то красиво и я разделяю данный подход, но:
1. Что делать если не всегда передаются все переменные? Порядок то нарушится
2. Что делать если переменных более 7?
ааа, ээээ, не знаю(((
Еще такой вопрос, а можно сделать так, чтобы запуск модуля не перенаправлял меня на новую страницу ... а просто выполнил функцию (например вывел значение переменной) на текущей странице?
??? изьясняйтесь получше...
при запуске моего модуля через адресную строку http://Имя сайта/?q=zapros он выводит новую страницу ... а хотелось бы чтобы оставался на той же, с которой его вызвали по указанной ссылке ... так вообще возможно или нет ... можно конечно решить проблему редиректом назад, но не хотелось бы.
hook_init()
а как тогда переменную в url передать?
мне кажется init выполняется не только при запуске из адресной строки, но и просто при загрузке, включения выключения модуля ... разве нет? а нельзя сделать с помощью 'type' => MENU_CALLBACK,
например ... что только один вариант через init????
Вариантов тут два - или вы пишете что вам всё-таки надо или обращаетесь в битву экстрасенсов.
Так вроде же понятно написал )
мне надо чтобы новая страница не загружалась при вызове модуля: http://Имя сайта/?q=zapros
а просто выполнялась функция в этом модуле, а браузер отображал ту же страницу.
Тогда порядок такой:
1. Идём в API, читаем hook_init()
2. Идём на php.net/manual/ru/index.php и читаем там про условные операторы
1.Я читал
2.там нет про условные операторы.
а нельзя просто пример показать, как это можно сделать?
я не программист, тем более не блябудовый ... и никогда не понимаю таких комментариев, если не можешь помочь и объяснить, лучше ничего не пиши. Меня не устраивает включение модулей обычным способом, если я прошу помочь объяснить.
лол, это что?
http://ru2.php.net/manual/en/control-structures.if.php
Дальше за деньги или перечитывайте вдумчиво топик
вкратце )) мне нужно запустить функцию в модуле через ссылку, но так чтобы браузер не переходил по ссылке, а просто выполнял эту функцию ... я уже не знаю как еще объяснить ...
спасибо за ответ ... есть еще специалисты которые могут объяснить, а не отсылают читать мануалы.
?
тогда читай мануал по jquery и ajax. там найдешь ответна вопрос.