Valid XHTML 1.0 Transitional Drupal oldal

mat323 képe

Sziasztok! Szeretném, hogy a Drupal oldalam Valid "XHTML 1.0 Transitional" legyen. Kis munkával rendbeszedtem a kódot és a http://validator.w3.org/ mindössze egyetlen hibát talál:

Validation Output: 1 Error
 
1. Error Line 1062, Column 35: ID "edit-submit" already defined.
<input type="submit" name="op" id="edit-submit" value="Belépés"  class="form-sub
 
2. Info Line 1043, Column 35: ID "edit-submit" first defined here.
<input type="submit" name="op" id="edit-submit" value="Keresés"  class="form-sub

A főoldalon egymás alatt van a keresődoboz blokkja és a login blokk. Úgy néz ki, hogy a keresés gomb input típusa megegyezik a belépés gomb input típusával.

Arra gondoltam, hogy ha az egyiket egy div-be teszem, akkor megoldódik a probléma. A system és a user modulban is szétnéztem de nem találom a kódot, ami generálja a fenti részletet. Van valakinek tapasztalata ezzel kapcsolatban?

Fórum: 
Webappz képe

Mint az jól látszik a hibát nem az okozza, hogy a két input mező azonos típusú, mert általában a űrlapokhoz szokott tartozni egy submit (Belépés, Keresés) gomb, legfeljebb CSS-sel és/vagy JavaScripttel eltüntetik.
Ellenben az jól látszik, hogy a hibát az okozza, hogy mindkét mezőnek azonos az id-je:

 id="edit-submit"

Bár nem írtad a Drupal verzióját, ahogy már pp is utalt rá, kódolni és sminkelni kell egy kicsit.
  1. 5-ös verziónál a template.php-ba átemeled a user_login_block függvényt.
  2. Átnevezed a user_login_block függvényt phptemplate_user_login_block-ra.
  3. módosítod a form['submit'] tömb '#id' mezőjét.
  4. a legvégén kicseréled a <?php retrun $form; ?> sort a <?php return _phptemplate_callback('user-login-block', array('form' => $form));?> sorra.
  5. a user-login-block.tpl.php-ban tudsz még újabb HTML tageket felvinni és a CSS fájlodban tudod dizájnolni.
0
0

Páldi Zoltán

mat323 képe

Kedves Webappz! Köszönöm a részletes megoldásodat, de sajnos elakadtam a megvalósítása közben.

Először is beszúrtam a template.php végére:

function phptemplate_user_login_block() {
  $form = array(
    '#action' => url($_GET['q'], drupal_get_destination()),
    '#id' => 'user-login-form',
    '#base' => 'user_login',
  );
  $form['name'] = array('#type' => 'textfield',
    '#title' => t('Username'),
    '#maxlength' => USERNAME_MAX_LENGTH,
    '#size' => 15,
    '#required' => TRUE,
  );
  $form['pass'] = array('#type' => 'password',
    '#title' => t('Password'),
    '#maxlength' => 60,
    '#size' => 15,
    '#required' => TRUE,
  );
  $form['submit'] = array('#type' => 'submit',
    '#value' => t('Log in'),
    '#id' => t('elfogad'),
  );
  $items = array();
  if (variable_get('user_register', 1)) {
    $items[] = l(t('Create new account'), 'user/register', array('title' => t('Create a new user account.')));
  }
  $items[] = l(t('Request new password'), 'user/password', array('title' => t('Request new password via e-mail.')));
  $form['links'] = array('#value' => theme('item_list', $items));
  return _phptemplate_callback('user-login-block', array('form' => $form));
}

Sajnos ott akadtam el, hogy mi legyen a user-login-block.tpl.php file tartalma? :(

Ezzel próbálkoztam, de a bejelentkező űrlap helyén csak az "array" felirat jelenik meg

  <div class="block block-<?php print $block->module; ?>" id="block-<?php print $block->module; ?>-<?php print $block->delta; ?>">
    <h2 class="title">
      <?php print $block->subject; ?>
    </h2>
    <div class="content">
    <div class="elfogad">
      <?php print $block->content; ?>
      <?php print $form; ?>
    </div>
    </div>
  </div>

Próbálkoztam ezzel is:

<?php return drupal_render($form); ?>
0
0
Webappz képe

<div class="login_form">
<?php
    print_r(drupal_render($form)); // this displays the login form.
?>
</div>
<?php
print "<div style=\"width:500px;\"><pre>";
print_r($form); // displays all the variables available
print "</pre></div>"; ?>

Ha boldogulsz az angollal, akkor: A login form testreszabása
0
0

Páldi Zoltán

pp képe

Sajnos a form API ilyen. Sminkeld a formot úgy, hogy a form elemnél a submit-nál az id-be beleteszed a form-id-t. (ez sem száz százalékos megoldás de már közelebb visz a probléma megoldásához)

pp

0
0
sgabe képe

Nemrég került fel ennek a bugnak a javítása a drupal.orgra, de azért közvetlenül ide is beírom.

/**
* Fixes illegal duplicate html id's "edit-sumit".
*/
function phptemplate_submit($element) {
  static $dupe_ids = array();
  if (isset($dupe_ids[$element['#id']])) {
    $dupe_ids[$element['#id']]++;
    $element['#id'] = $element['#id'] .'-'. $dupe_ids[$element['#id']];
  }
  else {
    $dupe_ids[$element['#id']] = 0;
  }
  return theme('button', $element);
}
0
0
mat323 képe

Hálásan köszönöm Gábor! Minden tiszteletem a tiéd!

0
0