Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: ANLEITUNG: Firmendaten bei Accounterstellung erst nach akvivieren einer Checkbox anzeigen

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    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
    Managed Server

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.739
    • Geschlecht:
    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

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    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!

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    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

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    Danke für deine Antwort.
    Wo fehlt diese den?

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    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

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    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.

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    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 ;)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.739
    • Geschlecht:
    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

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    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

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.739
    • Geschlecht:
    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

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    Recht herzlichen Dank für deine tolle Hilfe, Unterstützung und den Code.

    Funktioniert Super!

    derheiko

    • Fördermitglied
    • Beiträge: 464
    • Geschlecht:
    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}

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    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??
    rechtstexte für onlineshop
    11 Antworten
    5670 Aufrufe
    18. November 2013, 19:43:54 von wolkenkrieger
    12 Antworten
    9396 Aufrufe
    27. März 2015, 16:39:17 von web0null
    9 Antworten
    4621 Aufrufe
    02. Juli 2011, 18:14:08 von C1C2