Можно ли настроить ссылку на друпальный узел и передать поиск и аргумент из другого поля? - PullRequest
2 голосов
/ 19 ноября 2009

Я пытаюсь создать сделанную на заказ форму в drupal с полем ссылки на узел.

Я бы хотел добавить немного дополнительной функциональности к автоматическому завершению ссылки на узел. Я создал представление, которое содержит аргумент. Я хотел бы иметь возможность передать этот аргумент из раскрывающегося списка и набранный текст в сценарий автозаполнения.

Кто-нибудь знает, как я начну это?

/* FIELD 1 - the drop down  */
    $sql = "SELECT nid, title  FROM node where type='resourcetype' AND status =1 order by title
    ";
       $result = db_query($sql);
     $counter = 0 ;
     $options = array();
      while ($data = db_fetch_array($result)) {
       // krumo ($data);
      $options[$data[nid] ] =     $data[title]   ;
      if ($counter ==0 ) {$df = $data[nid]; }
      $counter ++;


      }


/* FIELD 2 - the node reference field  */    
         $form['sor']['type'] = array(
        '#type' => 'select',
        '#title' => t('Resource type'),
      '#required' =>TRUE,
      '#options' => $options,
      )     ;


      $form['sor']['field_asor_sors'] = array(
        '#type' => 'textfield',
        '#title' => t('Add a SOR item to this job'),
      '#autocomplete_path' => 'nodereference/autocomplete/field_asor_sors',
           '#element_validate' => array('myelement_validate_is_valid_noderef'),
      '#required' =>TRUE,

      );

Большое спасибо

Мэтт

Ответы [ 2 ]

2 голосов
/ 19 ноября 2009

AFAIK нет простого способа сделать это.

Я хотел сделать нечто подобное некоторое время назад (используя разные аргументы в зависимости от контекста узла), но воздержался от этого, поскольку для этого потребовались бы некоторые существенные изменения в логике обратного вызова автозаполнения. Вам нужно изменить несколько функций nodereference, чтобы добавить поддержку для передачи аргумента в начальный обратный вызов nodereference_autocomplete(), передачи его оттуда к _nodereference_potential_references() и, наконец, к _nodereference_potential_references_views(), гарантируя, что изменения не прервутся все остальное.

Если вы все же хотите попробовать, вам следует взглянуть на патчи в этой теме , так как они также хотят сделать что-то подобное и могут содержать некоторые полезные советы / примеры.

Потенциально более простой альтернативой может быть обмен * обратного вызова #autocomplete_path поля nodereference с вашей собственной пользовательской версией, которая будет генерировать результат, при добавлении логики js в раскрывающийся список для добавления дополнительного аргумента в этот путь при изменении выбора .

0 голосов
/ 19 ноября 2009

Если вы войдете в форму конфигурации поля nodereference и прокрутите до конца, есть набор полей (который может быть свернут), который называется «Advanced - узлы, на которые можно ссылаться (View)». Вы можете использовать это, чтобы выбрать представление и сделать это представление источником ссылок на узлы без написания нового кода.

...