Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149

    [PHP] caricamento moduli

    ciao, sto cercando di rendere dinamico il più possibile un sito. ho slegato i dati dal template usando rainTPL e adesso ho caricato i moduli ma ho dei problemi.

    allora, in sostanza prendo la struttura del modulo da un file modulo.html
    codice:
    <div class='art-Block'>
        <div class='art-Block-tl'></div>
        <div class='art-Block-tr'></div>
        <div class='art-Block-bl'></div>
        <div class='art-Block-br'></div>
        <div class='art-Block-tc'></div>
        <div class='art-Block-bc'></div>
        <div class='art-Block-cl'></div>
        <div class='art-Block-cr'></div>
        <div class='art-Block-cc'></div>
        <div class='art-Block-body'>
            
    		<div class='art-BlockHeader'>
    			<div class='l'></div>
    			<div class='r'></div>
    			<div class='art-header-tag-icon'>
    				<div class='t'>[title]</div>
    			</div>
    		</div>      
            
            <div class='art-BlockContent'>
                <div class='art-BlockContent-body'>
                    <div>
                        
    
    [content]</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
    utilizzando questa funzione la unisco con i moduli caricati in un database e creo la stringa che poi và a prendere il posto del marker della sidebar (la sostituzione viene fatta da rainTPL)
    Codice PHP:
        function loadModules($cDb$db$position$pathToModuleStruct) {
            
    $ret "";
            
    $query $cDb->eseguiQuery($db,"SELECT id,title,rootPath,loadPage
                                              FROM modules
                                                  WHERE sidebarPos = '" 
    $position "'
                                                AND visible = 1"
    );

            while(
    $row mysql_fetch_array($query)) {
                
    //crea il vettore coi dati
                
    $vModule[] = array("id"            => $row['id'],
                                   
    "title"        => $row['title'],
                                   
    "rootPath"    => $row['rootPath'],
                                   
    "loadPage"    => $row['loadPage']);
            }
                
            foreach(
    $vModule as $mod) {
                
    $content getIncludeContents("modules/" $mod['rootPath'] . "/" $mod['loadPage']);
                
                if(
    $content == false) {
                    
    $ret .= moduleError("Errore caricamento modulo [b]" $mod['title'] . "[/b]");
                    continue;
                }
                
                
    $incMod includeModule($pathToModuleStruct$mod['title'], $content);
                
                if(
    $incMod == false) {
                    
    $ret .= moduleError("Errore caricamento modulo" $mod['title']);
                    continue;
                }
                    
                
    $ret .= $incMod;
            }
                
            return 
    $ret;
        } 
    la funzione includeModule unisce la struttura con il contenuto
    Codice PHP:
        function includeModule($pathModuleTemplate$title$content) {                        
            
    $mod getIncludeContents($pathModuleTemplate);
            if(
    $mod != false) {
                
    $mod str_replace("[title]",$title,$mod);
                
    $mod str_replace("[content]",$content,$mod);

                
    $mod str_replace("[if icon=true]","",$mod);
                
    $mod str_replace("[endif]","",$mod);

                return 
    $mod;
            }
            else {
                return 
    false;
            }
        } 
    la funzione getIncludeContents serve per caricare in una variabile il contenuto di una pagina
    Codice PHP:
        function getIncludeContents($filename) {
            if (
    is_file($filename)) {
                
    ob_start();
                include 
    $filename;
                
    $contents ob_get_contents();
                
    ob_end_clean();
                return 
    $contents;
            }
            return 
    false;
        } 
    in sostanza il mio problema è che una pagina in puro HTML la carica senza problemi...mentre se carico una pagina con contenuto di JS il JS non funziona...come faccio a caricare anche gli script javaScript?
    lo so che ho scritto un sacco di roba ma vabbè
    grazie ciao
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  2. #2
    non essendoci per php differenze tra html e javascript le cose sono due: o è sbagliato il javascript o è sbagliata la funzione che fai di include... che html ti sputa fuori alla fine della filiera?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non è che il Javascript ha dei richiami a funzioni esterne alla pagina che passi a quella roba lì?

  4. #4
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    la funzione che uso per includere i moduli è getIncludeContents che è mostrata nel primo post
    la pagina con il JS che tento di includere lanciata da sola funziona ed è qui
    http://iloware.net/prova è un semplicissimo orologio

    -- EDIT -----

    dopo aver risposto ho provato a copiare il javascript all'interno della pagina html invece di mettere il collegamento esterno al file .js ed in effetti funziona correttamente...
    ora prossimo passo è riuscire a dividere le pagine, piu che tutto per comodità
    poi ho un'altro problema ma aspetto di risolvere questo
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  5. #5
    Originariamente inviato da elilo
    la funzione che uso per includere i moduli è getIncludeContents che è mostrata nel primo post
    la pagina con il JS che tento di includere lanciata da sola funziona ed è qui
    http://iloware.net/prova è un semplicissimo orologio
    chissene frega della pagina da sola, la domanda era: ma che codice html genera il modulo alla fine della filiera? ovvero, quando nel tuo browser fai http://tuapagina.indirizzo e fai "vedi sorgente", che html c'è? c'è il javascript? è corretto in ogni suo aspetto? ci sono errori di sintassi che a video non si vedono ma che in html danno rogne a javascript? insomma, debugga
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    allora ho provato a caricare entrambe le pagine (cioè quella con il JS all'interno del codice html e quella con il codice js linkato)

    nel primo caso all'interno del modulo c'è l'intero codice js + lo span (che viene generato dal codice js) con l'ora

    nel secondo caso c'è una pagina di errore 404 tra i tag <script> che credo corrisponda al fatto che una volta che l'index del modulo è all'interno della pagina dove viene caricata non abbia più il percorso corretto per raggiungere il file .js che contiene lo script..
    comunque il contenuto del tag <script> è questo
    codice:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
    <head>
    <title>Oggetto non trovato!</title>
    <link rev="made" href="mailto:admin@localhost" />
    <style type="text/css"><![CDATA[/*><!--*/ 
        body { color: #000000; background-color: #FFFFFF; }
        a:link { color: #0000CC; }
        p, address {margin-left: 3em;}
        span {font-size: smaller;}
    /*]]>*/--></style>
    </head>
    
    <body>
    <h1>Oggetto non trovato!</h1>
    
    
    
    
    
        L'URL richiesto non esiste su questo server.
    
      
    
        Se hai scritto l'URL a mano, per favore controlla che
        non ci siano errori.
    
      
    
    </p>
    
    
    
    Se pensi che questo sia un errore del server, per favore contatta il 
    webmaster.
    
    </p>
    
    <h2>Error 404</h2>
    <address>
      localhost
    
      
      <span>09/25/10 15:37:08
    
    
      Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9</span>
    </address>
    </body>
    </html>
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  7. #7
    e il primo caso funziona? nel secondo, hai sicuramente un problema di linking del file...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    si il primo caso funziona...

    ma come faccio adesso a farlo funzionare e permettere di creare il modulo da inserire in qualsiasi modo, cioè del tipo che uno ha uno script js che funziona e basta fare copia e incolla nella cartella modules/ per farlo funzionare?

    cioè potrei mettere un marker che viene sostituito al momento dell'inclusione del modulo con il percorso relativo per raggiungere la cartella del modulo stesso e linkare il file...ma questo implica che il js non funzioni in modo a se stante

    io sto prendendo spunto molto da joomla come struttura (senza però rubarne il codice e modificarlo) ma un mdulo estratto da joomla funziona da solo?
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Originariamente inviato da elilo
    io sto prendendo spunto molto da joomla come struttura (senza però rubarne il codice e modificarlo) ma un mdulo estratto da joomla funziona da solo?
    direi che non funziona, dato che usa delle classi che derivano dal framework...

    però il js lo puoi mettere nel modulo stesso, in una cartella apposita magari, e da lì lo linki per l'output...
    fai un paio di prove, secondo me stai solo indicando il percorso errato verso il file

  10. #10
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    ma il js è già nella cartella del modulo...la pagina html lanciata da sola funziona...se la inserisco nel modulo non funziona più...credo sia perchè il path relativo diventa quello della pagina "madre" e quindi mancano 2 cartelle per raggiungere il js
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.