Eclydre Web Manager > Développeur > Les markers > Les markers de fonctionnalité

Les markers de fonctionnalité

Introduction

Même si ewm est installé avec un nombre important de markers qui suffiront à la réalisation de la plupart des sites web, il est possible de créer de nouveaux markers ou de surcharger voire remplacer ceux du core.

Exemple : script title.php du marker TITLE

if(EWM!=1) die( 'This file is part of Eclydre Web Manager');
#_____________________ title de la page
if(getpost('id_ville'))
{
    $fiche['nom'] = getTrad(getpost('id_ville'), $GLOBALS['d_bdd'].'.villes', 'g_ville', $langue);
    $markerVal = getLt('title_meteo', $langue)." : ".$fiche['nom'].' - '.($config['meteo_title'] ? $config['meteo_title'] : getLt('meteo_internationale', $langue)).' - '.strip_html(getLT('site_title', $langue));
}
else if(getpost('id_pays'))
{
    $fiche['nom'] = getTrad(getpost('id_pays'), $GLOBALS['d_bdd'].'.pays', 'g_pays', $langue);
    $markerVal = getLt('title_meteo', $langue)." : ".$fiche['nom'].' - '.($config['meteo_title'] ? getLt($config['meteo_title'], $langue) : getLt('meteo_internationale', $langue)).' - '.strip_html(getLT('site_title', $langue));
}
else if(getpost('id_continent'))
{
    $fiche['nom'] = getTrad(getpost('id_continent'), $GLOBALS['d_bdd'].'.continent', 'g_continent', $langue);
    $markerVal = getLt('title_meteo', $langue)." : ".$fiche['nom'].' - '.($config['meteo_title'] ? getLt($config['meteo_title'], $langue) : getLt('meteo_internationale', $langue)).' - '.strip_html(getLT('site_title', $langue));
}
else if(getpost('prg_id'))
{
    $fiche    = getFicheEmission( getpost('prg_id'), $iLangue['version_id'], $signal, $zone);
    $markerVal = strip_html(getLT('site_title', $langue).' : '.getLt('programmes', $langue).' - '.$fiche['nom']);
}
else if(getpost('id_quiz'))
{
    if(!$infoQuiz)
        $infoQuiz = GetTSQL("SELECT q.id, c.nom cnom, q.nom qnom, q.texte, q.vignette FROM quiz_categorie c, quiz_fiche q WHERE c.id = quiz_categorie_id AND q.id = ".getpost('id_quiz'));;
    
    $markerVal = strip_html(getLT('site_title', $langue).' - '.getLt('quiz', $langue).' : '.$infoQuiz['cnom'].' - '.$infoQuiz['qnom']);
}
else if(getpost('id_cat'))
{
    $fiche    = loadRecord('quiz_categorie', getpost('id_cat'));
    $markerVal = strip_html(getLT('site_title', $langue).' - '.getLt('quiz', $langue).' : '.$fiche['nom']);
}
else $markerVal = strip_html(getLT('site_title', $langue).' : '.getLM($infoPage['nom'], $infoPage['nom_trad_id'], $langue)).(getpost('lettre')?' - '.getLT('lettre', $langue).' '.getpost('lettre'):'').(getpost('page')?' - '.getLT('page', $langue).' '.getpost('page'):'');

$markerFollow = 0;

Les pré-requis d'un marker

Comme pour tout script php nous retrouvons en début du script php du marker la ligne :
if(EWM!=1) die( 'This file is part of Eclydre Web Manager');
qui garantit que le script php seul ne peut pas être joué en dehors du cms.

Le résultat HTML produit par le marker est renvoyé dans la variable globale $markerVal.
Si $markerVal est renvoyé vide, tt_content.php considérera qu'il n'a pas été traité et relancera le script php du marker au prochain tour d'analyse des markers. Il convient donc d'en être conscient pour ne pas répéter un traitement inutilement...dans ce cas la solution étant de renvoyer par exemple un commentaire HTML indiquant que le traitement a été fait.

Voir le tableau des variables globales pour savoir quelles variables et quelles informations sont disponibles pour les markers.

Remplacement d'un marker du core

Il peut arriver qu'un script php associé à un marker du core ne répondent pas complètement aux exigences d'un projet.
Dans ce cas plutôt que de développer un nouveau script de marker il est possible de le "remplacer".
il suffit de créer un script du même nom dans le dossier marker/ à la racine d'ewm ou dans un des dossiers marker/ des modules du projet et de poser à la fin de ce nouveau script la variable $markerFollow=0; comme dans l'exemple ci-dessus.
tt_content dans son processus de génération des pages va scrutter dans un premier temps les dossiers marker/ des éventuels modules activés, puis le dossier marker/ à la racine pour finir par celui du core à la recherche d'un script php à associer au marker. Dès qu'il trouve un script du même nom que le marker et que la variable $markerFollow=0; est posé dans ce script il termine sa recherche, remplace le marker par le contenu de la variable $markerVal et passe au marker suivant.

Les variables globales disponibles dans le marker

ewm_trace
la chaine qui contient les traces de construction de la page
config
le tableau de "config" construit par admin/configuration et les champs params de rubriques / pages
cachefile
le nom du fichier de cache de la page en cours
cache_id
le numéro de page de la page du cache en cours
cache_fid
le numéro de dossier de la page du cache en cours
root_path
le chemin relatif vers le dossier d'installation du cms
knownBrowser
liste de navigateurs reconnus
iBrowser
navigateur détecté
vBrowser
version de navigateur détecté
d_btype
type de connexion sql : mysql
d_bhost
host mysql
d_blogin
login mysql
d_bpwd
pwd mysql
d_bcms
nom de base mysql
ext_list
tableau des extensions définies dans ext_list.php
now
date/heure en cours, peut-être une valeur fictif pour la prévisualisation
datenow
date/heure en cours, peut-être une valeur fictif pour la prévisualisation
mysqlconn
tableau récapitulant la connexion en cours
txt_trad
tableau de cache des textes (txt_trad + lg_mot)
record
si chargé = le tableau des DBs
recordDroits
si chargé = le tableau des droits sur les DBs
tExtension
tableau des extensions chargées
action
= _GET[action] ou _POST[action]
tabLangue
tableau des langues définies dans l'admin
para
tableau de description de construction des types de paragraphes (in_gauche, gauche, etc.)
id
ID de la page en cours
infoPage
enregistrement de la page en cours
infoRub
enregistrement de la rubrique en cours si diffusée
front_user
tableau ID + Groupe de l'utilisateur frontal connecté
pageparams
querystring de la page en cours
pagename
nom HTML de la page en cours (p.ID-xxx.html)
aParams
tableau de params en cours
langue
ID de la langue en cours, =0 si langue par défaut
iLangue
enregistrement langue en cours, vaut iso=fr si langue par défaut
gArbo
tableau des rubriques de la page en cours
fil_arianne_ids
id des rubriques de la page en cours
fil_arianne
fil d'arianne en cours + liens
cache_dolink
tableau de cache de la fonction dolink()
rootArbo
enregistrement rubrique de 1er niveau
iZone
tableau des zones de contenus déclarées dans la page en cours
typePara
tableau de lien nomzone=codezone
infoZone
tableau des zones indexé par code zone
gabarit
tableau des gabarits HTML chargés de la page en cours
infoGab
gabarit HTML en cours de traitement
keyGab
clé de gabarit[] en cours de traitement
content
contenu HTML généré de la page en construction
parts
tableau de découpage du gabarit en cours
markerVal
variable à renseigner par le résultat que donne le marker en construction
marker
nom du marker en cours de traitement
mParams
tableau des paramètres du marker en cours de traitement
cache_sql
tableau de cache des requêtes SQL
cache_marker
tableau de cache des markers
markerFollow
indique si le marker en cours doit procéder ou non aux traitements multiples si plusieurs fichiers de marker du même nom existent
=1 on continue les traitements
=0, on arrête le traitement
hookFollow
dans le cas d'un marker avec possibilité de hook, indique si le retour du hook procède au traitement initial ou non
prevKeyGab
clé de gabarit traité avant celui en cours
pagetitle
< title> généré de la page en cours
infoGC
enregistrement template HTML en cours