IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction pour CMS?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut Fonction pour CMS?
    Bonjour!

    Je programme actuellement un petit CMS basique pour faire mon site mais je bloque...

    Mon CMS va chercher une template dans templates/default/sommaire.ice par exemple.

    L'extension "ice" signifie Ice CMS

    Dans le fichier on peut préciser des boucles et un tas de choses avec des balises spéciales, un exemple: <ice:meta:title>

    Comment faire pour "parser" un fichier en recherchant toutes des balises <ice> et récupérer chaque option dans une balise pour ensuite faire des condition qui permetteront d'aller chercher des données dans la bdd?

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $balise = '<ice:meta:title>';
    $type_balise = 'ice';
    $type_donnee = 'meta';
    $donnee = 'title';
    Ce qui permettrait de faire des conditions pour ne devoir qu'employer la bdd si nécessaire!

    Merci

  2. #2
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2006
    Messages : 56
    Par défaut
    Moi perso, je ferai un truc du genre..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //$sTemplate est ici la chaine contenant ton template
    function getTagIce($sTemplate)
    {
    	return preg_replace_callback('`<ice:(\w+):(\w+) */?>`i','getTagIceCallback',$sTemplate);
    }
    function getTagIceCallback($matches)
    {
    	$data_type = $matches[1];
    	$data = $matches[2];
    	//Suite de ton code de traitement
    	//en retournant la valeur par laquelle tu veux remplacer ta balise
    	return ''; //là en gros ça efface ta balise..
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut
    Salut!
    Merci pour ta réponse, c'est ce que je cherchais!
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut
    Quand j'ai posté la réponse j'étais en cours, je suis donc rentré chez moi pour essayer, mais sans succès

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    /* Les fonctions d'IceCMS, le moteur du CMS */
     
    function index() {
    /* Page, id? */
    if(isset($_GET['type']))
        {
        $type = $_GET['type'];
        if(isset($_GET['id']))
            {
            $id = $_GET['id'];
            }
        }
    else
        {
        $type = 'accueil';
        }
    /* On peut commencer! */
    generer_template($type, $id);
    }
     
    function generer_template($type, $id) {
    $template = 'templates/default/sommaire.ice';
    $donnees_template = '';
     
    /* Lit un fichier, et le place dans une variable */
    $handle = fopen($template, "r");
    $donnees_template = fread($handle, filesize($template));
    $donnees_template = parser_template($donnees_template);
    echo $donnees_template;
    fclose ($handle);
    }
     
    /* Fonction permettant de parreser une templates <ice:*:*> */
    function parser_template($donnees_template) {
    $sTemplate = $donnees_template;
        //$sTemplate est ici la chaine contenant ton template
        function getTagIce($sTemplate)
        {
            return preg_replace_callback('`<ice:(\w+):(\w+) */?>`i','getTagIceCallback',$sTemplate);
        }
        function getTagIceCallback($matches)
        {
            $data_type = $matches[1];
            $data = $matches[2];
            //Suite de ton code de traitement
            //en retournant la valeur par laquelle tu veux remplacer ta balise
            echo $data_type;
            return ''; //là en gros ça efface ta balise..
        }
     
    }
    ?>
    Qui n'affiche ni le contenu original de la template (même ce qu'il y avait dedans du genre <p>Texte</p>), ni la variable $data_type

    Tout est lancé avec la fonction index(); et sans employer la fonction parser_template(); j'ai encore le contenu du fichier mais plus après

    Qui peut m'aider?

    Merci

  5. #5
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /* Fonction permettant de parser une templates <ice:*:*> */
    function parser_template($donnees_template) {
    $sTemplate = $donnees_template;
        //$sTemplate est ici la chaine contenant ton template
        preg_replace_callback('#<ice(?::([a-z]+?)+?)>#', 'replace_ice', $sTemplate);
     
        function replace_ice($matches)
        {
            $data_type = $matches[1];
            $data = $matches[2];
            //Suite de ton code de traitement
            //en retournant la valeur par laquelle tu veux remplacer ta balise
            echo $data_type;
            return ''; //là en gros ça efface ta balise..
        }
     
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut
    J'ai essayé le code que tu as posté mais il n'affiche rien
    Pour info voici le contenu de templates/default/sommaire.ic:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     
    <head>
    <ice:meta:title>
    <ice:meta:charset>
    </head>
     
    <body>
    <p>lol</p>
    </body>
     
    </html>
    Donc normalement je devrais tout de même avoir '<p>lol</p>' à l'écran?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/09/2009, 19h24
  2. Fonction pour savoir si un ordi est connecté au reseau
    Par LitteulKevin dans le forum Windows
    Réponses: 17
    Dernier message: 13/09/2004, 15h12
  3. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 09h29
  4. Fonction pour récuperer mon adresse IP
    Par néo333 dans le forum Web & réseau
    Réponses: 11
    Dernier message: 01/11/2003, 18h35
  5. utilisation d'objets ADO pour CMS sur POSTGRESQL7.3.2
    Par turbok dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 10/10/2003, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo