Realisiert wird dies, wie so vieles bei Magento, durch ein Javascript, welches am Ende der Template-Datei zu finden ist.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript">
//<![CDATA[
    var dataForm = new VarienForm('form-validate', true);
    function setPasswordForm(arg){
        if(arg) {
            $('current_password').up(3).show();
            $('current_password').addClassName('required-entry');
            $('password').addClassName('required-entry');
            $('confirmation').addClassName('required-entry');
        } else {
            $('current_password').up(3).hide();
            $('current_password').removeClassName('required-entry');
            $('password').removeClassName('required-entry');
            $('confirmation').removeClassName('required-entry');
        }
    }
    <?php if($this->getCustomer()->getChangePassword()): ?>
        setPasswordForm(true);
    <?php endif; ?>
//]]>
</script>

Für das Sichtbarmachen und wieder Verstecken sind zwei Aufrufe innerhalb dieses Scriptes verantwortlich

1
2
$('current_password').up(3).show();     // Anzeigen
$('current_password').up(3).hide();     // Verbergen

Das geübte Auge erkennt, dass es sich hierbei um Prototype handelt. Um dieses nun zu verstehen eine kleine Erklärung.
Die Prototype-Funktion "up()" zählt von einem vorher angegebenen Element die Elternelemente aufwärts. Und genau an dieser Stelle liegt der "Hase im Pfeffer", denn hier wird numerisch gezählt. Und die Anzahl der Elternelemente kann durch Anpassung schon mal variieren.

Wenn man nun im Quelltext des Templates etwas höher geht, erkennt man, dass das Element, welches angezeigt und auch wieder verborgen werden soll ein DIV ist.

1
<div class="fieldset" style="display:none;">

Also, warum dieses Div nicht direkt ansprechen?

1
2
$('current_password').up('.fieldset').show();       // Anzeigen
$('current_password').up('.fieldset').hide();       // Verbergen

Wer auf Nummer Sicher gehen will, kann diesem einen Div auch eine ID verpassen um es ganz genau zu adressieren.

1
<div id="pw-changefield" class="fieldset" style="display:none;">
1
2
$('current_password').up('#pw-changefield').show();     // Anzeigen
$('current_password').up('#pw-changefield').hide();     // Verbergen

Damit sollte das Problem aus der Welt geschafft sein.

Viel Vergnügen!

Artikel / Seite weiterempfehlen

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>