Wie Warenkopb Layout verändern? AGB-Link verschieben...

  • Hallo,
    aus rechtlichen Gründen ist es nötig, dass ich das Layout des Warenkorbes ändere. Zwischen dem Button "Zur Kasse" oder "Kaufen" und den Angaben zum Artikel darf nichts stehen. "Bitte lesen und bestätigen Sie Ihr Einverständnis mit den Allgemeinen Geschäftsdingungen" (schlechtes Deutsch, das sollte geändert werden) und auch "Anmerkungen und spezielle Wünsche" und das dazughörige Eingabefeld dürfen dort nicht stehen (laut Aussage des Anwalts).
    Ich möchte also den AGB-Link an die angezeichnete Stelle verschieben und die "Anmerkungen und speziellen Wünsche" nebst Eingabefeld löschen (möglicherweise auch unter den Button verschieben) Wie ist das zu bewerkstelligen?
    Grüße
    Thomas


    Hier verwendet:
    Joomla 2.5.20
    Virtuemart 2.0.26d
    Template Beez5

  • Texte Übersetzen bzw. ändern kannst du selbst machen -


    Das Zauberwort: Sprach- Override


    Ist zwar in englisch aber einfach Bildchen gucken;)


    Das Verschieben und Entfernen würde ich über´s CSS versuchen:confused:


    Gruss Jamel

    I`m not a perfect person. I make a lot of mistakes....
    :o But still, I love those people who stay with me after knowing how I really am. :o


    Problem gelöst? Dann bitte auch die Lösung posten und Beitrag auf [gelöst] setzen.


    Im aufgerufenen Thema siehst Du oben den Satz "Dieses Thema als [GELÖST] markieren.
    Nach Anklicken wird das Thema auf gelöst gesetzt und der Satz verschwindet.

    5 Mal editiert, zuletzt von Jamel ()

  • Hm,


    ich habe mich bei einem Versender schon einige Male geärgert, dass es da kein Textfeld gibt, in das ich eine Nachricht schreiben kann, um eine Bemerkung zum Versand zu hinterlassen.


    Ich bestelle da übrigens nicht mehr, unter anderem deswegen, weil diese Bemerkung wichtig war, aber per gesonderter Mail einige Male zu spät kam.


    Ich würde den Anwalt da noch einmal eindringlicher prüfen lassen, warum das nicht möglich sein soll.


    Manche scheinbaren Regeln werden manchmal zu streng befolgt, obwohl sie garnicht so festgemeißelt sind. Ist ein "leeres" Textfeld etwas, das zwischen dem Artikel und dem Kaufen-Button steht. (Und damit etwas verschleiern oder zum Nachteil des Kunden verändern könnte, oder was auch immer der Grund für diese Regel sein soll?)


    Dies ist natürlich keine Rechtsberatung, aber ich würde schon auf meine Kundenfreundlichkeit achten und da einmal genauer auf den Zahn fühlen.
    Stefan


    PS. Ich find das gut so.


  • Hallo Stefan,
    ich kann deinen Einwand gut nachvollziehen. Für mich selbst ist die Position des Textfeldes an dieser Stelle auch völlig unbedenklich. Aber der Gesetzgeber, so die Aussage des Anwaltes, hat es nun einmal so vorgesehen, dass zwischen den wesenlichen Merkmalen der Ware (und das ist alles, was sich im Warenkorb befindet) und dem Bestellbutton nichts stehen darf. Und wie von Dir schon richtig vermutet, um den Kunden vor Irreführung oder Täuschung zu schützen. Natürlich ist das bei meinem Warenkorb nicht der Fall. Der ist völlig harmlos und unschuldig. Aber darum geht es nicht. Das ist eine rein formale Angelegenheit, und auf konkrete Fälle wird nicht geschaut. Es darf einfach nichts dazwischenstehen, egal, was es ist. Wer das missachtet, kann abgemahnt werden. Um das Textfeld gesetzeskonform zu erhalten, könnte man es aber z. B. unterhalb des Buttons platzieren oder irgendwo oberhalb der Warenmerkmale. Ich werde darüber nachdenken.
    Siehe auch hier:
    http://www.haendlerbund.de/hin…laetter/99-button-loesung


    Grüße
    Thomas

  • Hallo Thomas!


    Ich sehe halt das Problem, wenn der Kunde etwas in das Textfeld eingibt, das den Vertrag betrifft. Ist es unter dem Button, könnte gleich der Nächste argumentieren, dass das Textfeld nicht gültig ist, wenn es unter dem Button steht.


    Naja, und von dem komischen Verein der Shopbetreiber, wie hießen die noch, Händlerbund oder so, da weiß ich auch nicht, ob ich da alles so ungesehen übernehmen würde.


    Das von Dir angesprochene Zettelchen hatte ich auch schon ein paar Mal vor mir, und wenn der Rechtsgehalt darin genauso präzise ist wie die Rechtschreibung darin, kann man das Zettelchen nach dem Ausdruck gut verwenden, um bestimmte Körperteile nach einem Gang zum Abort zu säubern.


    Irgendwie haben die ganz dolle darauf hingewiesen, dass man unbedingt "Kostenpflichtig Bestellen" auf den Button schreiben muss, und dann plötzlich kommt man nach Seiten des Lesens darauf, dass KAUFEN ja doch genau das ausdrückt und völlig ausreicht. Anstatt das in den Vordergrund zu rücken, empfehlen sie einen Text, der jeden normalen Button kaputt macht. Das ist nur eine Kleinigkeit von vielen Dingen, warum ich da niemals eintreten würde.


    Ich habe das Gefühl, Dein Anwalt verlässt sich zu sehr auf irgendetwas Vorgedrucktes. Ich werde jedenfalls meinen Warenkorb so lassen, wenn der Shop demnächst online geht.


    Und wenn mir da jemand eine Abmahnung schickt, dann nehme ich das ziemlich persönlich.


    Stefan

  • Hallo Stefan,
    ich werde hier kein Risiko eingehen und die AGB nach oben verschieben (das sieht man sehr häufig) und das Textfeld entweder ebenfalls verschieben oder löschen. Das ist auf jeden Fall korrekt. Im Online-Handel weht leider ein sehr rauer Wind, und wenn man Pech hat, wird man wegen solcher Dinge abgemahnt. Und das kann schneller gehen, als man denkt. So mancher Konkurrent ist nicht zimperlich, das sollte man nie vergessen...
    Grüße
    Thomas

  • Servus Thomas,


    auf der sicheren Seite bleiben sollst Du auch, deshlalb meinte ich, den Anwalt vielleicht doch noch einmal genauer nachforschen zu lassen, aber sei es drum, wenn es anders geht, kann man es ja auch anders machen.


    Ich hab gerade mal geschaut. In der default.php im Ordner components/com_virtuemartviews/cart/tmpl/ wird
    echo $this->loadTemplate ('cartfields');
    aufgerufen. Das ist jetzt aus der 3.0.6, könnte aber bei VM 2.0.26 noch ähnlich sein. Die hab ich nur gerade nicht hier.


    Diese Zeile einfach oberhalb von
    echo $this->loadTemplate ('pricelist');
    einsetzen, dann sollte das schon einmal über der Produktliste sein. Am besten einen Override anlegen.


    Deine Versionen sind übrigens schon ein wenig älter und sowohl Joomla als auch VirtueMart haben seitdem böse Sicherheitslücken gehabt. Vielleicht im Zug der Arbeiten gleich auf J2.5.28 und VM 2.6.16 gehen. Joomla 3.x muss nicht sein, darüber gibt es woanders genug Diskussionen. Google hilft da bei der Entscheidung.


    Hope it helps
    Stefan

  • Hallo Stefan,
    echo $this->loadTemplate ('pricelist'); ist zwar vorhanden, aber nicht echo $this->loadTemplate ('cartfields');
    Ich kann zwar alle Warenkorb-Elemente erkennen, wüßte jetzt aber auf Anhieb nicht, wie man korrekt den AGB-Link verschiebt.
    Ich werde ein Override anlegen und herumexperimentieren, vielleicht klappt's ja. Oder hast du einen Tipp?
    Mein Anwalt hat mir zum AGB-Link eine klare Ansage gemacht. Nochmaliges Anfragen macht da keinen Sinn.
    Vor Kurzem hatte ich dazu auch ein Gespräch mit einem Webdesigner, der für einen Kunden den AGB-Link, der ebenfalls zwischen Kaufen-Button und Artikelmerkmalen stand, nach oben verschieben musste. Vorausgegangen war eine Prüfung des Shops durch Trusted Shops, die auf dieser Änderung bestanden. Danke auch für den Hinweis auf die veralteten Versionen. Das wird alles noch gemacht, und auf keinen Fall geht der Shop in dieser technisch veralteten Form online. Mich plagt nur die Sorge, dass die Aktualisierungen vielleicht zu Problemen führen könnten. Das ist der Grund, weshalb ich es noch nicht gemacht habe und mich frage, ob es nicht besser wäre, das einem Experten zu überlassen. Spielt denn möglicherweise die Reihenfolge der Aktualisierung eine Rolle? Sollte man also vielleicht zuerst joomla auf den neuesten Stand bringen und dann virtuemart oder gerade umgekehrt? Oder spielt das keine Rolle?
    Grüße
    Thomas
    <?php
    /**
    *
    * Layout for the shopping cart
    *
    * @package VirtueMart
    * @subpackage Cart
    * @author Max Milbers
    *
    * @link http://www.virtuemart.net
    * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
    * VirtueMart is free software. This version may have been modified pursuant
    * to the GNU General Public License, and as distributed it includes or
    * is derivative of works licensed under the GNU General Public License or
    * other free or open source software licenses.
    * @version $Id: cart.php 2551 2010-09-30 18:52:40Z milbo $
    */


    // Check to ensure this file is included in Joomla!
    defined ('_JEXEC') or die('Restricted access');
    if(VmConfig::get('usefancy',0)){
    vmJsApi::js( 'fancybox/jquery.fancybox-1.3.4.pack');
    vmJsApi::css('jquery.fancybox-1.3.4');
    $box = "
    //<![CDATA[
    jQuery(document).ready(function($) {
    $('div#full-tos').hide();
    var con = $('div#full-tos').html();
    $('a#terms-of-service').click(function(event) {
    event.preventDefault();
    $.fancybox ({ div: '#full-tos', content: con });
    });
    });


    //]]>
    ";
    } else {
    vmJsApi::js ('facebox');
    vmJsApi::css ('facebox');
    $box = "
    //<![CDATA[
    jQuery(document).ready(function($) {
    $('div#full-tos').hide();
    $('a#terms-of-service').click(function(event) {
    event.preventDefault();
    $.facebox( { div: '#full-tos' }, 'my-groovy-style');
    });
    });


    //]]>
    ";
    }


    JHtml::_ ('behavior.formvalidation');
    $document = JFactory::getDocument ();
    $document->addScriptDeclaration ($box);
    $document->addScriptDeclaration ("


    //<![CDATA[
    jQuery(document).ready(function($) {
    if ( $('#STsameAsBTjs').is(':checked') ) {
    $('#output-shipto-display').hide();
    } else {
    $('#output-shipto-display').show();
    }
    $('#STsameAsBTjs').click(function(event) {
    if($(this).is(':checked')){
    $('#STsameAsBT').val('1') ;
    $('#output-shipto-display').hide();
    } else {
    $('#STsameAsBT').val('0') ;
    $('#output-shipto-display').show();
    }
    });
    });


    //]]>


    ");
    $document->addStyleDeclaration ('#facebox .content {display: block !important; height: 480px !important; overflow: auto; width: 560px !important; }');


    ?>


    <div class="cart-view">
    <div>
    <div class="width50 floatleft">
    <h1><?php echo JText::_ ('COM_VIRTUEMART_CART_TITLE'); ?></h1>
    </div>
    <?php if (VmConfig::get ('oncheckout_show_steps', 1) && $this->checkout_task === 'confirm') {
    vmdebug ('checkout_task', $this->checkout_task);
    echo '<div class="checkoutStep" id="checkoutStep4">' . JText::_ ('COM_VIRTUEMART_USER_FORM_CART_STEP4') . '</div>';
    } ?>
    <div class="width50 floatleft right">
    <?php // Continue Shopping Button
    if (!empty($this->continue_link_html)) {
    echo $this->continue_link_html;
    } ?>
    </div>
    <div class="clear"></div>
    </div>




    <?php echo shopFunctionsF::getLoginForm ($this->cart, FALSE);


    // This displays the form to change the current shopper
    $adminID = JFactory::getSession()->get('vmAdminID');
    if ((JFactory::getUser()->authorise('core.admin', 'com_virtuemart') || JFactory::getUser($adminID)->authorise('core.admin', 'com_virtuemart')) && (VmConfig::get ('oncheckout_change_shopper', 0))) {
    echo $this->loadTemplate ('shopperform');
    }




    // This displays the pricelist MUST be done with tables, because it is also used for the emails
    echo $this->loadTemplate ('pricelist');


    // added in 2.0.8
    ?>
    <div id="checkout-advertise-box">
    <?php
    if (!empty($this->checkoutAdvertise)) {
    foreach ($this->checkoutAdvertise as $checkoutAdvertise) {
    ?>
    <div class="checkout-advertise">
    <?php echo $checkoutAdvertise; ?>
    </div>
    <?php
    }
    }
    ?>
    </div>
    <?php
    if (!VmConfig::get('oncheckout_opc', 1)) {
    if ($this->checkout_task) {
    $taskRoute = '&task=' . $this->checkout_task;
    }
    else {
    $taskRoute = '';
    }
    ?>
    <form method="post" id="checkoutForm" name="checkoutForm" action="<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=cart' . $taskRoute, $this->useXHTML, $this->useSSL); ?>">
    <?php } ?>
    <?php // Leave A Comment Field ?>
    <div class="customer-comment marginbottom15">
    <span class="comment"><?php echo JText::_ ('COM_VIRTUEMART_COMMENT_CART'); ?></span><br/>
    <textarea class="customer-comment" name="customer_comment" cols="60" rows="1"><?php echo $this->cart->customer_comment; ?></textarea>
    </div>
    <?php // Leave A Comment Field END ?>




    <?php // Continue and Checkout Button ?>
    <div class="checkout-button-top">


    <?php // Terms Of Service Checkbox
    if (!class_exists ('VirtueMartModelUserfields')) {
    require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'userfields.php');
    }
    $userFieldsModel = VmModel::getModel ('userfields');
    if ($userFieldsModel->getIfRequired ('agreed')) {
    if (!class_exists ('VmHtml')) {
    require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php');
    }
    echo VmHtml::checkbox ('tosAccepted', $this->cart->tosAccepted, 1, 0, 'class="terms-of-service"');


    if (VmConfig::get ('oncheckout_show_legal_info', 1)) {
    ?>
    <div class="terms-of-service">


    <label for="tosAccepted">
    <a href="<?php JRoute::_ ('index.php?option=com_virtuemart&view=vendor&layout=tos&virtuemart_vendor_id=1', FALSE) ?>" class="terms-of-service" id="terms-of-service" rel="facebox"
    target="_blank">
    <span class="vmicon vm2-termsofservice-icon"></span>
    <?php echo JText::_ ('COM_VIRTUEMART_CART_TOS_READ_AND_ACCEPTED'); ?>
    </a>
    </label>


    <div id="full-tos">
    <h2><?php echo JText::_ ('COM_VIRTUEMART_CART_TOS'); ?></h2>
    <?php echo $this->cart->vendor->vendor_terms_of_service; ?>
    </div>


    </div>
    <?php
    } // VmConfig::get('oncheckout_show_legal_info',1)
    //echo '<span class="tos">'. JText::_('COM_VIRTUEMART_CART_TOS_READ_AND_ACCEPTED').'</span>';
    }
    echo $this->checkout_link_html;
    ?>
    </div>
    <?php // Continue and Checkout Button END ?>
    <input type='hidden' name='order_language' value='<?php echo $this->order_language; ?>'/>
    <input type='hidden' id='STsameAsBT' name='STsameAsBT' value='<?php echo $this->cart->STsameAsBT; ?>'/>
    <input type='hidden' name='task' value='<?php echo $this->checkout_task; ?>'/>
    <input type='hidden' name='option' value='com_virtuemart'/>
    <input type='hidden' name='view' value='cart'/>
    </form>
    </div>

  • So ganz einfach verschieben kann man das hier nicht, weil das form-Element, in dem das Textfeld und die AGB sind, die Preisliste nicht einschließen.


    Es ist auch nicht sinnvoll, das jetzt alles zu machen, weil in der 2.6.x Version vieles darin verändert wurde, was eher ähnlich zu VM3 ist.


    Leg ein Backup an, eine Testspiegelung und mach einfach die Updates, dann bist Du auf Versionen, die sich nicht mehr verändern werden. J 2.5.28 bekommt vielleicht hin und wieder noch einen Sicherheitspatch, VM 2.6.16 vielleicht auch, aber keine neuen Feature, kann also so ein paar Jahre laufen ohne große Wartung. Und nicht von irgendwelchen End Of Life - Nachrichten schrecken lassen. EOL heißt auf neudeutsch. Ende vOn viel updateLeid.


    Einiges wird nicht funktionieren, erst einmal alle Overrides ausmachen und schauen wie es aussieht.


    Stefan

  • Hallo Stefan,
    joomla habe ich jetzt auf 2.5.28 aktualisiert. Mutmaßlich ohne Probleme. Bei virtuemart bin ich mir nicht sicher, welche der angebotenen Versionen ich nehmen soll:
    Files - VirtueMart

    Ich würde virtuemart 2.6.16 zip nehmen Wobei ich mich frage, was es mit dem Link, der darüber steht (com_tcpdf), auf sich hat. Und wieso werden zwei aios angeboten. Soll ich die aktuellste nehmen, also die vom 20.02? Mich irritiert, dass diese Version kleiner ist als die vom 19.02.
    Und beides wird einfach entpackt und über "Erweiterungen" > "Installieren" hochgeladen?
    Grüße
    Thomas

  • Das, was Du brauchst, dürfte folgendes sein:


    http://dev.virtuemart.net/atta…com_virtuemart.2.6.16.zip
    http://dev.virtuemart.net/atta…uemart.2.6.16_ext_aio.zip


    Bei VM3 wurde jetzt aus Gründen, der 2MB-Grenze scheinbar TCPDF ausgelagert, so auch bei VM2.
    Wenn Dein Server größere Dateien als 2 MB erlaubt, kannst Du die obigen nehmen.


    Ansonsten siehst Du an den Dateigrößen, was Du nehmen müsstest. Die Dateibezeichnung und die Darstellung ist hier wohl nicht ganz optimal, zugegeben.


    Eine aio hat 2,2 MB, die andere aio hat 1,3 MB, da ist die TCPDF wohl nicht enthalten. Bei 2 MB-Grenze also:


    http://dev.virtuemart.net/atta…com_virtuemart.2.6.16.zip
    http://dev.virtuemart.net/atta…uemart.2.6.16_ext_aio.zip
    http://dev.virtuemart.net/atta…900/com_tcpdf_for_vm2.zip


    Ich pranger das mal bei den Devs an. ;-)


    Stefan

  • Hallo Stefan,
    danke für Deine Mühe. Ich bin hier sehr von der Sorge geplagt, dass etwas schiefgehen könnte, deshalb frage ich lieber mal ganz genau nach: Wenn ich die kleineren Datein nehme (ich habe eine 2MB Grenze), müssen diese dann entpackt werden? Oder kann ich sie so, wie sie sind, hochladen? Denn "first zip" steht hier ja nicht. Werden diese Dateien einfach über joomla>Erweiterungen>Installieren? hochgeladen? Wiird also automatisch erkannt, dass es sich hier um ein Update handelt und nicht um eine Neuinstallation? Ist die Reihenfolge des Hochladens virtuemart 2.6.16 dann aio und dann TCPDF?


    Grüße
    Thomas

  • Die Dateien werden ohne Entpacken über den Joomla-Erweiterungsmanager installiert.


    Wenn Du aber solch eine Sorge hast, etwas falsch zu machen, würde ich vorschlagen, eine Spiegelung der Installation zu machen, das ist wirklich nicht sehr schwierig, kostet beim ersten Mal vielleicht ein Stunde, nachher geht das in zehn Minuten.


    Testdomain anlegen http://meintest.meinedomain.de. Einen Ordner test neben der normalen Installation anlegen, alles dort aus der normalen Installation hinein kopieren. Die Subdomain dorthin verweisen. Zweite Datenbank erstellen, erste Datenbank exportieren, in zweiter DB importieren. Dann noch im test-Ordner die configuration.php an die Datenbank und den neuen Pfad anpassen. Fertig. Nun alles erst einmal unter der Testdomain probieren. Klappt es, gut, dann das gleiche auch für die originale Installation machen.


    Gibt noch zwei andere Möglichkeiten, aber es soll ja nicht zu verwirrend werden.


    Reihenfolge wie Du gesagt hast.


    In den zip-Dateien findest Du im Hauptordner eine Datei mit Endung .xml, da stehen die Daten zur Installation drin, gibt es so eine Datei, ist es normal auch eine installierbare Datei. Erkennt man auch an den Ordnern darin, z. Bsp. administrator, components, install....


    So long
    Stefan

  • Hallo Stefan,
    vielen Dank für die vielen hilfreichen Tipps.
    ich habe nun alles so, wie von Dir vorgeschlagen, gemacht. Die originale Installation ist akualisiert. Fehler sind mir bisher nicht aufgefallen. Der Bestellvorgang funktioniert auf jeden Fall noch. Leider hat sich die default.php des Warenkorbs nicht verändert, es gibt also kein
    echo $this->loadTemplate ('cartfields'); , das man einfach verschieben könnte. In dieser Hinsicht ist alles noch so, wie schon weiter oben gezeigt. Tja, hier ist also für mich das Ende der Fahnenstange erreicht.
    Grüße
    Thomas

  • Probier das mal als Override für die default.php. Das ist aus Vesion 2.6.16.


    Leider kann man das nicht einfach unter die Adressen setzen. Dazu muss man nicht nur die default umstellen, sondern Teile daraus in die pricelist mit hineinnehmen. Die pricelist wird aber noch an anderer Stelle verwendet, wenn ich mich nicht irre, und da dürfen die Felder dann nicht auftauchen. Das wird also schwieriger und liegt etwas außerhalb meiner Forenhilfekapazität.


  • Ach so, da war gerade eine Meldung zum Händlerbund.


    Google gibt da Infos: Kein Anruf vom Händlerbund


    Haben die doch glatt ein Urteil gegen sich. Sowas. Ich kann nicht wirklich über die urteilen, die haben sicher auch vielen geholfen, aber etwas kritisch sollte man schon an solche Vereine herangehen.


    Stefan