Frage zur Developer-Seite

Thema wurde von BigRib, 1. Mai 2020 erstellt.

  1. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    256
    Danke erhalten:
    49
    Danke vergeben:
    29
  2. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.693
    Danke vergeben:
    903
    Hallo,

    im Anhang die Beispiele. Der Verweis in der Doku ist so Quatsch, weil man dazu Zugriff auf unser Git-Repository bräuchte. Wir arbeiten aktuell an einer überarbeiteten Dokumentation.
     

    Anhänge:

  3. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    256
    Danke erhalten:
    49
    Danke vergeben:
    29
    Hallo Moritz,

    vielen Dank :=)

    Hast Du mir vielleicht einen kleinen Tipp. Aktuell habe ich mir die Seiten die ich selber erstellt habe als PHP/HTML Mix Script über den Conent Manager eingebaut. Ich würde sie aber gern "richtig" einpflegen, so dass ich auch von den Softwareinternen Funktionen und Klassen Gebrauch machen kann.

    Gibt es da vielleicht schon ein vorgefertigten Controller o.ä. was mir das ermöglicht? Im Prinzip brauche ich einen, der schon die Grundfunktionen enthalten hat und ich durch Bearbeitung oder hinzufügen von eigenen Funktionen den Content-Bereich fülle, sprich Header, Footer, Menü-Links usw. sind schon vorhanden.

    Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.

    Einen funktionierenden Kontroller der eine Template Datei aufruft und rendert habe ich bereits hinbekommen, nur hab ich noch nicht herausgefunden, wie ich den Shop drumherum einbinde :)
     
  4. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.757
    Danke erhalten:
    1.370
    Danke vergeben:
    305
    @BigRib

    Hier ein kleiner Controler der im Ordner /GXModules/MeineFirma/MeinModul/Admin/ abgelegt werden kann.
    Aufgerufen kann der dann über /admin/admin.php?do=Mein


    Aber wenn du nur eine kleine Konfigurationseite mit ein paar Felder brauchst, dann musst du keinen ganzen Controller selbst bauen, sondern kannst eine GXModule.json Datei benutzen um eine komplette Seite im Admin zu bauen ohne nur eine Zeile PHP Code schreiben zu müssen.

    Sie dazu auch (Link nur für registrierte Nutzer sichtbar.)

    PHP:
    <?php


    MainFactory
    ::load_class('AdminHttpViewController');

    class 
    MeinController extends AdminHttpViewController
    {

        public function 
    actionDefault()
        {
          
            
    $template $this->getTemplateFile('meine.html');
            
    $title    = new NonEmptyStringType("Mein Title");
          
            
    /* Tabs */
            
    $contentNavigation MainFactory::create('ContentNavigationCollection', []);
          
          
            
    /* Data that for the HTML file */
            
    $data MainFactory::create('KeyValueCollection'$config);
          
            return 
    MainFactory::create('AdminLayoutHttpControllerResponse',
                                
    $title,
                                
    $template,
                                
    $data,
                                
    $this->_getAssets(),
                                
    $contentNavigation);
        
        }
      
      
        
    /**
         * @return \AssetCollection|bool
         */
        
    protected function _getAssets()
        {
            
    $assets MainFactory::create('AssetCollection');
            
    $assets->add(MainFactory::create('Asset''meine.lang.inc.php'));
            
    $assets->add(MainFactory::create('Asset''meine.css'));
            
    $assets->add(MainFactory::create('Asset''meine.js'));
          
            return 
    $assets;
        }


        
    /* admin.php?do=Mein/Meine */
      
        
    public function actionMeine()
        {
            return 
    MainFactory::create('RedirectHttpControllerResponse',
                                       
    xtc_href_link('admin.php''do=Mein));
        }
    }
     
  5. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    256
    Danke erhalten:
    49
    Danke vergeben:
    29
    @Till (Gambio)

    Danke für Deine Antwort. Schau mal bitte auf meine Seite. Da siehst du beim oberen Kategorien_Menu eine zweite Reihe mit den sogenannten "Disc Golf Quicklinks". Dort kann man auf einen Hersteller klicken und landet auf einer Seite mit allen Scheiben zu dem jeweiligen Hersteller nach Kategorie sortiert. Diese Seite ist als Mixed-Script im Content Manager eingehangen und die würde ich gern "ordentlich" einpflegen, so dass ich auf alle Funktionen und auch auf Jquery usw. zugreifen zu können.

    https://thrownatur-discgolf.de/de/
     
  6. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.757
    Danke erhalten:
    1.370
    Danke vergeben:
    305
    @BigRib Ah, du willst eine Seite im Shop haben. Ok, das geht fast genauso.

    Hier musst du statt AdminHttpViewController > HttpViewController erben.

    Siehe dir dazu z.B. den /GXModules/Gambio/SunnyCash/Shop/Classes/Controllers/SunnyCashController.inc.php an.

    Das Sample von Moritz ist da schon eine gute Grundlage:

    PHP:
    <?php


    MainFactory
    ::load_class('HttpViewController');

    class 
    MeinController extends HttpViewController
    {

    /**
    * Initialize Controller
    */
    public function init()
    {
        
    $this->templatePath DIR_FS_CATALOG '/GXModules/MeineFirma/MeinModul/Shop/html/';
    }

        public function 
    actionDefault()
        {

          
    $contentView MainFactory::create_object('ContentView');
          
            
    $contentView->set_('meineDaten'$data);
        
          
    $this->templateName 'meine.html';

    $contentView->set_template_dir($this->templatePath);
    $contentView->set_content_template($this->templateName);
    $contentView->set_flat_assigns(true);
    $contentView->set_caching_enabled(false);
            
    $p_mainContentHtml =  $contentView->get_html();
          
          
            
    $GLOBALS['breadcrumb']->add('meinbreadcrumb',
                                        
    xtc_href_link('shop.php',
                                                      
    xtc_get_all_get_params(['do']) . '&do=Mein',
                                                      
    'SSL'));
          
            
    $layoutContentControl MainFactory::create_object('LayoutContentControl');
            
    $layoutContentControl->set_data('GET'$this->_getQueryParametersCollection()->getArray());
            
    $layoutContentControl->set_data('POST'$this->_getPostDataCollection()->getArray());
            
    $layoutContentControl->set_('coo_breadcrumb'$GLOBALS['breadcrumb']);
            
    $layoutContentControl->set_('coo_product'$GLOBALS['product']);
            
    $layoutContentControl->set_('coo_xtc_price'$GLOBALS['xtPrice']);
            
    $layoutContentControl->set_('c_path'$GLOBALS['cPath']);
            
    $layoutContentControl->set_('main_content'$p_mainContentHtml);
            
    $layoutContentControl->set_('request_type'$GLOBALS['request_type']);
            
    $layoutContentControl->proceed();
          
            return 
    MainFactory::create('HttpControllerResponse'$layoutContentControl->get_response());
          
        }


        
    /* shop.php?do=Mein/Meine */

        
    public function actionMeine()
        {
            return 
    MainFactory::create('RedirectHttpControllerResponse',
                                       
    xtc_href_link('admin.php''do=Mein));
        }
    }
     
  7. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    256
    Danke erhalten:
    49
    Danke vergeben:
    29
    #7 BigRib, 2. Mai 2020
    Zuletzt bearbeitet: 2. Mai 2020
    @Till (Gambio)

    Jup genau, ich hatte mich auch bei dem SunnyCashController und der Developer Doku bedient bei meinem Versuch, nur war es so, das ich dann ausschließlich mein Template gesehen habe und das "Grundlayout" vom Shop hat gefehlt.

    Ich teste mal das von dir hier eingefügte :D Vielen lieben Dank.

    //Edit

    Funktioniert :D Jipie! Danke Danke Danke an Euch beide!
     
  8. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.757
    Danke erhalten:
    1.370
    Danke vergeben:
    305
    Der Code hier sorgt dafür, dass der Header, Footer usw. vom Shop angezeigt werden:

     
  9. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    256
    Danke erhalten:
    49
    Danke vergeben:
    29
    Ok, nun weiß ich das auch :) Eine Frage habe ich noch, mal wieder das leidige Thema mit dem Javascript. Irgendwie bekomme ich es manchmal eingebunden, dann wieder nicht. Ich habe versucht mich an diese Anleitung zu halten (die sich im Verlauf dann wiederholt und mit CSS gemixt ist)

    https://developers.gambio.de/tutorials.html?v=4.1.1.0_beta2&p=anlegen-neuer-javascript-inhalte

    Ich habe mir eine einfach JS Datei angelegt mit einem Alert. Die Datei liegt in:

    Code:
    /GXModules/Thrownatur/Standard/Shop/Themes/All/Javascript/custom/Global/my_script.js
    
    .dev-environment ist aktiv, somit müsste er ja eine normal js laden, ohne das sie minifyed ist.

    Lege ich die gleiche JS in den Ordner

    Code:
    /themes/Thrownatur/javascripts/custom
    
    dann wird sie eingebunden.

    Habt ihr da noch eine Idee? Cache habe ich von unten nach oben gelöscht und der Browsercache ist auch leer.
     
  10. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.757
    Danke erhalten:
    1.370
    Danke vergeben:
    305
    @BigRib Der Ordner /custom/ ist zuviel, der muss weg:

     
  11. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    256
    Danke erhalten:
    49
    Danke vergeben:
    29
    Alles klar funktioniert :) Dann müsste die Anleitung angepasst werden. Dort steht in allen Beispielen /custom/ und die card_handler.js habe ich im /system/ Ordner zum überladen und das geht auch, jedoch erst, als ich sie als card_handler.min.js angelegt habe... vielelicht aber auch Zufall :)

    Zusammengefasst:

    Wenn eine JS im GXModules/...../...../..... liegt, wird sie direkt von dort eingebunden und muss nicht minified sein. Für Eigene .js direkt in den Javascript Ordner, wenn eine andere überladen werden soll, dann muss sie in den /system/ Order.

    Wenn eine JS im Theme Order ablegt wird, dann muss eine eigene in den /Javascript/custom/ und zum überladen in den /Javascript/system/. Beim Cache löschen im Backend, wird die JS dann in den /public/ ordner kopiert und dabei minfied.

    Korrekt?
     
  12. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.757
    Danke erhalten:
    1.370
    Danke vergeben:
    305
    @BigRib
    Korrekt!
     
  13. pearl_ch

    pearl_ch Mitglied

    Registriert seit:
    20. Dezember 2019
    Beiträge:
    10
    Danke erhalten:
    5
    Danke vergeben:
    1
    Hi, sorry to get into this question but i am new with gambio system. I have created new php page with html content and displayed it, but i want to delete or not show "<aside id="left">" . How can i do that? thanks