Preprocess - Kereső blokk átalakítás

osimester képe

Kedves Mindenki!

Segítséget kérnék preprocess-el kapcsolatban.

Szeretném Drupal 7 alatt a kereső blokkot kicsit átalakítani. (a kereső gombot eltüntetni és a kereső mezőbe beírni egy szöveget, ami kattintásra eltűnik.)

Még Drupal 6-hoz találtam egy megoldást a neten, egy korábbi oldalamnál:

  1. function template_preprocess_search_theme_form(&$variables) {
  2. $variables['form']['search_theme_form']['#title'] = '';
  3. $variables['form']['search_theme_form']['#size'] = 25;
  4. $variables['form']['search_theme_form']['#value'] = 'Keresés';
  5. $variables['form']['search_theme_form']['#attributes'] = array('onblur' => "if (this.value == '') {this.value = 'Keresés';}", 'onfocus' => "if (this.value == 'Keresés') {this.value = '';}" );
  6. unset($variables['form']['search_theme_form']['#printed']);
  7. $variables['search']['search_theme_form'] = drupal_render($variables['form']['search_theme_form']);
  8. $variables['search_form'] = implode($variables['search']);
  9. }

Próbáltam "átültetni" a 7-es alá, de nem sikerült. Azt kiderítettem a drupal api-ból, hogy a "search_block_form" preprocess-t kell használnom, de az eredmények fényében már ebben is kezdek kételkedni.

Majdnem egy napja keresem a megoldást a neten fórum cikkek, tutorial videók között, hogy jobban megértsem a preprocess működését, de leginkább a szintaktikáját. Akárhányszor úgy éreztem sikerült megértenem valamit, végül csak jobban belezavarodtam.

Ennek ellenére szeretném megtanulni. Ha tudtok kérlek segítsetek a fenti megoldásnak a kijavításával és ha lehet egy kis magyarázattal, amin keresztül megtanulhatom.

Előre is köszönöm!

Üdv!

OSI

Drupal verzió: 
csakiistvan képe

Szoval el akarod tuntetni a submit gombot... Miert is? a user honnan tudja hogy eleg egy entert nyomnia? Nem jo ez a felhasznalok szempontjabol hidd el, jobb ha kintvan. Persze ertem hogy az ugyfel lehet ezt keri, csak te vagy a PRO, mond neki hogy amit ker az nem jo.

Az eltunos cucc nem nagy kunszt, lehet kell a preprocess, ha mast akarsz kiirni mint ami defult, de en az http://fuelyourcoding.com/scripts/infield/ szoktam hasznalni.

1
0

Drupal full-stack developer at Wunderman Thompson Budapest

osimester képe

Meg se próbáltam beszélni róla. Az ügyfél elég céltudatosan gondolkodik erről. Tudja mit szeretne látni. Mégse mondhatom neki, hogy akkor programozza le ő. :)

Köszönöm ezt a plugin-t és a segítséget! Mindenképp kipróbálom!

Viszont - ha nem bántlak meg vele - érdekelne a preprocess-es megoldás is, ha más nem azért, hogy megtanuljam.

0
0
csakiistvan képe

Mivel ez egy form, így form alterrel siman, egyszerűen módosíthatod, erre példa itt https://github.com/csakiistvan/formolok

Bár ez egy modul (kommentek magyarul!), de sminkből is lehet form alterezni.
pl:

function sminkedneve_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'search_block_form') {
    // csinalj valamit
  }
}

A csinalj valami helyére meg beírod amit szertnél, mondjuk erre látsz példát a linkelt modulban.
1
0

Drupal full-stack developer at Wunderman Thompson Budapest

freeq képe

a smink template.php állományába a következő kóddal elérhető hasonló eredmény, én itt egy képre cseréltem a submit gombot. Nincs még nagy tapasztalatom Drupalban fórumokon találtam, nekem működik.

  1. function SMINKEDNEVE_form_alter(&$form, &$form_state, $form_id) {
  2. if ($form_id == 'search_block_form') {
  3. $form['search_block_form']['#title'] = t('Search'); // Change the text on the label element
  4. $form['search_block_form']['#title_display'] = 'invisible'; // Toggle label visibilty
  5. $form['search_block_form']['#size'] = 20; // define size of the textfield
  6. $form['search_block_form']['#default_value'] = t('Search'); // Set a default value for the textfield
  7. $form['actions']['submit']['#value'] = t('Ok'); // Change the text on the submit button
  8. $form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/search-button.png');
  9.  
  10. // Add extra attributes to the text box
  11. $form['search_block_form']['#attributes']['onblur'] = "if (this.value == '') {this.value = 'Search';}";
  12. $form['search_block_form']['#attributes']['onfocus'] = "if (this.value == 'Search') {this.value = '';}";
  13. // Prevent user from searching the default text
  14. $form['#attributes']['onsubmit'] = "if(this.search_block_form.value=='Search'){ alert('Please enter a search'); return false; }";
  15. }
  16. }
  17. if (!function_exists('render')) {
  18. function render($var) {
  19. return $var;
  20. }
  21. }
1
0
osimester képe

Ezekből összeraktam, értem is mit csináltam és mit írtatok le!

Nem tudom miért ragadtam le a preprocess-nél!

Nagyon köszönöm a segítségeteket!

0
0