[Ajax] Cms Programmierung

Dieses Thema im Forum "Webentwicklung" wurde erstellt von pleq, 5. Februar 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. Februar 2009
    Cms Programmierung

    Hej,

    bin gerade dabei Ajax zu lernen bzw. anzuwenden (lörning by doin).

    Nun habe ich natürlich mein jetziges CMS als Grundlage genommen. Der Aufbau ist momentan wie folgt:

    index.php (index.tpl wird geladen, funktionen werden geladen, autoload Klasse usw.)
    index.tpl (content wird includiert)

    Das ganze funktioniert so auch einwandfrei, aber jetzt wo ich mit Ajax versuche rumzuspielen und versuche, meine Inhalte per Ajax einzulesen, bekomme ich immer eine Fehlermeldung dass meine content Dateien nicht auf Funktionen aus der Index zugreifen können.

    Woran liegt das?

    Muss ich in jeder Content-Datei nun eine Art "Startup" Datei includieren die mir alles immer lädt?

    Mfg
     
  2. 5. Februar 2009
    Entweder das oder du arbeitest mit nem Parameter, z.B. index.php?page=Seite2 und includierst in der index.php immer das richtige
     
  3. 8. Februar 2009
    AW: Cms Programmierung

    also ich verstehe dass nicht.

    in meiner profile.tpl habe ich folgenden code:

    Code:
    <script type="text/javascript">
    makeRequest("content/user/ajax/gbook.php", "GET");
    </script>
    

    makeRequest macht folgendes:

    Code:
    function makeRequest(loc, method){
     
     request = createRequest();
     request.onreadystatechange = complete;
     request.open(method, loc, true);
     request.send(null); 
     
    }
    function complete(){
     switch(request.readyState){
     case 0:
     case 1:
     case 2:
     case 3: debug(request.readyState); return;
     case 4: var out = request.responseText; break;
     }
     var output = document.getElementById("gbook_content");
     output.innerHTML = out;
    }
    
    function createRequest(){
     try{
     var request = new XMLHttpRequest();
     }catch(ex){
     try{
     var request = new ActiveXObject("MSXML2.XMLHTTP");
     }catch(ex){
     var request = new ActiveXObject("Microsoft.XMLHTTP");
     }
     }
     return request;
    }
    
    
    Das laden der Datei funktioniert einwandfrei! Allerdings habe ich dass Problem, dass ich mit Mod-Rewrite arbeite und in der von Ajax geladenen Datei nun meine Url nicht "vorhanden" ist.

    Es werden immer die Start-Variablen genommen weil er die URL nicht erkennt oder keine Ahnung.

    Sprich ich bin auf /de/user/profile/1/ aber er sagt mir trotzdem: keine Url angegeben also Standartwerte: /de/news/ ... dass verstehe ich nicht.

    Weiß jemand eine Lösung?

    Mfg
     
  4. 8. Februar 2009
    AW: Cms Programmierung

    dann schreib doch deine htaccess so um damit du beide varianten verwenden kannst, also
    http://deins.tld/mod/rewrite/ und http://deins.tld/?mod=rewrite (als beispiel)

    ich hab das so gelöst:
    Code:
    rewriteCond %{REQUEST_FILENAME} !-f
    rewriteCond %{REQUEST_FILENAME} !-d
    rewriteRule ^pub/([^/]*).*$ pub/index.php?page=$1&__rw=1&%{QUERY_STRING}
    pub ist in meinem fall der ordner für die öffentlichkeit und &__rw=1 sagt meinem script das es sich (warscheinlich) um nen modifizierten url handelt.

    aja und mit %{QUERY_STRING} ermögliche ich trotz modifizierten url noch parameter mit nem "?" anzuhängen (sollte ja klar sein).

    mod_rewrite schlägt hier nur an wenn die verlinkte ressource nicht vohanden ist

    //edit: natürlich musst du deine regeln dafür anpassen
     
  5. 8. Februar 2009
    AW: Cms Programmierung

    hmm, danke schonmal für die schnelle antwort, jedoch verstehe ich den sinn noch nicht ganz.

    wenn ich url`s in beiden varianten angeben kann, inwiefern wirkt sich das auf mein von ajax geladenes script aus?

    ich meine ob nun /de/user/profile/bla oder ob da nun index.php?m=iwas steht ... macht ads einen unterschied?
     
  6. 8. Februar 2009
    AW: Cms Programmierung

    im grunde nicht, ich denk ich hab dein posting a weng fehlinterpretiert...

    kann es vielleicht sein das du keinen absoluten verweis angibst?
    weil wenn du auf /de/user/profile/ bist, geht content/user/ajax/gbook.php von diesem ordner aus, also: /de/user/profile/content/user/ajax/gbook.php

    abhilfe schafft da ein absoluter verweis (sprich mit nem / = root anfangen),
    das base-element (<base href="/von/hier/aus/content/laden/" />) - wobei ich hier ned 100%ig weiß ob javascript das beachtet -, oder ein http-verweis (sprich http://deins.tld/von/hier/aus/)
     
  7. 8. Februar 2009
    AW: Cms Programmierung

    also base wird in meiner index.tpl (template datei) definiert als http://url-zum-cms.de/ !

    in der index includiere ich nun via _content.inc.php meine contents (abgelesen von der url welche ich splitte (mod rewrite)). ich habe es nun schon so abgeändert, dass meine ganzen dateien (z.b. startup dateien, function datei usw.) mit document root eingebunden werden, dass hat schon ein paar fehler via ajax include behoben.

    das mit dem absoluten verweis bezüglich des ajax modules habe ich nun gemacht! sprich: makeRequest("/....",...); !

    trotzdem gibt er mir als url wieder nur de/news/ aus ...
     
  8. 8. Februar 2009
    AW: Cms Programmierung

    is de/news dein fallback für 404er oder?

    magst du mal deine htaccess posten? ich bin mir fast sicher, dass deine regeln da was vermurksen
     
  9. 8. Februar 2009
    AW: Cms Programmierung

    naja nicht wirklich 404er ... sondern einfach wenn über meine htacces kein $_GET["cms"] kommt, es quasi leer ist, wird die "url" de/news erzeugt, welche ich dann wie immer explode ...

    mikase es ukase (wie man es auch immer schrteiben sollte)

    Code:
    RewriteEngine On
    Options +FollowSymlinks
    RewriteBase /
    RewriteRule ^[^\.]*[^/]$ /$0/ [R=301]
    RewriteRule ^(.*)/$ index.php?cms=$1 [L]
    
    wie ich damit umgehe siehste hier:

    PHP:
    function  url ()
        {    
            if(!isset(
    $_SESSION [ "321_lang" ]))  $_SESSION [ "321_lang" ] =  DEFAULT_LANG ;    
            if(!isset(
    $_GET [ "cms" ]))  $_GET [ "cms" ] =  $_SESSION [ "321_lang" ]. "/" . HOME ;
            
    $act  = (string)  $_GET [ "cms" ];
            
    $split  explode ( "/" , $act );
            return 
    $split ;
        }
     
  10. 8. Februar 2009
    AW: Cms Programmierung

    oha, das is a weng strange ^^

    du schmeißt praktisch jeden url auf deine index.php und wertest dann mit ewigen if|else's aus was damit passieren soll? das hab ich ja noch nie gesehen xD

    gibst du bilder [...] dann via readfile usw aus oder wie läuft das?
    du nimmst dem armen apachen ja das ganze filesystem ab (obwohl der sogar schneller wäre als php)

    existiert denn "content/user/ajax/gbook.php" wirklich oder schickst du die mit absicht in deine url-function (oder überprüfst du das anschließend noch)?

    sorry ich blick da ned ganz durch ^^
     
  11. 8. Februar 2009
    AW: Cms Programmierung

    haha ich wusste das sowas kommt^^ also das war mein erster gehversuch mit dem mod rewrite und es hat gefunzt

    naja in meiner index.tpl gebe ich per base die url zur index.php an. folglich kann ich bilder ganz normal in meinen templates einbinden mit <img src="images/..."> ...

    also "content/user/ajax/gbook.php" exisitert schon (ausgehend vom root) ... überprüft wird es iwo mit file exists weiß nur net wo.

    also wenn du mir bei der mod rewrite helfen könntest, sprich dass ich das apache filesys nutzen könnte ... immer her damit
     
  12. 8. Februar 2009
    AW: Cms Programmierung

    am besten du debuggst mal $_GET und schaust was dir da übergeben wurde
    -> wenn da nix brauchbares rauskommt schreib den gbook-url da mal selber rein, sprich
    PHP:
    function  url ()
    {
        
    $_GET [ 'url' ] =  '/content/user/ajax/gbook/' ;
        return 
    explode ( '/' $_GET [ 'url' ]);
    }
    und schau was dein script daraus macht

    ach und wegen mod_rewrite -> damit kannst mich jagen ^^
     
  13. 8. Februar 2009
    AW: Cms Programmierung

    jajaaa ... mod rewrite (darum war ich auch froh als es dass erste mal funktionierte^^)

    so b2t:

    habe mir einfach mal in der funktion ulr() $_GET["cms"] ausgeben lassen.

    Die funktion wird in meiner index.php aufgerufen -> de/user/profile/benutzername/1
    und außerdem auch in der per ajax eingelesenen gbook.php -> de/news

    das verwundert mich gerade aber sehr, denn ich habe echo $_GET["cms"] über die Bedingung geschrieben, in der de/news als default gesetzt wird?! :/
     
  14. 8. Februar 2009
    AW: Cms Programmierung

    oha

    dann läuft da irgendwas komplett falsch ^^

    poste doch mal deinen controller, oder lad den source irgendwo hoch wenn er zu lang is.
    das interessiert mich jetz =)
     
  15. 8. Februar 2009
    AW: Cms Programmierung

    Viel Spaß, aber ich möchte hier nicht fertiggemacht werden ^^

    Htacces:
    Nopaste - powered by project-mindstorm IT Services

    Index.php:
    Nopaste - powered by project-mindstorm IT Services

    _startup.inc.php:
    Nopaste - powered by project-mindstorm IT Services

    _functions.inc.php:
    Nopaste - powered by project-mindstorm IT Services

    _const.inc.php:
    Nopaste - powered by project-mindstorm IT Services

    index.tpl:
    Hier ist eigentlich nur Interessant wie der Content eingebunden wird:

    {include_php file="config/_content.inc.php"}

    _content.inc.php:
    Nopaste - powered by project-mindstorm IT Services


    Wo was gar nciht geht bitte ma bescheid sagen, muss ja schließlich auch noch lernen^^

    Danke schonma Murdoc
     
  16. 8. Februar 2009
    AW: Cms Programmierung

    /content/user/ajax/gbook.php lässt dein script durch, also das wandert garnicht an deine index.php

    wenn es dahin soll musst du deine zweite regel so anpassen:
    Code:
    rewriteCond %{REQUEST_FILENAME} !index.php
    RewriteRule ^(.*)$ index.php?cms=$1 [L]
    und jetz will ich ein "JA ES KLAPPT" hören! =)
     
  17. 8. Februar 2009
    AW: Cms Programmierung

    aber ich lade dieses "/content/user..." doch via ajax? dafür wird die index.php doch eh nichtr geladen oder doch?

    btw:

    zu früh gefreut es klappt immer noch nicht, einzige was sich geändert hat: die grafiken der index.tpl werden nicht mehr angezeigt


    Es tut mir so leid Murdoc^^

    Edit:

    axo vllt. sollte gesagt sein, dass das Gbook in einem Template geladen wird. Also das Profil wird noch ganz normal per include und dem dazugehörigen Template dargestellt und in dem Template kommt dann folgender Code:

    Code:
    <div id="gbook_content">
     Hier wird der Content neu geladen
     {literal}
     <script type="text/javascript">
     makeRequest("/content/user/ajax/gbook.php", "GET");
     </script>
     {/literal}
    </div>
    
     
  18. 8. Februar 2009
    AW: Cms Programmierung

    ich bin durcheinander :baby:

    aber ne kurze raucher+denkpause kam ich doch noch drauf

    wenn die datei /content/user/ajax/gbook.php existiert, wird die url doch garnicht umgeschrieben -> ergo $_GET['cms'] bleibt undefiniert

    ich bitte um applaus für diese erkenntnis. danke

    aja das mit der rewriteRule oben kannst vergessen
     
  19. 8. Februar 2009
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: Cms Programmierung

    Spoiler
    applaus1.gif
    {img-src: //www.gesundehunde.com/forum/images/smilies/applaus1.gif}

    und wie kann ich das hand haben?

    kann ich die url via js so manipulieren dass mein script läuft?

    weil ich brauche die id des benutzers für datenbank abfragen (logisch denke ich) ...
     
  20. 8. Februar 2009
    AW: Cms Programmierung

    inkludiere einfach alles was du brauchst in gbook.php ODER ruf die datei in deinem ajax-request so auf:
    Code:
    makeRequest('/index.php?cms=/content/user/ajax/gbook.php');
    keine ahnung ob das funktioniert
     
  21. 8. Februar 2009
    AW: Cms Programmierung

    das mit dem includieren was ich brauche mache ich ja bereits ... deswegen verstehe ich diese ganze ver**** sch**** ja nicht:

    PHP:
    // Gästebuch fürs Profil via Ajax includiert
        
        
    require_once( $_SERVER [ 'DOCUMENT_ROOT' ]. "/config/_startup.inc.php" );
        require_once(
    $_SERVER [ 'DOCUMENT_ROOT' ]. "/config/_globals.inc.php" );
    Aber ich bekomme keinen Zugriff auf meine Daten aus der URL

    Edit:

    Die Methode die du mir da noch mit dem anderen Request geschrieben hast funktioniert au net
     
  22. 8. Februar 2009
    AW: Cms Programmierung

    wo nix is kannst auch nix abfragen ^^
    wie gesagt $_GET['cms'] bleibt ja undefiniert
     
  23. 8. Februar 2009
    AW: Cms Programmierung

    Habe nun fast eine lÖsung:

    Code:
    makeRequest("/content/user/ajax/gbook.php?uid=$go['4']", "GET");
    
    wie kann ich in javascript dort eine php variable einfügen?

    normalerweise ruft man ja eine funktion auf, in der man diese mitübergibt, aber wie kann ich dass in einem solchen funktionsaufruf?

    $go["4"] ist quasi meine BenutzerID!
     
  24. 8. Februar 2009
    AW: Cms Programmierung

    wie wärs mit:
    Code:
    makeRequest("/content/user/ajax/gbook.php?uid={$go['4']}", "GET");
    
    bei deinem template @ smarty (natürlich vorher assign verwenden )

    -----
    oder in php selber mit:
    Code:
    makeRequest("/content/user/ajax/gbook.php?uid=<?php print $go['4']; ?>", "GET");
    
    -----
    und wenn du in ner funktion bist:
    Code:
    makeRequest("/content/user/ajax/gbook.php?uid=<?php global $go; print $go['4']; ?>", "GET");
    
     
  25. 8. Februar 2009
    AW: Cms Programmierung

    ah oke, danke musste noch bissel fummeln weil das javascript via {literal} tag eingebunden wird und wusste net wie ich da ne smarty variable reinbekomme! geht nun aber, ich danke dir vielmals!
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.