Как подключиться к полю на странице создания контента в Drupal? - PullRequest
1 голос
/ 19 июля 2010

Я создаю веб-сайт захвата идей из профиля установки Array Shift drupal, и я пытаюсь создать похожий поиск записи, когда пользователь начинает создавать новую идею.Есть ли способ определить, когда пользователь вводит текст в поле заголовка формы создания новой идеи (новый тип контента, который я создал в cck), а затем, используя ajax, создать динамический выпадающий список всех других опубликованных идей,похожи на основе пользовательских SQL-запросов, которые я создаю?Я видел это во многих сторонних инструментах COTS для захвата идей, не говоря уже здесь, в Stackoverflow, и я надеюсь сделать то же самое в drupal.Прямо сейчас, единственный способ сделать это - взломать модуль cck, который, как я знаю, не очень хорошая идея, или каким-то образом каким-то образом подключиться к этой форме.Я не уверен, как это сделать.Я использую hook_form_alter ()?Я использую drupal 6.16 и CCK 6.x-2.7.Спасибо.

Ответы [ 3 ]

1 голос
/ 19 июля 2010

В Drupal есть очень хорошая система автозаполнения , но она не очень хорошо документирована, если вы хотите полностью уйти с проторенного пути.

Я хорошо использовал модуль Автозаполнение виджетов . Вы создаете выделенное текстовое поле CCK, используя его в качестве виджета, а затем используете фрагмент PHP, чтобы установить допустимые значения. Допустимые значения используются для генерации параметров автозаполнения.

Я просто отбросил вызов функции PHP в области фрагмента. Функция PHP, которую я определил в пользовательском модуле, запросил удаленную базу данных и возвратил результаты с помощью drupal_json ().

1 голос
/ 22 июля 2010

Я решил свою проблему. Вот что я сделал:

  • настроить друпал.по поведению обмена на текстовое поле заголовка
  • сделал вызов ajax внутри этого обработчика onchange
  • подключил вызов ajax к пути, который соответствует функции обратного вызова, которую я создал в пользовательском модуле
  • Критическое: мне пришлось отключить, а затем снова включить этот пользовательский модуль, чтобы когда-либо вызывать функцию обратного вызова (определенную в hook_menu ())
  • сделал sql-запрос в функции обратного вызова, который искал похожие идеи в db
  • распечатал результаты в элементе разметки, который я поместил чуть ниже текстового поля заголовка. Я обернул результаты в теги, которые ссылаются на соответствующие страницы их идей.

И вуаля, теперь это работает как шарм! Мне нужно было собрать около 10 уроков, чтобы понять это.

0 голосов
/ 19 июля 2010

Не знаю, похоже ли это на то, что вы хотите, но у вас может быть поле CCK с вводом свободного текста, которое открывает сгенерированное AJAX поле с раскрывающимся списком возможных совпадений.AFAIK это работает только с узлами, таксономией и, возможно, некоторыми другими интегрированными типами Drupal.Нет возможности использовать пользовательский запрос.

Если вам нужно создать что-то по своему усмотрению для источника для полей «свободный текст» в источнике и адаптировать его к вашим потребностям и / или создать настраиваемое поле CCK для этого специального типа.

...