Werbung / Banner buchen
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:

Autor Thema: ANLEITUNG: Firmendaten bei Accounterstellung erst nach akvivieren einer Checkbox anzeigen  (Gelesen 5044 mal)

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
ACHTUNG: Hier geht es direkt zur fertigen Lösung von scooterama: Klick mich!

Hallo,

wir haben einen Shop für Ersatzteile und Vertreiben an gewerbliche Kunden, sowie private Kunden.

Gewerblichen Kunden schließen wir vom Widerufsrecht aus.
Darauf wird auch Gesetzeskonform vorher hingewiesen.

Um der Diskussion zu entgehen "Ich dachte Feld "Firma" steht "nur" für die Lieferanschrift" - bin ich vor Jahren hingegangen und habe

im Hauptverzeichniss die create_accountpk.php & create_guest_accountpk.php angelegt (vom Original kopiert)

und im \templates\xtc5\module\ die create_accountpk.html & create_account_guestpk.html angelegt (vom Original kopiert)

Dann habe ich auf der Checkout Seite folgende Button auf die Dateien verlinkt:

[ Für Gäste sind keine Dateianhänge sichtbar ]

Und nur bei Gewerbekauf erscheint bei Rechnungsanschrift das Firmenfeld.

Das hat immer gut funktioniert.
Jetzt Update ich gerade auf 2.x und auch das neue Template baue ich mit ein.

Nun würde ich wieder so eine Lösung einbauen wollen und würde eure Meinung gerne wissen.

Gibt es hier vielleicht eine bessere oder "saubere" Lösung um den Kunden im Vorfeld zu fragen ob er Gewerbe oder Privat Kunde ist?

Vielen lieben Dank vorab für eure Mühe!

Gruß Heiko

ACHTUNG: Hier geht es direkt zur fertigen Lösung von scooterama: Klick mich!

[EDIT Tomcraft 08.04.2017: Anleitung von scooterama verlinkt.]

Linkback: https://www.modified-shop.org/forum/index.php?topic=36392.0

Haendlerbund_Leistungen_728x90_animiert

Offline noRiddle

  • Experte
  • *****
  • Beiträge: 10.036
  • Geschlecht: Männlich
    • Teile Beitrag
    • Webdesign Bonn - Köln
Ich würde es über einen GET-Parameter und eine Session-Variable lösen.
Du könntest update-sicher und ohne kopierte Dateien folgendes machen:
Lege eine Datei, z.B. namens gast_oder_gewerbe.php, in /includes/extra/application_top/application_top_end/ mit folgendem Inhalt:
Code: PHP  [Auswählen]
if((strpos($PHP_SELF, 'create_account') || strpos($PHP_SELF, 'create_guest_account')) && (isset($_GET['type']) && $_GET['type'] == '1')) {
    $_SESSION['which_account'] = 1;
} else {
    unset($_SESSION['which_account']);
}

In der Template-Datei /templates/DEIN_TEMPLATE/module/login.html kreierst du die Buttons in folgender Weise:
Code: XML  [Auswählen]
<a href="{FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>

<a href="{FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>

Da ich dein Template nicht kenne habe ich die Buttons mal ohne Button-Bild gemacht.
Du mußt dann eben noch das Button-Bild oder, wenn du CSS-Buttons hast, den entsprechenden Code benutzen.

Die Sprach-Variablen für link_txt_create_acc_priv und link_txt_create_acc_comm definierst du in /templates/DEIN_TEMPLATE/lang/lang_SPRACHE.custom.

In den beiden Dateien /templates/DEIN_TEMPLATE/module/creat_account.html und ~/create_guest_account.html umgibst du den Bereich mit Firma und USTID, also wo es im tpl_modified heißt
Code: XML  [Auswählen]
    {if $company == '1'}
    <br />
    <h4>{#title_company#}</h4>
    <table>
      <tr>
        <td><span class="fieldtext">{#text_company#}</span><span class="stern">{$INPUT_COMPANY}</span></td>
      </tr>
      {if $vat == '1'}
      <tr>
        <td><span class="fieldtext">{#text_ustid#}</span><span class="stern">{$INPUT_VAT|replace:"Nur":"<br />Nur"}</span></td>
      </tr>
      {/if}
    </table>
    {/if}

mit folgender Abfrage:
Code: XML  [Auswählen]
{if isset($.smarty.session.which_account) && $.smarty.session.which_account == '1'}
DER_CODE
{/if}

Dann wird Firma und USTID nur angezeigt wenn man auf "Gewerbe", oder wie du den Button immer benannt hast, klickt.

Nicht getestet !, sollte jedoch so gehen.

Gruß,
noRiddle

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
Guten morgen und vielen Dank für die tolle Lösung.

Vor allem vielen Dank für die genauere Erklärung bzw. Mühe - weil damit verstehe ich auch für die Zukunft mehr!

Leider mag da aber noch was nicht funktionieren.

1. gast_oder_gewerbe.php
Die habe ich angelegt. Ist es richtig dass ich die noch mit "<?php" und "?>" umgebe?

2. Sobald ich in der login.html folgendes einbinde:

Code: PHP  [Auswählen]
<div class="twoColums last">
  {if $account_option == 'account' or $account_option == 'both'}
  <div class="highlightbox cf">
   <h1>Ich bin ein Privatkunde:</h1>
    <h4>{#title_new#}</h4>
   <p>{#text_new#}</p>
   <a href="{FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
 </div>
  {/if}

  {if $account_option == 'both' or $account_option == 'guest'}
  <br />
  <div class="highlightbox cf">
    <h4>{#title_guest#}</h4>
   <p>{#text_guest#}</p>
<a href="{FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
 </div>
  {/if}
</div>
 

erhalte ich eine weiße Seite.
Ich verwende das aktuelle tpl_modified Template

3. Ich habe dann in der Login.html die Originalen Button drin gelassen.
Rufe ich dann die create_account.php und create_guest_accountpk.php auf, so erhalte ich auch hier eine weiße Seite.

Baue ich dann aus der create_account.html und create_guest_account.html die IF abfrage wieder aus, dann klappt es wieder.

Habe ich die IF Abfrage richtig eingebaut?

Code: PHP  [Auswählen]

{if isset($.smarty.session.which_account) && $.smarty.session.which_account == '1'}


    <h4>{#title_company#}</h4>
   <table>
      <tr>
        <td><span class="fieldtext">{#text_company#}</span><span class="stern">{$INPUT_COMPANY}</span></td>
     </tr>
      {if $vat == '1'}
      <tr>
        <td><span class="fieldtext">{#text_ustid#}</span><span class="stern">{$INPUT_VAT|replace:"Nur":"<br />Nur"}</span></td>
     </tr>
      {/if}
    </table>
    {/if}
    <br />


{/if}

 

Vielen lieben Dank nochmal vorab für die Mühe!

Offline Buggyboy

  • Fördermitglied
  • *****
  • Beiträge: 917
  • Geschlecht: Männlich
    • Teile Beitrag
    • Spiel-Zeit-Shop
Hallo!

Fehlt in Deiner Abfrage nicht:

Code: PHP  [Auswählen]
{if $company == '1'}
ganz am Anfang?
Daher wäre dann ein {/if} zuviel und deswegen funzt es wohl nicht...

LG
peter

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
Danke für deine Antwort.
Wo fehlt diese den?

Offline Buggyboy

  • Fördermitglied
  • *****
  • Beiträge: 917
  • Geschlecht: Männlich
    • Teile Beitrag
    • Spiel-Zeit-Shop
Code: PHP  [Auswählen]
{if isset($.smarty.session.which_account) && $.smarty.session.which_account == '1'}

{if $company == '1'}

    <h4>{#title_company#}</h4>
   <table>
      <tr>
        <td><span class="fieldtext">{#text_company#}</span><span class="stern">{$INPUT_COMPANY}</span></td>
     </tr>
      {if $vat == '1'}
      <tr>
        <td><span class="fieldtext">{#text_ustid#}</span><span class="stern">{$INPUT_VAT|replace:"Nur":"<br />Nur"}</span></td>
     </tr>
      {/if}
    </table>
    {/if}
    <br />


{/if}

Und wofür ist das <br /> am Ende?
War in dem von noRiddle geposteten Code nicht... oder?

LG
Peter

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
Ups, danke !
Habe die If abfrage nun vor die if company gesetzt.
Rufe ich nun die create_account.php auf erhalte ich leider immer noch eine weiße Seite.

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
In den Log files steht folgendes:

Zitat
[17-01-2017 09:25:48] UNDEFINED_ERROR   : LoggingManager: Syntax error in template "/www/htdocs/***/***/templates/tpl_modified/module/create_account.html"  on line 35 "{if isset($.smarty.session.which_account) && $.smarty.session.which_account == '1'}"  - Unexpected ".", expected one of: "{" , "identifier" in File: /www/htdocs/***/***/includes/external/smarty/smarty_3/sysplugins/smarty_internal_templatecompilerbase.php on Line: 35

Vielleicht hilft es ;)

Offline noRiddle

  • Experte
  • *****
  • Beiträge: 10.036
  • Geschlecht: Männlich
    • Teile Beitrag
    • Webdesign Bonn - Köln
Da habe ich in diesem Code einen kleinen Syntax-Fehler, sorry:
Code: XML  [Auswählen]
{if isset($.smarty.session.which_account) && $.smarty.session.which_account == '1'}
DER_CODE
{/if}

Der Punkt hinter $ vor smarty muß in beiden Fällen weg.

Gruß,
noRiddle

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
Vielen Dank, das hat funktioniert.

Nur mit dem Login Button will das bei mir noch nicht so ganz.

Ich verwende dass aktuelle modified Template.

Dort füge ich bei der login.html im Bereich:

Code: PHP  [Auswählen]
<div class="twoColums last">
  {if $account_option == 'account' or $account_option == 'both'}
  <div class="highlightbox cf">
   <h1>Ich bin ein Privatkunde:</h1>
    <h4>{#title_new#}</h4>
   <p>{#text_new#}</p>
   <div class="button_right">{$BUTTON_NEW_ACCOUNT}</div>
  </div>
  {/if}

  {if $account_option == 'both' or $account_option == 'guest'}
  <br />
  <div class="highlightbox cf">
    <h4>{#title_guest#}</h4>
   <p>{#text_guest#}</p>
   <div class="button_right">{$BUTTON_GUEST}</div>
  </div>
  {/if}
</div>

 

das dazu:

Code: PHP  [Auswählen]
<a href="{FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>

<a href="{FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>

Also:

Code: PHP  [Auswählen]
<div class="twoColums last">
  {if $account_option == 'account' or $account_option == 'both'}
  <div class="highlightbox cf">
    <h4>{#title_new#}</h4>
   <p>{#text_new#}</p>
<a href="{FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
   <div class="button_right">{$BUTTON_NEW_ACCOUNT}</div>
  </div>
  {/if}

  {if $account_option == 'both' or $account_option == 'guest'}
  <br />
  <div class="highlightbox cf">
    <h4>{#title_guest#}</h4>
   <p>{#text_guest#}</p>
<a href="{FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
   <div class="button_right">{$BUTTON_GUEST}</div>
  </div>
  {/if}
</div>
 

Aber ich erhalte eine weiße Webseite:

Die error.log sagt:

[18-01-2017 09:40:07] UNDEFINED_ERROR   : LoggingManager: Syntax error in template "/www/htdocs/****/****/templates/tpl_modified/module/login.html"  on line 49 "<a href="{FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>" unknown tag "FILENAME_CREATE_ACCOUNT" in File: /www/htdocs/****/****/includes/external/smarty/smarty_3/sysplugins/smarty_internal_templatecompilerbase.php on Line: 49

Offline hpzeller

  • Experte
  • *****
  • Beiträge: 3.062
  • Geschlecht: Männlich
    • Teile Beitrag
    • xos-shop.com | XOS-Shop ist ein umfangreiches "Open Source Webshop-System", welches per Webinterface administriert wird und an die Bedürfnisse des Betreibers angepasst werden kann.
Die Ursache des Syntax error liegt wohl bei diesem Code

Code: XML  [Auswählen]
{FILENAME_CREATE_ACCOUNT|xtc_href_link}
 

ersetze ihn mit diesem Code

Code: XML  [Auswählen]
{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link}
 

Gruss
Hanspeter

Offline noRiddle

  • Experte
  • *****
  • Beiträge: 10.036
  • Geschlecht: Männlich
    • Teile Beitrag
    • Webdesign Bonn - Köln
Exactly, hatte bei meinem Schnellschuß nicht auf meinen Code aufgepasst, sorry.

Allerdings ist {$BUTTON_NEW_ACCOUNT} und {$BUTTON_GUEST} nicht nötig.
Code: XML  [Auswählen]
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
ersetzt {$BUTTON_NEW_ACCOUNT}

und
Code: XML  [Auswählen]
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
ersetzt {$BUTTON_GUEST}.

Die jeweils beiden Links sollten dann noch template-gemäß formatiert werden.

Gruß,
noRiddle

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
Recht herzlichen Dank für deine tolle Hilfe, Unterstützung und den Code.

Funktioniert Super!

Offline derheiko

  • Fördermitglied
  • *****
  • Beiträge: 295
    • Teile Beitrag
    • http://www.derHeiko.com
Hier noch mal die komplette Anleitung - wie man zwischen Gewerbe und Privat durch Bestätigung des Kundens vorab unterscheiden kann - kurz zusammen gefasst.

Danke noRiddle für die Lösung und Hilfe!

/includes/extra/application_top/application_top_end/

Datei mit Namen 70_gast_oder_gewerbe.php anlegen und mit folgendem Inhalt befüllt.

Code: PHP  [Auswählen]
<?php

if((strpos($PHP_SELF, 'create_account') || strpos($PHP_SELF, 'create_guest_account')) && (isset($_GET['type']) && $_GET['type'] == '1')) {
    $_SESSION['which_account'] = 1;
} else {
    unset($_SESSION['which_account']);
}

?>

Dann in der /templates/tpl_modified/module/login.html

Code: PHP  [Auswählen]
<div class="twoColums last">
  {if $account_option == 'account' or $account_option == 'both'}
  <div class="highlightbox cf">
    <h4>{#title_new#}</h4>
   <p>{#text_new#}</p>
   <div class="button_right">{$BUTTON_NEW_ACCOUNT}</div>
  </div>
  {/if}

  {if $account_option == 'both' or $account_option == 'guest'}
  <br />
  <div class="highlightbox cf">
    <h4>{#title_guest#}</h4>
   <p>{#text_guest#}</p>
   <div class="button_right">{$BUTTON_GUEST}</div>
  </div>
  {/if}
</div>

Folgendes entfernen:

Code: PHP  [Auswählen]
<div class="button_right">{$BUTTON_NEW_ACCOUNT}</div>
und ersetzen durch

Code: PHP  [Auswählen]
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>
 
und

Code: PHP  [Auswählen]
<div class="button_right">{$BUTTON_GUEST}</div>

ersetzen durch

Code: PHP  [Auswählen]
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}">{#link_txt_create_acc_priv#}</a>
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}">{#link_txt_create_acc_comm#}</a>

Alternativ zum Text kann man auch einen Button einfügen:

Code: PHP  [Auswählen]
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link}"><img src="/templates/tpl_modified/buttons/german/button_pk.gif" alt="" width="201" height="37" /></a>        
<a href="{$smarty.const.FILENAME_CREATE_GUEST_ACCOUNT|xtc_href_link:'type=1'}"><img src="/templates/tpl_modified/buttons/german/button_pk.gif" alt="" width="201" height="37" /></a></a>

Wenn TEXT statt Button, noch den Text anlegen:

In der

/templates/tpl_modified/lang/lang_german.custom

am Ende folgendes hinzufügen:

Code: PHP  [Auswählen]
link_txt_create_acc_priv = 'Ich bin eine Privater Kunde'
link_txt_create_acc_comm = 'Ich bin ein Gewerblicher Kunde'

Zum guten Schluß in der

/templates/tpl_modified/create_account.html

den Bereich suchen

Code: PHP  [Auswählen]
    {if $company == '1'}  …..

Diesen wie folgt einklammern
Zitat
{if isset($smarty.session.which_account) && $smarty.session.which_account == '1'}

    {if $company == '1'}
    <br />
    <h4>{#title_company#}</h4>
    <table>
      <tr>
        <td><span class="fieldtext">{#text_company#}</span><span class="stern">{$INPUT_COMPANY}</span></td>
      </tr>
      {if $vat == '1'}
      <tr>
        <td><span class="fieldtext">{#text_ustid#}</span><span class="stern">{$INPUT_VAT|replace:"Nur":"<br />Nur"}</span></td>
      </tr>
      {/if}
    </table>

    {/if}

{/if}

Fast das gleiche in der

/templates/tpl_modified/create_guest_account.html

Den Bereich suchen

    {if $company == '1'} ….

Auch wie folgt einklammern:

Zitat
{if isset($smarty.session.which_account) && $smarty.session.which_account == '1'}

    {if $company == '1'}
    <h4>{#title_company#}</h4>
    <table>
      <tr>
        <td><span class="fieldtext">{#text_company#}</span><span class="stern">{$INPUT_COMPANY}</span></td>
      </tr>
      {if $vat == '1'}
      <tr>
        <td><span class="fieldtext">{#text_ustid#}</span><span class="stern">{$INPUT_VAT|replace:"Nur":"<br />Nur"}</span></td>
      </tr>
      {/if}
    </table>
    {/if}

{/if}

Offline scooterama

  • Mitglied
  • ***
  • Beiträge: 152
  • Geschlecht: Männlich
    • Teile Beitrag
    • http://www.scootertuning.ch
Vielen Dank für diese Lösung, auch wir stehen regemlässig vor dem Problem dass Private Kunden munter in das Firmenfeld schreiben und dann Firmenkonten anlegen. Da wird einfach dann nochmal Herr, oder das Geburtsjahr reingeschrieben. Der Hinweis dass man doch das Feld nur befüllt wenn man Firmenkunde ist intressiert niemanden.

Die Lösung hier finde ich nicht schlecht, allerdings ist das nur eine Teillösung. Was passiert wenn der Besucher im Standard tpl_modified Template auf Registrieren klickt? Dann fehlt einfach das Firmenfeld gänzlich. Man sollte direkt in der create_account.php eine Abfrage einbauen ob Gewerblich oder Privat oder nicht?

Könnte das Team da nicht eine Fixe Lösung bringen? In anderen Shopsystemen wird das doch im Formular einfach über die Auswahl der Anrede gesteuert. Wäre das eine Lösung?

Anrede:
Firma
Herr
Frau

Wählt der Kunde "Firma" erscheint das Feld für den Firmenname, wählt der Kunde "Herr" oder "Frau" erscheint kein Feld Firmenname.

Ist das nicht fast die einfachste Lösung??


Teile per facebook Teile per linkedin Teile per twitter

 


             
anything