Jump to content
xt:Commerce Community Forum

Login Button durch Login Link ersetzen


FlinkeHelfer

Recommended Posts

Hallo Leute ich habe stundenlang in diesem Forum und im Internet nach einer Lösung für mein Problem gesucht aber leider ohne Erfolg. :(

Ich möchte bei einem Template den Anmelden oder Login Button duch einen Link ersetzen.

Das ganze soll am Ende so Aussehen das der Kunde seine Login Daten eingibt und danach auf einen ganz gewöhnlichen Textlink klickt statt auf einen Button.

Vielen Dank für eure Hilfe.:D

Link to comment
Share on other sites

"Submit" oder "Image"-Buttons kann man nur dann durch Textlinks ersetzen, wenn "der Wert voreingestellt ist" ... und eine "action" programmiert ist, auf die dieser Link hinweist.

Zum Beispiel in den Produkt-Auflistungen geht's (manchmal) - Da weiß das System "aha, dieses Produkt, ein Klick gleich einmal in den Warenkorb" - Sobald es für dieses Produkt aber Optionen gibt, die man sich aussuchen könnte, funktioniert das schon nicht mehr.

Beim LogIn-Formular geht's gar nicht. E-Mail-Adresse und Passwort sind ja für jeden anders.

Also: Wenn Du irgendetwas haben willst, das so wie Text aussieht, dann musst Du halt den Image-Button durch einen Submit-Button ersetzen (das sind diese hässlichen grauen) - und im Stylesheet dafür sorgen, dass der durchsichtig ist, der Text unterstrichen, keinen Rand etc - und der Mauszeiger beim Überfahren in einen Finger gewandelt wird.

(Funktioniert bei den meisten Windows-Browsern sehr gut, Macs lassen sich eher ungern die Gestaltung von Formular-Elementen "aus der Hand nehmen")

Link to comment
Share on other sites

Erstmal vielen Dank für eure Hilfe aber irgendwie bekomme ich das nicht hin. Ich habe den Link in die "box_login.html" an der richtigen stelle eingefügt und er wird auch angezeigt. In der "loginbox.php" habe ich dem Formular auch einen Namen gegeben aber irgendwie will das ganze nicht so wie ich will. Muss ich da noch was in die Header.php eintragen? Ich habe es auch mit "{$NEW_LINK}" bzw. "<a href="{$NEW_LINK}javascript:submitForm('loginbox');">Anmelden</a>" probiert leider ohne erfolg. Ich habe mal den Code von beiden Dateien gepostet.

Code der box_login.html

{config_load file="$language/lang_$language.conf" section="boxes"}

<table width="325" height="60" border="0" cellpadding="0" cellspacing="0">

<tr>{$FORM_ACTION}

<td height="20" class="main">{#text_email#}:</td>

<td height="20" class="main">{#text_pwd#}:</td>

</tr>

<tr>

<td height="20" class="main">{$FIELD_EMAIL}</td>

<td height="20" class="main">{$FIELD_PWD}</td>

</tr>

<tr>

<td height="20" class="main"><a href="javascript:submitForm('loginbox');">Anmelden</a></td>

<td height="20" class="main"><a class="header_login" href="{$NEW_LINK}create_account.php">Neukunde</a></td>

</tr>

</table>

{$FORM_END}

Code der loginbox.php

$box_smarty = new smarty;

$box_smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');

$box_content = '';

require_once (DIR_FS_INC.'xtc_image_submit.inc.php');

require_once (DIR_FS_INC.'xtc_draw_password_field.inc.php');

if (!xtc_session_is_registered('customer_id')) {

$box_smarty->assign('FORM_ACTION', '<form name="loginbox" id="loginbox" method="post" action="'.xtc_href_link(FILENAME_LOGIN, 'action=process', 'SSL').'">');

$box_smarty->assign('FIELD_EMAIL', xtc_draw_input_field('email_address', '', 'size="25" maxlength="50"'));

$box_smarty->assign('FIELD_PWD', xtc_draw_password_field('password', '', 'size="15" maxlength="30"'));

$box_smarty->assign('BUTTON', xtc_image_submit('button_login_small.gif', IMAGE_BUTTON_LOGIN));

$box_smarty->assign('LINK_LOST_PASSWORD', xtc_href_link(FILENAME_PASSWORD_DOUBLE_OPT, '', 'SSL'));

$box_smarty->assign('FORM_END', '</form>');

$box_smarty->assign('BOX_CONTENT', $loginboxcontent);

$box_smarty->caching = 0;

$box_smarty->assign('language', $_SESSION['language']);

$box_loginbox = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_login.html');

$smarty->assign('box_LOGIN', $box_loginbox);

Bin für jede Hilfe Dankbar.:o

Link to comment
Share on other sites

wäre vielleicht sinnvoll der submitForm Funktion

Geht doch auch ohne?!?

<a href="javascript:this.submit();">[/HTML]

Bliebe nur die Frage, wie das ohne JavaScript gehen sollte... Da bleibt eigentlich nur die CSS-Variante mit dem "echten", aber umgestylten Button. Kenne übrigens nur den überaus veralteten IE 5 Mac und die noch älteren Netscape 4 und älter auf allen Systemen, die CSS-Styles für Formularelemente geflissentlich ignorieren.

Fakt ist halt, dass Formulare, die per POST versendet werden, einen "echten" Submit-Button brauchen, oder halt so'n JavaScript-Link (bäh!).

Alternativ fiele mir noch ein, einfach ein Bild zu nehmen, das wie ein gewöhnliches Link aussieht und dieses als

[HTML]<input type="image" src="dasbild.gif" />[/HTML]

einzubinden.

Link to comment
Share on other sites

So Leute ich habe es geschafft. Erstmal vielen Dank an Rovert der 2. Link hat mir weiter geholfen. Für alle anderen die auch dieses Problem haben hier die Lösung:

1. In der Datei Templates/deinTemplate/Source/Boxes/loginbox.php so in etwa in der Zeile 31 den folgenden Code ergänzen:

$box_smarty->assign('FORM_ACTION', '<form method="post" action="'.xtc_href_link(FILENAME_LOGIN, 'action=process', 'SSL').'">');

Und zwar mit "name="loginbox" (Der Name kann frei gewählt werden habe hier einfach mal loginbox genommen). Dann Sieht der Code in etwa so aus:

$box_smarty->assign('FORM_ACTION', '<form name="loginbox" method="post" action="'.xtc_href_link(FILENAME_LOGIN, 'action=process', 'SSL').'">');

2. In der Datei Templates/deinTemplate/Boxes/box_login.html den Button durch den gewünschten Link ersetzen. Der Button wird mit {$BUTTON} deklariert. Da ich die Datei komplett umgebaut habe weiß ich die Zeile nicht so genau müsste aber weiter unten sein. Der Link muss so aussehen:

<a href="{$NEW_LINK}javascript: submitform('loginbox');">Anmelden</a>.

Jetzt taucht statt dem Login Button ein Login Link auf.

3. Damit das ganze auch funktioniert muss man in der Datei /inculdes/header.php folgenden Java Script Code ergänzen:

function submitform()

{

document.loginbox.submit();

}

Das ganze fügt man am besten über dem Ende des Java Script Tag ein das so aussieht:

//--></script>

So jetzt müsste es eigentlich funktionieren ansonsten einfach dem 2. Link vom Rovert folgen da ist das ganze, ganz gut erklärt zwar in Englisch aber was solls wir leben ja schließlich in einem Globalen Dorf :).

Ich hoffe mal einigen Leuten hier geholfen zu haben.

Link to comment
Share on other sites

Hmmm, ich will ja nicht mosern, aber ohne JavaScript funktioniert das nicht... Also keine Logins aus Behörden, Internet-Cafes und von paranoisen Usern. :(

<a href="{$NEW_LINK}javascript:submitForm('loginbox')

Nee, so geht's auch nicht, da musst Du schon den Inhalt des Smartys ändern (in der verknüpften PHP-Datei, nicht in der HTML-Datei) anstatt zu versuchen, das einfach dranzuhängen :rolleyes:

Link to comment
Share on other sites

[quote name='John Steed;249297Nee' date=' so geht's auch nicht, da musst Du schon den Inhalt des Smartys ändern (in der verknüpften PHP-Datei, nicht in der HTML-Datei) anstatt zu versuchen, das einfach dranzuhängen :rolleyes:[/quote']

Also bei mir funktioniert es. Kannst dich auf http://xtcshop.flinkehelfer.de/ selbst davon überzeugen.

Aber du hast schon recht ohne Java geht das nicht. Wie meinst du das mit "den Inhalt des Smartys ändern"? Kenne mich mit Smarty eigentlich gar nicht aus.

Link to comment
Share on other sites

Erstmal: Falls wir uns mal treffen sollten, musst Du mir nen Kaffee ausgeben, da Du Java und JavaScript verwechselt hast - das sind beides völlig (!) unterschiedliche Technologien und Sprachen... Aber egal :)

Mit "Smarty ändern" meine ich nichts wirklich kompliziertes. Die Inhalte der Smarty-Tags werden vorher in PHP generiert. Also z.B. das, was letztendlich in {$NEW_LINK} steht, wird in einer PHP-Datei (müsste in Deinem Fall /templates/DEINTEMPLATE/source/boxes/loginbox.php sein) vorgekaut.

Den Inhalt des Smarty-Tags kannst Du folglich in der entsprechenden PHP-Datei nach Belieben abändern. Hat mit Smarty an sich eher wenig zu tun - man ändert halt nur den Inhalt des entsprechenden Platzhalters.

Link to comment
Share on other sites

  • 2 weeks later...

Ahhhh ich habs gesehen! Ich schulde dir auch ein Bier wenn du magst *Virtuellesbierrüberreich*. Ok das mit dem Smarty habe ich geschnallt aber es funktioniert ohne Probleme habe auch mehrere Test - User mit verschiedenen Browsern angelegt hat alles wunderbar geklappt. Aber wer Java Script gänzlich ausschaltet der hat wahrscheinlich noch nie was von den Dingern namens Anti Virus und Firewall gehört :confused:. Mein Beileid :P.

Link to comment
Share on other sites

Aber wer Java Script gänzlich ausschaltet

Wirst Dich wundern wo das überall aus ist - Behörden, einige Internetcafes, Schulen, Grosskonzern-IT...

Ähm, ja und natürlich bei alternativen Browsern für Leute mit Handycap (z.B. Lynx oder Screenreader) steht es gar nicht erst zur Verfügung - aber das ist ein ganz anderes Thema :)

Kannste aber trotzdem was machen:

Lass einfach das Link selbst per JavaScript hinschreiben (document.write) und packe einen "normalen", eventuell mit CSS zu nem "Link" umgestylten Submit-Button dazu <noscript></noscript>.

Wer dann kein JavaScript hat, bekommt halt nen normalen Button. Und wer dann nicht mit IE/Mac surft, der sieht gar nicht, dass das ein Button ist :D

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...