Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen 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: new_products Bearbeiten. Product_info mit Dropdown div anzeigen

    backtecweg

    • Neu im Forum
    • Beiträge: 14
    Hallo liebe Community!

    Bei meinem Shop werden auf der Startseite neue Produkte angezeigt. Wenn diese ausgewählt werden, soll nicht eine neue Seite geladen werden, also die Product_info, sondern es soll ein Div-Container ausgefahren werden, welcher die Product Info beinhaltet.

    Ich bin derzeit so weit, dass ich ein Ajax java script eingebunden hab, was ein ein Div produziert welches Ausfahrbar ist. In dieses habe ich auch den entsprechenden code von der product_info_v1.html platziert.

    Dennoch habe ich paar Probleme und zwar, hab ich ja in die Foreach schleife, den dropdown div eingefügt und wenn ich bei einem artikel auf den ausfahr knopf drücke, fahren sich alle dropdowns aus von allen Artikeln. Das hab ich versucht mit dem hier zu lösen:

    Code: PHP  [Auswählen]
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>

    $(document).ready(function(e) {
            for (var i=0;i<=120;i++){
        $('#dropwdown[i]').on('click',function(){
           
                    $('.dropdownwrap[i]').slideToggle();
                   
            });
           
    })};

    </script>
     

    Dennoch funktioniert mit dem Code nichts mehr. Er sollte damit dem "Dropdown" immer eine Zahl zuweißen ,welche aufaddiert wird, damit jeder Artikel einen anderen Dropdown Wert hat. Also wenn jemand weiß, was da nicht korrekt ist bitte sagen :)

    Nächste Problem:
    Das ist allein für javascript geltend. Wenn in der new_products.html versuche dem div Container ebenfalls eine php schleife zuzweisen damit er den div aufaddiert, stelle ich fest, dass ich die datei nicht in php unbennnen kann, weil er dann auch nichts mehr anzeigt.

    Ich hoffe jemand kann helfen und versteht einigermaßen das Problem. Ansonsten versuche ich es nochmal detalierter aufzuzählen

    Bedanke mich für eure Hilfe im Voraus

    Grüße

    Christian

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

    web0null

    • Experte
    • Beiträge: 1.998
    Also dein Code ist schon mal (verzeih den Ausdruck) Blödsinn, abgesehen davon sehe ich da nichts von Ajax.
    Um dir das jetzt zu erklären müsste ich mit dir einen Grundkurs machen, für das habe ich aber keine Zeit bzw. Lust, denn das solltest du dir schon mal selbst aneignen, Google hilft!

    Denn ohne die nötigen "Grundkenntnisse" in Javascript, ...Ajax ...jQuery-Framework, wirst du wenn du es selbst machen willst, nicht sehr weit kommen.

    Genauso solltest du dir auch genügend "Grundkenntnisse" in SQL, PHP, HTML, CSS, Smarty aneignen, sonst wird das nichts.

    Nicht negativ verstehen.

    Kleiner Hinweis,
    Code: Javascript  [Auswählen]
    '#dropwdown[i]'

    ist natürlich falsch, wenn du das i richtig auswerten willst musst du wenn dann
    Code: Javascript  [Auswählen]
    '#dropwdown'+i
    schreiben.

    Ist auch nur ganz grob erklärt, da gibt es natürlich noch mehr auf was du aufpassen musst, z.B. bei der korrekten ID-Bezeichnung, die stimmt nämlich auch nicht.

    ... und diese Vorgehensweise ist grundsätzlich nicht die beste Wahl, jQuery bietet da viel bessere Möglichkeiten

    Gruß web0null

    backtecweg

    • Neu im Forum
    • Beiträge: 14
    Hallo erstmal,

    den Code hatte ich aus einem Jquery tutorial. Nur die For Schleife und die ID hatte ich versucht zu zuweisen.

    Wenig Grundkenntnisse in Javascript, ajax und jquery-Framework habe ich schon. Die möchte ich auch mir auch aneignen. Dennoch glaube ich nicht, dass ich mehrere Scripte oder Sprachen brauche, um das zu lösen?

    es soll ja nur ein Button gedrückt werden und ein Div ausgefahren werden mit dem Inhalt der eigentlich auf der nächsten Seite wäre. Also er zeigt das ja auch alles bei mir an, die Produktinfo, und fährt auch die Div´s aus, wenn ich die for schleife rausnehme. Nur das ding ist er fährt alle aus.

    Du meintest es wäre Blödsinn den Code zu benutzen, deshalb werde ich jetzt nach einem anderen Suchen, dennoch wäre es hilfreich wenn du mir mitteilen könntest, ob ich einen Code brauche der eine ID aufsteigend benennt. Also nehmen wir an <div id="dropdown(1,2,3)" etc. oder wie regelt man das sonst? weil in der html Datei kann ich schlecht php einbinden.

    Und wenn ich sie umbenenne, dann weiß ich leider auch nicht, ob ich die Änderung in der Datenbank oder in irgendeiner anderen php Datei angeben muss.

    Bedanke ich mich im Voraus

    Grüße

    Christian

    backtecweg

    • Neu im Forum
    • Beiträge: 14
    EDIT/

    alles klar. Smarty spielt also eine sehr wichtige Rolle bei dem modified Shop. Das heißt ich brauch die Datei nicht in php unbennen, sondern kann mittels Smarty eine Schleife machen, die den Container unbennent.

    Marcel G.

    • Fördermitglied
    • Beiträge: 398
    Mal davon abgesehen das auch ich da ganz anders an dein Problem ran gehen würde (die Erklärung aber zu lang wäre), frage ich mich warum du das haben möchtest. Mich als Kunde würde das stören.
    Wenn da ein Produkt ist was ich interessiert möchte ich nach einem klick alle Informationen sehen können, mit der Möglichkeit das Produkt auch gleich zu kaufen. Oder packst du all das in dein div?

    backtecweg

    • Neu im Forum
    • Beiträge: 14
    meine New_products_default.html

    Code: PHP  [Auswählen]
      {php}
    global $smarty;
    $this->assign('box_MOREINFO',$smarty->_tpl_vars['box_MOREINFO']);

    {/php}

    <div class="dropdownwrap">

    {$box_MOREINFO}

    </div>

    <p><a id="dropdown{$var++}" href="#" title="Click This Button">X</a></p>

     

    Jetzt zählt er die Divs hoch und zeigt mir auch den Inhalt von Moreinfo an, wo ich die ganzen Produktinformationen reingesteckt hab.

    Nur Javascript kriege ich halt nicht auf die Reihe

    Code: PHP  [Auswählen]

    <script>

    $(document).ready(function(e) {
             for(var i = 0; i<10; i++) {
        $("#dropdown" + i ).on("click",function(){
           
                    $(".dropdownwrap").slideToggle();
                    }
            });
           
    });

    </script>
     

    Ja man sieht alle Informationen nach einem Klick. Sonst würde man ja üblich auf eine nächste seite gelangen, ich wollte aber das man halt alles in dem Div an Produktinformationen sieht, und auch den sofort in Warenkorb legen kann. Wir werden halt nicht mehr als 10 Artikel im Shop haben.

    Ich wäre für eure Hilfe sehr Dankbar. Auch wenn es nur kleine Tipps sind.

    Grüße

    Christian

    web0null

    • Experte
    • Beiträge: 1.998
    Ich gebe dir mal eine Ansatz.
    Um irgendwelche künstlichen Schleifen zu umgehen, holst du dir die PRODUCTS_ID rein.
    Dann in etwa so
    Code: PHP  [Auswählen]
    {foreach name=aussen item=module_data from=$module_content}

    ....

    <div id="dropdown_info_{$module_data.PRODUCTS_ID}">
      {$box_MOREINFO}
    </div>
    <p>
      <a id="dropdown_btn_{$module_data.PRODUCTS_ID}" href="#" title="Click This Button">X</a>
    </p>

    ....

    {/foreach}
     

    Code: Javascript  [Auswählen]
    $(document).ready(function(){
      $('[id^="dropdown_btn_"]').on('click', function(){
        var id = parseInt($(this).prop('id').replace(/[^0-9]/gi,'')); // ab jQuery 1.6 sonst .attr()
        $('#dropdown_info_' + id).slideToggle();
      }
    });
     

    Die box_MOREINFO muss natürlich auch noch den entsprechenden Inhalt zum jeweiligen Produkt enthalten.

    Besser wäre es halt, über die ID (die dir ja jetzt zu Verfügung steht) den Content mit Ajax zu holen, aber das wäre dann zu viel des guten ;-)

    Gruß 

    backtecweg

    • Neu im Forum
    • Beiträge: 14
    Ich danke dir vielmals für deinen Ansatz. Ich werde mich damit jetzt auseinander setzen. Es sieht auf jeden fall sehr gut aus :). Ich habe leider nicht die Erfahrung, um solche, meiner Meinung nach, komplexen javascript schleifen aus dem Handgelenk zu schreiben :(. Aber ich werde mich demnächst mehr mit den Sprachen auseinander setzen.

    In der box_Moreinfo, habe ich auch den code von der product_info.

    Den Content mit ajax zu holen, ist wohl derzeit für mich nicht möglich^^. Aber ich bedanke mich für deinen Tipp.

    Viele Grüße

    Christian

    backtecweg

    • Neu im Forum
    • Beiträge: 14
    Hallo,

    ich hab mich in letzter Zeit nochmal mit dem Thema beschäftigt und festgestellt, dass der Javascript Code leider nicht funktioniert. Ich hatte den auch im Header eingebunden und es hat sich leider nichts getan. Um nochmal zu testen hatte ich mein altes toggle script eingebunden, das dann funktionierte aber Fehlerhaft wie zuvor auch (es ging nur um den Test, ob Javascript an der Stelle funktioniert).

    der "Php" code funktioniert einwandfrei, also erzählt auch die Product ID hoch.

    WEb0null könntest du nochmal über den Javascript drüber schauen bitte? Evtl. fällt dir ein warum er bei mir nicht funktioniert. Also es wird nichts ausgefahren.

    Ich hatte jetzt eine box_Moreinfo erstellt, der zeigt mir auch den Inhalt an, auch wenn ich den nicht im index.html eingebunden habe, mithilfe von

    {php}
    global $smarty;
    $this->assign('box_MOREINFO',$smarty->_tpl_vars['box_MOREINFO']);

    {/php}

    Dennoch kann ich nicht einfach, die product_info_v1.html in die box_moreinfo.html kopieren, da er dann den Preis und etc. nicht anzeigt. Ich hab auch schon versucht aus {$PRODUCTS_NAME}, {$module_data.PRODUCTS_NAME} zu machen, das hilft leider auch nicht. Gibt es da evtl. ein Tutorial für?
    2 Antworten
    2103 Aufrufe
    29. Oktober 2013, 05:58:33 von Joerg74
    4 Antworten
    2189 Aufrufe
    16. August 2010, 20:02:51 von Tomcraft
    5 Antworten
    3063 Aufrufe
    21. Mai 2013, 19:40:05 von emin
    2 Antworten
    2560 Aufrufe
    19. April 2013, 00:49:54 von blitzfreak
               
    anything