Frage

Ich verwende eine angepasste Version von Such-theme-form.tpl Als ich das Suchfeld verwenden, ich auf die Suchseite übertragen bekommen. Aber die Suche tatsächlich nicht stattfindet. Das Suchfeld auf der Suchergebnisseite funktioniert aber. Das ist meine Suche-sie-form.tpl.php Datei ( Demo :

<input type="text" name="search_theme_form_keys" id="edit-search-theme-form-keys" value="Search" title="Enter the terms you wish to search for" class="logininput" height="24px" onblur="restoreSearch(this)" onfocus="clearInput(this)" />
  <input type="submit" name="op" id="edit-submit" value="" class="form-submit" style="display: none;" />
  <input type="hidden" name="form_token" id="edit-search-theme-form-form-token" value="<?php print drupal_get_token('search_theme_form'); ?>" />
  <input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form" />

Es gibt auch eine JavaScript-Datei eingebunden. Ich denke, es ist ziemlich klar, Gebrauch von dem Code ist:

 function trim(str) {  
     return str.replace(/^\s+|\s+$/g, '');  
 }  

 function clearInput(e) {  

        e.value="";                // clear default text when clicked  
    e.className="longininput_onfocus"; //change class

 }  

 function restoreSearch(e) {  
    if (trim(e.value) == '') {  
        {
   e.value="Search";             // reset default text onBlur 
         e.className="logininput";        //reset class
  } 
    }  
 }

Was das Problem sein kann, und wie kann ich das Problem beheben?

War es hilfreich?

Lösung

Offensichtlich kann man nicht direkt den HTML-Code in search-theme-form.tpl.php da das ist, ändert nicht den richtigen Weg, es zu tun. Also meine Hinzufügen der Klasse und onFocus und onBlur Attribute war das Problem.

Der richtige Weg, es zu tun ist, um die Themen template.php-Datei zu ändern. Grundsätzlich werden wir mit form_alter () sein, um die Formularelemente zu ändern. Da die HTML-Art und Weise verwendet, ist falsch. Werfen Sie einen Blick auf den Code unten (aus: hier )

<?php
/**
* Override or insert PHPTemplate variables into the search_theme_form template.
*
* @param $vars
*   A sequential array of variables to pass to the theme template.
* @param $hook
*   The name of the theme function being called (not used in this case.)
*/
function yourthemename_preprocess_search_theme_form(&$vars, $hook) {
  // Note that in order to theme a search block you should rename this function
  // to yourthemename_preprocess_search_block_form and use
  // 'search_block_form' instead of 'search_theme_form' in the customizations
  // bellow.

  // Modify elements of the search form
  $vars['form']['search_theme_form']['#title'] = t('');

  // Set a default value for the search box
  $vars['form']['search_theme_form']['#value'] = t('Search this Site');

  // Add a custom class and placeholder text to the search box
  $vars['form']['search_theme_form']['#attributes'] = array('class' => 'NormalTextBox txtSearch', 
                                                              'onfocus' => "if (this.value == 'Search this Site') {this.value = '';}",
                                                              'onblur' => "if (this.value == '') {this.value = 'Search this Site';}");

  // Change the text on the submit button
  //$vars['form']['submit']['#value'] = t('Go');

  // Rebuild the rendered version (search form only, rest remains unchanged)
  unset($vars['form']['search_theme_form']['#printed']);
  $vars['search']['search_theme_form'] = drupal_render($vars['form']['search_theme_form']);

  $vars['form']['submit']['#type'] = 'image_button';
  $vars['form']['submit']['#src'] = path_to_theme() . '/images/search.jpg';

  // Rebuild the rendered version (submit button, rest remains unchanged)
  unset($vars['form']['submit']['#printed']);
  $vars['search']['submit'] = drupal_render($vars['form']['submit']);

  // Collect all form elements to make it easier to print the whole form.
  $vars['search_form'] = implode($vars['search']);
}
?>

In yourthemename_preprocess_search_theme_form - ‚yourthemename‘ reflektiert offensichtlich den Namen Ihres benutzerdefinierten Designs. Grundsätzlich ist der Code ist selbsterklärend. was mit den Kommentaren und alle.

Also, im Grunde das ist die Art und Weise funktioniert es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top