+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Attribute sollen im Frontend nebeneinander erscheinen

  1. #1
    Neu an Board
    Registriert seit
    02.01.2009
    Beiträge
    20
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Attribute sollen im Frontend nebeneinander erscheinen

    Hallo Gemeinde,

    ich möchte für Brillenkunden die Möglichkeit anbieten ihre Brillen online bei mir zu bestellen. Dabei habe ich mit Virtuemart und der Attributliste/den Attributen eigentlich schon eine technisch brauchbare Lösung gefunden, die aber leider nicht sonderlich hübsch und übersichtlich ist.

    Das Problem:
    Der Kunde muss seine Glaswerte angeben. Wenn ich die Attribute normal anlege, muss ich für das rechte und linke Brillenglas je 5 Merkmale anlegen, nur damit der Kunde die passenden Werte für seine Glasstärke eintragen kann. (siehe Anlage: "schlechte_loesung.jpg )
    Das wird dann eine untereinander geschriebene Tabelle mit 10 Zeilen, die sehr unübersichtlich ist. Wenn ich dann noch weitere Attribute für z.B. Tönung, Entspiegelung, Glasqualität etc hinzufügen muss, dann geht das alles ins unendliche..........und die Kunden kaufen bei der Online-Konkurrenz.

    Nun ein Gedanke, den ich aber technisch nicht umsetzen kann:
    Zunächst einmal denke ich dass aufgrund der Datenstruktur in der Attributliste keine Möglichkeit besteht Daten zu gruppieren.

    Da ich aber grundsätzlich IMMER die gleichen Auswahlkriterien habe, müsste ich doch möglich sein ein Template zu bauen, in dem diese 5 Grundkriterien fest eingebaut sind, also ohne Rückgriff auf die MySQL-Datei.
    Ich habe mal mit meinen bescheidenen HTML-Kentnissen in die Datei: /components/com_virtuemart/themes/default/templates/product_details/includes/addtocart_advanced_attribute.tpl.php etwas eingebaut, wie es aussehen sollte (siehe Anlage: "bessere_loesung.jpg) nun stehen die Werte zwar schön nebeneinander, aber mit meinen Möglichkeiten kriege ich die Daten nicht im Warenkorb angezeigt.

    Bin ich mit diesem Gedanken auf dem Holzweg? Kann mir jemand helfen?

    Danke

    Victoria
    Angehängte Grafiken
    Geändert von vi-doc (05.09.2010 um 19:07 Uhr)

  2. #2
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    Hallo,

    dein Vorhaben es manuell über HTML in die Datei zu coden wird sich als recht programmieraufwendig erweisen, da du die ganzen Inhalte der Selects dann auch manuell mit in den Warenkorb schicken musst, um sie dort anzeigen zu lassen.

    Falls du bei deinen Produkten wirklich IMMER nur "Rechts" und dann 4 Attribute daneben aufgelistet haben möchtest und darunter "Links" und wieder 4 Attribute kommen sollen, dann wäre das ziemlich einfach zu programmieren, aber lässt dann KEINERLEI Flexibilität mehr zu, was die Attribute angeht.

    im Urzustand sollte deine "addtocart_advanced_attribute.tpl.php" ja so aussehen:
    PHP-Code:
    <?php if( !defined'_VALID_MOS' ) && !defined'_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); 

    foreach(
    $attributes as $attribute) {         
        
    ?>
        <div class="vmAttribChildDetail" style="float: left;text-align:right;margin:3px;">
            <label for="<?php echo $attribute['titlevar'?>_field"><?php echo $attribute['title'?></label>:
        </div>
        <div class="vmAttribChildDetail" style="float:left;margin:3px;">
            <select class="inputboxattrib" id="<?php echo $attribute['titlevar'?>_field" name="<?php echo $attribute['titlevar'].$attribute['product_id'?>">
            <?php foreach ( $attribute['options_list'] as $options_item ) : ?>
                <?php if( isset( $options_item['display_price']) ) : ?>
                <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?> (<?php echo $options_item['sign'].$options_item['display_price'?>)</option>
                <?php else : ?>
                <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?></option>
                <?php endif; ?>
            <?php endforeach; ?>
            </select>
        </div>
        <br style="clear:both;" />
        
    <?php 
    ?>
    etwas umgecodet in diese Richtung:
    PHP-Code:
    <?php if( !defined'_VALID_MOS' ) && !defined'_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); 
    $i=0;
    foreach(
    $attributes as $attribute) {         
       
    $i++; 
       if(
    $i == 1){
        echo 
    '<div style="float:left;margin:3px;">Rechts:</div>';
       }
       
    ?>
            <div class="vmAttribChildDetail" style="float: left;text-align:right;margin:3px;">
                <label for="<?php echo $attribute['titlevar'?>_field"><?php echo $attribute['title'?></label>:
            </div>
            <div class="vmAttribChildDetail" style="float:left;margin:3px;">
                <select class="inputboxattrib" id="<?php echo $attribute['titlevar'?>_field" name="<?php echo $attribute['titlevar'].$attribute['product_id'?>">
                <?php foreach ( $attribute['options_list'] as $options_item ) : ?>
                    <?php if( isset( $options_item['display_price']) ) : ?>
                    <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?> (<?php echo $options_item['sign'].$options_item['display_price'?>)</option>
                    <?php else : ?>
                    <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?></option>
                    <?php endif; ?>
                <?php endforeach; ?>
                </select>
            </div>    
        
    <?php 
        
    if(($i 4) == 0){
            echo 
    '<br style="clear:both"/>';
        }
        if(
    $i == 4){
            echo 
    '<div style="float:left;margin:3px;">Links:</div>';
        }

    ?>
    wäre jetzt auf deinen speziellen, als Bild angehangenen Fall angepasst. Was hier passiert wäre folgendes...die Variable "$i" wird zu Beginn auf den Wert "0" gesetzt. Mit jeder Ausgabe eines Attributs wird "1" dazu addiert. Falls "$i" den Wert "1" hat, wird das Wort "Rechts:" ausgegeben und nachfolgend werden nebeneinander genau 4 Attribute ausgegeben. Falls "$i" den Wert "4" hat, wird das Wort "Links:" ausgegeben. Im Anschluss kommen wieder 4 Attribute. Falls "$i" geteilt durch 4 keinen Rest hat, wird ein Zeilenumbruch erzwungen.
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  3. #3
    Neu an Board
    Registriert seit
    02.01.2009
    Beiträge
    20
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Hallo Wats,

    das sieht ja fast perfekt aus Danke!

    Kannst du mir noch den Tip geben, wie ich die Überschriften über die Attribute bekomme? Dann würde es nämlich vom Platz her reichen und bei der "add" aus Platzgründen nicht zum Zeilenumbruch führen. (Siehe: add-Umbruch.jpg)

    Noch ein Gedanke:
    Es gibt, je nach Brillenglas natürlich noch weitere Attribute, wie z.B. Tönungen, Entspiegelungen, Kunstoff oder Mineralgläser, Gleitsichtgläser oder Einstärkengläser etc.
    Einen automatischen Umbruch machen nur Firefox, IE und Opera.
    Safarie, Chrome und Iron kommen damit nicht klar und bringen das Ergebnis vom Bild: "weitere_Attribute_Iron.jpg"
    Kann man den Code derart erweitern, dass: "Falls "$i" größer als 10 ist, dann geht es "normal", also nach jedem Attribut mit Zeilenumbruch weiter" ?

    Nochmals Danke

    Victoria
    Angehängte Grafiken

  4. #4
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    So, dann wollen wir doch mal sehen...

    PHP-Code:
    <?php if( !defined'_VALID_MOS' ) && !defined'_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); 
    $i=0;
    foreach(
    $attributes as $attribute) {         
       
    $i++; 
       if(
    $i == 1){
        echo 
    '<div style="margin:3px;">Rechts:</div>';
       }
       
    ?>
            <div class="vmAttribChildDetail" style="float: left;text-align:right;margin:3px;">
                <label for="<?php echo $attribute['titlevar'?>_field"><?php echo $attribute['title'?></label>:
            </div>
            <div class="vmAttribChildDetail" style="float:left;margin:3px;">
                <select class="inputboxattrib" id="<?php echo $attribute['titlevar'?>_field" name="<?php echo $attribute['titlevar'].$attribute['product_id'?>">
                <?php foreach ( $attribute['options_list'] as $options_item ) : ?>
                    <?php if( isset( $options_item['display_price']) ) : ?>
                    <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?> (<?php echo $options_item['sign'].$options_item['display_price'?>)</option>
                    <?php else : ?>
                    <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?></option>
                    <?php endif; ?>
                <?php endforeach; ?>
                </select>
            </div>    
        
    <?php 
        
    if(($i == 0) OR ($i>10)){
            echo 
    '<br style="clear:both"/>';
        }
        if(
    $i == 5){
            echo 
    '<div style="margin:3px;">Links:</div>';
        }

    ?>
    Hoffe passt so Der Umbruch kommt jetzt nach Genau 5 Attributen (so wie es in deiner angehängten Grafik sein sollte, aber nicht ist) und ab dem 11. Attribut nach jedem ein Umbruch.

    Bedenke allerdings, dass er jetzt für JEDES Produkt IMMER die Schriftzüge "Rechts:" und "Links:" schreibt und nach dem 5. Attribut umbricht, nach dem 10. Attribut umbricht und ab dem 11. nach jedem einen Umbruch durchführt. D.h. solltest du dich entschließen (nur beispielhaft zu sehen) in dein Sortiment Brillenetuis aufnehmen und diesen 3 Attribute geben, dann werden diese auch nebeneinander angezeigt und es wird auch die Überschrift "Rechts:" darüber stehen.
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  5. #5
    Gehört zum Inventar Avatar von j!-n
    Registriert seit
    26.07.2007
    Ort
    EA / HH / B
    Beiträge
    5.846
    Bedankte sich
    258
    Erhielt 1.229 Danksagungen
    in 1.155 Beiträgen

    Standard

    Hey wats, laß Dir etwas vom Budget des Kunden abgeben .
    Joomla kaputt? Gehackt? Migration mißlungen? Datensalat?
    www.joomla-notdienst.de - Soforthilfe & Webentwicklung
    Einsteiger- FAQ - bitte lesen!

  6. #6
    Neu an Board
    Registriert seit
    02.01.2009
    Beiträge
    20
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Hi j!-n

    Zitat Zitat von j!-n Beitrag anzeigen
    Hey wats, laß Dir etwas vom Budget des Kunden abgeben .
    Das brauchst du Wats gar nicht in den Mund legen, das wollte ich ihm gerade anbieten!

  7. #7
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    Ach Quark
    So kleine Umprogrammierungen dauern ja nur paar Minütchen und versüßen den Arbeitstag, bzw. schaffen ein wenig Abwechslung. Ich schau hier immer mal rein, wenn ich nen dicken Kopf hab und freu mich, wenn ich helfen kann
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  8. Erhielt Danksagungen von:


  9. #8
    Neu an Board
    Registriert seit
    02.01.2009
    Beiträge
    20
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Hallo Wats,

    j!-n hats ja schon angedeutet, ich, bzw mein Cheff werden diesbezüglich über PN Kontakt zu dir aufnehmen.

    Im Bild: fast_perfekt.jpg siehst du, dass deine Lösung fast perfekt ist Hast du noch eine Lösung für das Problem mit der "PD" ?

    Victoria
    Angehängte Grafiken

  10. #9
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    Ganz offensichtlich scheint der Platz nicht auszureichen
    Man könnte allternativ die DropDown Listen unter die Bezeichnungen ziehen...also nicht
    Zylinder: DropDown
    sondern
    Zylinder
    DropDown


    Versuchs mal mit der abgeänderten Version hier, vielleicht gefällts ja.
    PHP-Code:
    <?php if( !defined'_VALID_MOS' ) && !defined'_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); 
    $i=0;
    foreach(
    $attributes as $attribute) {         
       
    $i++; 
       if(
    $i == 1){
        echo 
    '<div style="margin:3px;">Rechts:</div>';
       }
       if(
    $i<=10){
        
    $float '';
       }elseif(
    $i>10){
        
    $float 'float:left;';
       }
       
    ?>
        <div style="float:left;">
            <div class="vmAttribChildDetail" style="<?php echo $float?>margin:3px;">
                <label for="<?php echo $attribute['titlevar'?>_field"><?php echo $attribute['title'?></label>:
            </div>
            <div class="vmAttribChildDetail" style="<?php echo $float?>margin:3px;">
                <select class="inputboxattrib" id="<?php echo $attribute['titlevar'?>_field" name="<?php echo $attribute['titlevar'].$attribute['product_id'?>">
                <?php foreach ( $attribute['options_list'] as $options_item ) : ?>
                    <?php if( isset( $options_item['display_price']) ) : ?>
                    <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?> (<?php echo $options_item['sign'].$options_item['display_price'?>)</option>
                    <?php else : ?>
                    <option value="<?php echo $options_item['base_var'?>"><?php echo $options_item['base_value'?></option>
                    <?php endif; ?>
                <?php endforeach; ?>
                </select>
            </div>    
        </div>
    <?php 
        
    if(($i == 0) OR ($i>10)){
            echo 
    '<br style="clear:both"/>';
        }
        if(
    $i == 5){
            echo 
    '<div style="margin:3px;">Links:</div>';
        }

    ?>
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  11. Erhielt Danksagungen von:


  12. #10
    Neu an Board
    Registriert seit
    02.01.2009
    Beiträge
    20
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Perfekt

    Schau mal wats,................... ich bin begeistert!

    DANKE

    Victoria

    und mein Cheff will/wird sich auch noch bedanken.................
    Angehängte Grafiken

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein