мне нужно вызвать свою функцию
как лучше это сделать?
буду пробовать так:
- создать пэйдж с пхп кодом
- в месте вызова сделать форму с action=\page_name
или есть "более-другие-конвенциональные" методы...
п.с. просто мне нужны доп.манипуляции над БД
спасибо за помощь и терпение к друпал-новисам
п.с.2 мне здесь уже реально помогли пару раз - спасибо люди добрые
и да прибудет с вами сила друпала
Комментарии
Функции регистрируются через hook_menu, подробнее читайте http://api.drupal.org/api/HEAD/file/developer/examples/page_example.module
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
если какой-то url из url aliases, как его описать, чтобы получал парам?
например:
- show_something - это url alias
при вызове передаю nid, т.е. show_something/25
как его для этого в aliases описать - ? show_something/%1 никак...
merci d'avance
Можно так попробовать: создаёте страницу (page), и в тело ей прописываете необходимый вызов ф-ции. И не забудьте поставить содержимому страницы тип "PHP".
Вот пример: добавляю страницу и назначаю ей алиас "my_page". Далее, в тело страницы пишу:
<?php
$arg = arg(1);
my_page_func($arg);
function my_page_func($arg = NULL) {
// ...
// real code
// ...
}
?>
Как вариант, код ф-ции можно вынести куда-то (например, просто в
themes/THEME_NAME/template.php
, но следует учитывать тогда, что страница становится привязанной к определённой теме!).Этот вариант не требует написания отдельного модуля, но я б рекомендовал его только для каких-то простых случаев. Если надо что-то более-менее серьёзное, то лучше воспользоваться советом rapitosov-а и написать нормальный модуль.
с передачей параметров
url alias: some_alias | node/142
my_url/some_alias - в теле которого
выводит свой nid т.е. 142
вызов my_url/some_alias/33 - валит страницу - пустая
а мне бы передать странице параметры... парочку, хотябы...
да хоть один, потом разберусь...
Параметры передаются следующим образом:
http://example.org/arg(0)/arg(1)/arg(2)/..
Друпал ищет определение пути справа-налево, то есть при использовании пути http://example.org/0/1/2
сначала будет произведен поиск http://example.org/0/1/2, если этот путь не определен
будет произведен поиск http://example.org/0/1 и так далее.
Вам нужно добавить путь http://example.org/0, и не указывать явно никаких путей глубже этого адреса. Тогда Вы сможете извлекать все параметры командами arg(1), arg(2) и тд.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
а как правильно определить (записать алиас)
чтобы работало с параметрами
у меня так:
| alias | system
| deletebranch | node/142
я вызываю deletebranch
нужно вызывать deletebranch/133 (например)
или deletebranch/133/143 (например)
как прописать сам алиас в таблице чтобы работало с параметрами
спасибо огромное
Ещё раз, внимательно, прочитайте последний абзац моего предыдущего сообщения. Там содержится ответ именно на этот вопрос.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
простите дурака ...
перепробовал все возможные вырианты (на мой взгляд)
с именем алиаса - не работает с параметрами
так работает: node/142/133/144 и парамс ловятся
так нет: deletebranch/133/144
(где node/142 = deletebranch в талице алиасов)
... досадно мне конечно... но мне "вешалка" - надо чтоб работало...
/me panic
Да дело в том, что так действительно не работает (не идёт замена "node_alias/PARA" на "node/NID/PARA"), по крайней мере, у меня не получилось это реализовать
Дело всё в том, что выборка из БД идёт по запросу
"SELECT dst FROM {url_alias} WHERE src = '%s'"
, где "%s" - это URL и если там есть "node_alias/PARA", то в таблице не будет найдена строка для "node_alias"2All: народ, мы ж забыли такую штуку как
custom_url_rewrite()
! Можно и её использовать, например, для преобразования того самого "node_alias/PARA" в "node/NID/PARA"!Понятно, что это уже хаки чистейшей воды пошли (и хардкод и всё такое, но есть и такой способ!).
Проверил, действительно такой приём не работает c алязами. Только с путями, зарегистрированными через hook_menu().
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
Извините, не совсем понял сразу задачу. Дело в том, что я предложил способо, работающий без алиасов (т.е. сслыки, типа "
node/NID/PARA1
" будут работать хорошо, а ссылки вида "node_alias/PARA1
" - нет).Что б решить задачу, можно и для страниц с параметрами ввести алиасы (т.е. писать не "
node_alias/PARA1
", а добавить алиас для "node/NID/PARA1
" (он, кстати, может быть вида "node_alias/PARA1
"!)). Если это не приемлемо, тогда - не использовать алиас в строке, где параметр задан. Ну а если и это не подходит, тогда, наверное, только модуль.вот пока писал пред.пост не видел этого
- ушёл ковырять друпал
custom_url_rewrite()
ВАХ!!!!
Что мешает использовать стандатную функцию $_GET
Она в Друпале тоже работает
И если нет желания писать собственный модуль - вперед разбирать url стандартными функциями php
Религия непозволяет
А разбирать можно только собственный URL ноды, а не альяс.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
всё сделал, работает.
функции в модуль, вызов и передача парамс через page
(может и коряво, потом узнаю, когда друпал покручу побольше)
поздравляем