Интересный модуль / функциональность - и очевидная отсутствующая функция;)
Я немного поиграл с ним в локальном тестовом экземпляре и смог получить рабочий результат, используя следующий подход:
Добавьте функциональность, чтобы предварительно заполнить поле поиска на странице 'juitter' поисковыми терминами из URL, если таковые имеются. В функции modules juitter_page()
(в 'juitter.module') замените эту строку (137):
$search_phrase = t(variable_get('juitter_search_text', 'Search twitter:'));
с этим кодом:
$preset = func_get_args();
if (!empty($preset)) {
$search_phrase = implode(' ', $preset);
}
else {
$search_phrase = t(variable_get('juitter_search_text', 'Search twitter:'));
}
С этим изменением вызов 'juitter / foo' вызовет стандартную страницу juitter, но с 'foo' в поле поиска вместо текста поиска по умолчанию. Вызов 'juitter / foo / bar' приведет к появлению 'foo bar' в окне поиска, в то время как вызов одного только 'juitter' будет вести себя как и раньше.
Настройте javascript для автоматической отправки поиска, если он был предварительно заполнен изменением выше. В файле модулей juitter.js удалите следующую строку (22):
juitter.get_tweets($('#juitterTabsWrapper a:first').attr('id'));
и добавьте этот код в конец функции Drupal.behaviors.Juitter
(под «комментарием к окну поиска» - /* /Search box */
, строка 53) вместо:
/* Trigger default. Use search term, if not default, otherwise use first tab */
if (juitter.search && $(".juitterSearch").val()!=Drupal.t(juitter.search.text)) {
$("#juitterSearch").submit();
}
else {
juitter.get_tweets($('#juitterTabsWrapper a:first').attr('id'));
}
Это будет проверять, был ли заменен текст в окне поиска по умолчанию - если да, он отправит поиск, в противном случае он будет вести себя как прежде и будет искать в соответствии с конфигурацией вкладок по умолчанию.
После внесения этих изменений все, что нужно, - это поисковая форма, похожая на поисковый блок Drupals, перенаправляющая на URL-адрес устройства, где поисковые термины превращаются в элементы пути. Добавьте следующее в конец файла juitter.module:
/**
* Implementation of hook_block().
*/
function juitter_block($op = 'list', $delta = 0) {
if ($op == 'list') {
$blocks[0]['info'] = t('Juitter search form');
// Not worth caching.
$blocks[0]['cache'] = BLOCK_NO_CACHE;
return $blocks;
}
else if ($op == 'view' && user_access('access content')) {
$block['content'] = drupal_get_form('juitter_search_block_form');
$block['subject'] = t('Search Twitter');
return $block;
}
}
/**
* Callback function to generate the juitter search form
*
*/
function juitter_search_block_form($form_state) {
$form['search_terms'] = array(
'#title' => t('Search Twitter'),
'#type' => 'textfield',
'#size' => 15,
'#default_value' => '',
'#attributes' => array('title' => t('Enter the terms you wish to search for.')),
);
$form['submit'] = array('#type' => 'submit', '#value' => t('Search'));
$form['#submit'][] = 'juitter_search_block_form_submit';
return $form;
}
/**
* Process a juitter search form submission.
*/
function juitter_search_block_form_submit($form, &$form_state) {
// The search form relies on control of the redirect destination for its
// functionality, so we override any static destination set in the request,
// for example by drupal_access_denied() or drupal_not_found()
// (see http://drupal.org/node/292565).
if (isset($_REQUEST['destination'])) {
unset($_REQUEST['destination']);
}
if (isset($_REQUEST['edit']['destination'])) {
unset($_REQUEST['edit']['destination']);
}
$form_id = $form['form_id']['#value'];
$form_state['redirect'] = 'juitter/'. trim($form_state['values']['search_terms']);
}
Это создаст блок 'Форма поиска Juitter', который вы можете разместить по своему усмотрению.
Вот и все;)
ПРИМЕЧАНИЕ: Обычно я бы реализовывал подобные изменения «извне», создав отдельный модуль, но, поскольку это уже запрос функции самого модуля , я редактировал код модуля напрямую. Я постараюсь свернуть это в патч и отправить его туда. Патч доступен здесь , благодаря theunraveler .
Кстати, я бы не стал кодировать полные решения, подобные этому, для ответа - просто этот модуль меня заинтересовал. Так как вы, кажется, новый пользователь здесь на SO, не ожидайте, что это как норма;)
Edit: в этом подходе есть небольшой недостаток, так как модуль также регистрирует путь 'juitter / ahah' для обратного вызова javascript, используемого в форме администрирования. Поэтому, если пользователь введет «ахах» в новое поле поиска, он получит в результате бесполезный элемент формы, закодированный в json. Очевидным решением этого было бы изменить путь обратного вызова ahah на что-то другое. В качестве обходного пути вы могли бы добавить механизм экранирования при перенаправлении из формы, отменяя экранирование при помещении текста в главное окно поиска.