rechtstexte für onlineshop
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: Hook-Wünsche

    webald

    • modified Team
    • Beiträge: 2.795
    Hook-Wünsche
    am: 05. Juli 2018, 12:11:31
    Ich würde hier gerne mal die Hookwünsche für neue Versionen sammeln. Wenn möglich bitte konkrete Stelle und Begründung.

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

    karsta.de

    • Experte
    • Beiträge: 3.063
    Re: Hook-Wünsche
    Antwort #1 am: 05. Juli 2018, 12:56:16
    Schön dass man inzwischen in der shop_content.php einen Hookpoint hat, nur fehlt mir bisher diese Möglichkeit im Admin im Content-Manager, so das man an dieser Stelle zusätzliche Module nicht wirklich updatesicher umsetzen kann.

    admin/content_manager.php
    Hier wäre die Möglichkeit einer Erweiterung des $sql_data_lang_array nötig.

    admin/includes/modules/content_manager_pages.php
    Hier fehlt ein auto_include, um zusätzliche Erweiterungen anzuzeigen bzw. zu integrieren.

    --------------
    Des Weiteren hätte ich gerne auch noch ein auto_include in der admin/includes/modules/products_images.php, um die HTML-Tabelle um weitere Einträge (die ja sonst gut über admin/includes/extra/modules/add_db_fields integriebar sind) für Produktbilder updatesicher zu erweitern.

    BG kgd

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Hook-Wünsche
    Antwort #2 am: 05. Juli 2018, 15:02:07
    Ein genereller Hookpoint bevor das Smarty-template geholt wird, wäre doch zumindest im Frontend recht sinnvoll. Oftmals steht man vor dem Problem, dass man entweder die Hookpoints aus der header.php zu früh sind oder die Hookpoints in der application_bottom.php zu spät sind.

    Q

    • Fördermitglied
    • Beiträge: 1.493
    Re: Hook-Wünsche
    Antwort #3 am: 05. Juli 2018, 23:21:28
    Danke webald. Sehr gute Idee hier. Hätte sonst wohl mal eine "Wunschliste" im Bugtracker geschrieben  ;-)

    Für die zusätzlichen Datenfelder bei Artikeln gibt es ja schon einige auto_includes (Tutorial: Zusätzliche Datenfelder Artikel ab Shopversion 2.x.

    Ich habe damit mal etwas rumgespielt und dabei auch die Möglichkeit des Imports mal getestet (hardcoded). Daher mein Vorschlag für folgende auto_includes, soweit das überhaupt geht:

    ~\admin\includes\classes\import_stock.php

    jeweils am Ende bei
    Code: PHP  [Auswählen]
        function generate_map() {

            // lets define a standard fieldmapping array, with importable fields
            $file_layout = array (
              'p_model' => '', // products_model
    .....
              'p_shipping' => '' // product shipping_time
            );

     

    und

    Code: PHP  [Auswählen]
        function insertProduct(& $dataArray, $mode = 'insert',$touchCat = false) {

            //BOC strip potential slashes and type cast inputs
            $products_array = array ('products_model' => xtc_db_prepare_input($dataArray['p_model']));
           
            .......

            if ($this->FileSheme['p_sorting'] == 'Y')
                $products_array = array_merge($products_array, array ('products_sort' => (int)$dataArray['p_sorting']));
            //EOC strip potential slashes and type cast inputs

     

    Würde dann für Export auch Sinn machen, aber soweit war ich noch nicht.

    Q

    • Fördermitglied
    • Beiträge: 1.493
    Re: Hook-Wünsche
    Antwort #4 am: 05. Juli 2018, 23:44:42
    Achja. Buttons im Adminbereich bei den Bestellungen. Da wird ja gerade mit

    Code: Javascript  [Auswählen]
    <script>
    $(function(){
        $('.buttonname').prependTo('.table .flt-r');
    });
    </script>

    "getrickst":

    Evtl. hier:
    ~\admin\includes\modules\orders_listing.php

    Code: PHP  [Auswählen]
                      default :
                        if (isset($oInfo) && is_object($oInfo)) {
                          $heading[] = array ('text' => '<b>['.$oInfo->orders_id.']&nbsp;&nbsp;'.xtc_datetime_short($oInfo->date_purchased).'</b>');
                          $contents[] = array ('align' => 'center', 'text' => '<a class="button" target="_blank" href="'.xtc_href_link(FILENAME_ORDERS_PRINT, xtc_get_all_get_params(array ('oID')).'oID='.$oInfo->orders_id).'">'.BUTTON_PRINT.'</a>
                                                                                                                                                       <a class="button" href="'
    .xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$oInfo->orders_id.'&action=edit').'">'.BUTTON_EDIT.'</a>
                                                                               <a class="button" href="'
    .xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$oInfo->orders_id.'&action=delete').'">'.BUTTON_DELETE.'</a>
                                                                               <a class="button" href="'
    .xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$oInfo->orders_id.'&action=storno').'">'.BUTTON_REVERSE.'</a>');
       

    und hier:
    ~\admin\includes\modules\orders_info_blocks.php

    oben (ca. Zeile 20)
    Code: PHP  [Auswählen]
          <div class="div_box mrg5">
            <div class="clear" style="padding-bottom: 5px; display: inline-block; width: 100%;">
              <div class="flt-l" style="margin-left: 5px;">    
                <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array('action')));?>"><?php echo BUTTON_BACK; ?></a>
                <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS_EDIT, 'oID='.$oID.'&cID=' . $order->customer['ID']);?>"><?php echo BUTTON_EDIT ?></a>
                            <a class="button" target="_blank" href="<?php echo xtc_href_link(FILENAME_ORDERS_PRINT,'oID='.$oID);?>"><?php echo BUTTON_PRINT ?></a> 
     

    und unten (ca. Zeile 440)

    Code: PHP  [Auswählen]
            <!-- BOC BUTTONS BLOCK -->
            <table class="table" style="margin-bottom:10px;border: none !important;">
              <tr>
                <td>
                  <div class="flt-l">
                    <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS, 'page='.$_GET['page'].'&oID='.$oID); ?>"><?php echo BUTTON_BACK;?></a>
                  </div>
                  <div class="flt-r">
                    <?php
                    if (defined('MODULE_ORDER_MAIL_STEP_STATUS') && MODULE_ORDER_MAIL_STEP_STATUS == 'true') {
                      echo '<a class="button" href="'.xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$oID.'&action=send_order_mail&site=1').'">'.BUTTON_ORDER_MAIL_STEP.'</a>';
                    }
                    ?>
                    <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$oID.'&action=send&site=1'); ?>"><?php echo BUTTON_ORDER_CONFIRMATION; ?></a>
                    <?php
                      if (ACTIVATE_GIFT_SYSTEM == 'true') {
                      echo '<a class="button" href="'.xtc_href_link(FILENAME_GV_MAIL, xtc_get_all_get_params(array ('cID', 'action')).'cID='.$order->customer['ID']).'">'.BUTTON_SEND_COUPON.'</a>';
                    }
                    // invoice number and date
                    echo add_btn_ibillnr($order,$oID);
                    ?>
                    <a class="button" href="Javascript:void()" onclick="window.open('<?php echo xtc_href_link(FILENAME_PRINT_ORDER,'oID='.$oID); ?>', 'popup', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no, width=800, height=750')"><?php echo BUTTON_INVOICE; ?></a>
                    <a class="button" href="Javascript:void()" onclick="window.open('<?php echo xtc_href_link(FILENAME_PRINT_PACKINGSLIP,'oID='.$oID); ?>', 'popup', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no, width=800, height=750')"><?php echo BUTTON_PACKINGSLIP; ?></a>
                  </div>
                </td>
              </tr>
            </table>
            <!-- EOC BUTTONS BLOCK -->

    Die Frage ist jetzt nur, für jede Stelle eine eigene Datei, oder an alle drei stellen die gleiche Datei, wie z.B. includes/extra/modules/orders/orders_list_button/','php' einfügen!?!

    AGI

    • modified Team
    • Beiträge: 301
    • Geschlecht:
    Re: Hook-Wünsche
    Antwort #5 am: 06. Juli 2018, 08:32:55
    Guten Morgen,

    ich aktualisiere gerade einen sehr stark erweiterten Shop. Um alle Änderungen Updatesicher umsetzen zu können, werden mir in den nächsten tagen sicherlich einige Stellen einfallen.

    Bisher habe ich mir an diesen Stellen autoincludes integriert:
    (Shopversion 2.0.4)

    admin/content_manager.php Zeile 94
    unter
    Code: PHP  [Auswählen]
     $sql_data_array = array('content_group' => (int)$content_group,
    Code: PHP  [Auswählen]
    foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/content_manager/update_insert/','php') as $file) require ($file);
    um das $sql_data_array der generellen Daten erweitern zu können.

    admin/content_manager.php Zeile 175
    unter
    Code: PHP  [Auswählen]
     if (isset($content_new_group_index[$i][$languages[$l]['id']])) {
                $sql_data_array['content_group_index'] = (int)$content_new_group_index[$i][$languages[$l]['id']];
              }
    Code: PHP  [Auswählen]
    foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/content_manager/update_insert_languages/','php') as $file) require ($file);
    um das $sql_data_array der sprachabhängige Daten erweitern zu können.

    admin/includes/modules/content_manager_pages.php Zeile 282
    vor
    Code: PHP  [Auswählen]
          </table>
        </div>
    Code: PHP  [Auswählen]
    <?php foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/content_manager/pages_default_end/','php') as $file) require ($file); ?>
    um die Tabelle der Eingabefelder für generelle Daten erweitern zu können

    admin/includes/modules/content_manager_pages.php Zeile 448
    vor
    Code: PHP  [Auswählen]
            </table>          
            <?php
            echo ('</div>');
    Code: PHP  [Auswählen]
    <?php foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/content_manager/pages_languages_end/','php') as $file) require ($file); ?>
    um die Tabelle der Eingabefelder für sprachabhängige Daten erweitern zu können

    admin/manufacturers.php Zeile 38
    unter
    Code: PHP  [Auswählen]
    $sql_data_array = array('manufacturers_name' => $manufacturers_name);
    Code: PHP  [Auswählen]
    foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/manufacturers/update_insert/','php') as $file) require ($file);
    um das $sql_data_array der generellen Daten erweitern zu können.

    admin/manufacturers.php Zeile 89
    unter
    Code: PHP  [Auswählen]
                                      'manufacturers_meta_keywords' => xtc_db_prepare_input($manufacturers_meta_keywords_array[$language_id])                    
                                      );
    Code: PHP  [Auswählen]
    foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/manufacturers/update_insert_languages/','php') as $file) require ($file);
    um das $sql_data_array sprachabhängigen Daten erweitern zu können.

    admin/manufacturers.php Zeile 203
    vor
    Code: PHP  [Auswählen]
                  </table>
                  <div style="width:100%; height: 20px;"></div>

                  <!-- BOF manufacturer description block //-->
    Code: PHP  [Auswählen]
    <?php foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/manufacturers/body_default/','php') as $file) require ($file); ?>
    um die Tabelle der Eingabefelder für generelle Daten erweitern zu können

    admin/manufacturers.php Zeile 243
    vor
    Code: PHP  [Auswählen]
                    </table>
                    <?php
                    echo ('</div>');
                  } ?>
                  <!-- EOF manufacturer description block //-->
    Code: PHP  [Auswählen]
    <?php foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/manufacturers/body_languages/','php') as $file) require ($file); ?>
    um die Tabelle der Eingabefelder für sprachabhängige Daten erweitern zu können

    Für die autoinludes in der manufacturers.php, muss aber auch die Datenbankabfrage für den Datenbezug geändert werden auf
    $manufact_query = xtc_db_query("SELECT * FROM " . TABLE_MANUFACTURERS . " ...
    da man sonst nicht an die eigenen Daten kommt.

    Weitere autoincludes werden in den Produkt-Attribut-Dateien erfolgen, vermutlich an ähnlichen Stellen wie in der Herstellerverwaltung.

    Generell finde ich die jquery-Verschieberei der eingefügten Inhalte in Produkt und Kategorie-Dateien für ungünstig,
    auch weil die einzelnen Bereiche, in die verschoben werden könnte, nicht durch IDs oder ähnliches eindeutig zu identifizieren sind. So muss man immer "hinter das dritte Eltern-Div des input-Feldes X verschieben" oder vor die Buttons... Mit zunehmenden eingefügten Inhalten wird das nicht leichter.
    Ein autoinclude innerhalb der generellen Produkt- und Kategoriedaten, sowie eines innerhalb der Sprachen wären super.

    Viele Grüße
    Andreas

    DieterW

    • Mitglied
    • Beiträge: 140
    Re: Hook-Wünsche
    Antwort #6 am: 06. Juli 2018, 11:13:19
    Das SEO URL gedöns könnte zwei Hookpoints brauchen.

    1) Einmal, dass man neue Zeichen einbauen kann, wie z.B. in einem Shop musste ich &shy; einsetzen für die contentseite Datenschutzerklärung, dass die in der Infobox bei Bedarf umbricht. Datenschutz&shy;erklärung in der URL gibt Zeichenwirrwarr ....

    2) Einfügen von neuen SEO URL Mustern für eigene Konstitutionen.

    karsta.de

    • Experte
    • Beiträge: 3.063
    Re: Hook-Wünsche
    Antwort #7 am: 06. Juli 2018, 11:14:04
    admin/content_manager.php Zeile 94
    unter
    Code: PHP  [Auswählen]
     $sql_data_array = array('content_group' => (int)$content_group,
    Code: PHP  [Auswählen]
    foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/content_manager/update_insert/','php') as $file) require ($file);
    um das $sql_data_array der generellen Daten erweitern zu können.

    Dein Vorschlag führt so aber zu einer weißen Seite.

    ---------

    Für die admin/includes/modules/content_manager_pages.php
    Habe ich mir drei Hooks angelegt:
    • pages_table_th (Überschrift in der Übersichtstabelle, Zeile 42)
    • pages_table_data (zur neuen Überschrift die Daten, Zeile 73)
    • pages_edit_data (zum Editieren des Contents, Zeile 380)

    BG kgd

    karsta.de

    • Experte
    • Beiträge: 3.063
    Re: Hook-Wünsche
    Antwort #8 am: 06. Juli 2018, 11:17:58
    @DieterW

    Du kannst doch eine neue includes\extra\seo_url_mod\seo_url_shopstat_DEINNAME.php anlegen und diese dann unter admin > Erweiterte Konfiguration > Meta-Tags/Suchmaschinen > URL Modul zuordnen. Das wäre auch updatesicher.

    Oder meinst du was anderes?

    BG kgd

    DieterW

    • Mitglied
    • Beiträge: 140
    Re: Hook-Wünsche
    Antwort #9 am: 06. Juli 2018, 11:46:04
    Wenn es das schon gibt, klasse. Die letzte Version die ich mir näher angesehen hatte war eine 2.0.1 und da hatte ich entschieden dass sich der Aufwand nicht lohnt meinen 1.06 Shop auf 2.x zu bringen, wenn noch so viele hookpoints fehlen.
    Ich bräuchte einige Wochen um auf 2.x umzusteigen .... wenn ich das mache, soll das Updatesicher werden.

    Ich habe jetzt mal in der neuen Version recherciert ... ja, das ist brauchbar. Ich müsste nur in meiner eigenen Version eine eigene /inc/seo_url_href_mask.php einbinden und das geht ja mit Überschreiben der Funktion seo_url_href_mask()

    Also gilt es ab dann nur aufzupassen ob sich die originalen Dateien ändern, damit man sicherheitsrelevante Sachen evtl. in die eigene Version übernimmt.

    BTW: Dickes Lob an das Team für die neue seo_url_href_mask.php! Keine gigantischen Arrays mehr. Da hat sich ja einiges massiv verbessert!  :thumbs:

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Hook-Wünsche
    Antwort #10 am: 06. Juli 2018, 13:15:24
    Ticket #1487 gehört auch dazu. Gerne auch Meinungen dazu.

    Timm

    • Fördermitglied
    • Beiträge: 6.335
    Re: Hook-Wünsche
    Antwort #11 am: 06. Juli 2018, 13:39:00
    Für den Merkzettel sollte es auch welche geben. Hatte dazu Ticket #1482 erstellt.

    Da geht es um die Dezimalzahlen, die man im Warenkorb abfangen kann, aber nicht im Merkzettel. Aber es wurde ja auch schon ausführlich diskutiert, den Merkzettel generell an den Warenkorb anzugleichen.

    Da hatte @noRiddle schon was zu geschrieben Merkzettel in 2.0.2.2.

    Gruß Timm

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Hook-Wünsche
    Antwort #12 am: 06. Juli 2018, 16:47:59
    Was mich bis jetzt wundert, dass niemand Hooks für customers oder orders benötigt oder für sinnvoll hält...

    Q

    • Fördermitglied
    • Beiträge: 1.493
    Re: Hook-Wünsche
    Antwort #13 am: 06. Juli 2018, 20:00:28
    #4 betrifft nicht die orders? Oder meinst du direkt die orders.php? Da sind so viele includes für weitere Dateien in modules und classes, dass wohl eher dort einige Hooks gebraucht werden.

    ** EDIT **
    In der orders.php gibts an der wichtigen stelle schon einen:

    Code: PHP  [Auswählen]
      case 'custom':
        foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/orders/orders_action/','php') as $file) require ($file);
        break;

    Und was danach folgt sind 52 Zeilen "Grundgerüst"  ;-)

    ** END EDIT**

    Aber ich hätte da auch noch einen....

    wieder in der orders_info_blocks.php

    Zwischen
    Code: PHP  [Auswählen]
            <!-- EOC PAYMENT BLOCK -->

            <!-- BOC ORDER BLOCK -->

    Da kann man dann ggf. noch Infos anzeigen lassen, die evtl. von eigenem Interesse sind. Ich habe das jetzt über den Hook

    Code: PHP  [Auswählen]
                      foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/orders/orders_info_payment/','php') as $file) require ($file);

    realisiert. Ist leider nicht so sauber, weil ich dann schon in den Tabellen-Tags vom Payment bin und quasi in der Datei erst die Tabellen alle "schließe" und die eigene (neue) "öffne" um die dann nach der auto_include in in der order_info_blocks.php wieder schließen zu lassen. Quasi von hinten durch die Brust ins Auge....

    DieterW

    • Mitglied
    • Beiträge: 140
    Re: Hook-Wünsche
    Antwort #14 am: 10. Juli 2018, 14:21:18
    Ja, orders ist definitiv sinnvoll. So kann man bei Artikeln die noch nicht lieferbar sind z.B. in rot, fett in der order mail eintragen, wann denn der Artikel voraussichtlich lieferbar wird.....

    Erspart 125000 Anrufe und E-Mails "Warum ist denn mein Artikel noch nicht versendet???"
    8 Antworten
    7173 Aufrufe
    08. Dezember 2008, 09:34:37 von Tomcraft
    1 Antworten
    4431 Aufrufe
    03. Januar 2011, 12:11:08 von Tomcraft