Drupal: Напълно заменете функционалността за търсене, но използвайте шаблонната система на Drupal (от модул)

Пиша персонализиран модул Drupal 7, който напълно ще замени страницата за търсене и метода за търсене за уебсайт. Ето какво имам досега:

/**
 * Custom search.
 */
function mymodule_search_page() {
  drupal_add_css('css/search.css');

  // Perform a search (not important how)
  $result = do_custom_search('foo');

  return '<p>Results:</p>';
}

Сега, както виждате, не е завършен. Не знам как правилно да върна структуриран HTML от това. Как да използвам вградената шаблонна система на Drupal, за да изобразя резултатите?


person damd    schedule 26.03.2013    source източник
comment
Защо да „заменяте“ търсенето напълно, когато можете да включите собствената си логика на търсене? api.drupal.org/api/drupal/7/search/hook_search   -  person Pierre Buyle    schedule 27.03.2013


Отговори (2)


трябва да използвате вградените функции на drupal. надявам се, че търсите нещо подобно http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_render/7

person Soni Kishan    schedule 26.03.2013
comment
Изглежда добре... Но бихте ли ми показали пример за това как да използвам drupal_render в моя случай? Не съм сигурен дали трябва да го комбинирам със замени на шаблони на теми или какво съдържание трябва да имат моите масиви. - person damd; 26.03.2013
comment
имате ли предварителни познания за Drupal кодиране? ако не, бих предпочел да преминете през този drupal.org/developing/modules - person Soni Kishan; 26.03.2013
comment
Да, направил съм няколко по-малки уебсайта, но никога не съм правил персонализиран Drupal модул. Също така съм сравнително нов в Drupal 7, използвал съм само 6 преди. - person damd; 26.03.2013

Ето какво в крайна сметка направих:

/**
 * Implements hook_menu().
 */
function mymodule_search_menu() {
  $items = array();
  $items['search'] = array('page callback' => 'mymodule_search_page',
                       'access callback' => TRUE);
  return $items;
}

/**
 * Mymodule search page callback.
 */
function mymodule_search_page() {
  $variables = array();

  // Add stuff to $variables.  This is the "context" of the file,
  // e.g. if you add "foo" => "bar", variable $foo will have value
  // "bar".
  ...

  // This works together with `mymodule_search_theme'.
  return theme('mymodule_search_foo', $variables);
}

/**
 * Idea stolen from: http://api.drupal.org/comment/26824#comment-26824
 *
 * This will use the template file custompage.tpl.php in the same
 * directory as this file.
 */
function mymodule_search_theme() {
  return array ('mymodule_search_foo' =>
                array('template' => 'custompage',
                      'arguments' => array()));
}

Надявам се това да помогне на някого!

person damd    schedule 27.03.2013