Line 12:
Line 12:
nom=Sites web|
nom=Sites web|
num=10000|
num=10000|
−
devdoc=[[Module Website (developer)]]|
+
devdoc=[[Module Site Web (développeur)]]|
userdoc=Cette page|}}
userdoc=Cette page|}}
−
−
{{ToTranslate}}
= Introduction =
= Introduction =
Line 42:
Line 40:
...
...
−
= Ajouter le contenu d'une page/conteneur dans une autre page/conteneur =
+
= Inclure du contenu dynamique dans une page =
−
L'inclusion d'un conteneur dans un conteneur parent permet de déplacer une partie du contenu (texte ou html) d'une page dans une sous-page. Vous pouvez donc l'inclure sur plusieurs pages. La modification du contenu de la sous-page sera propagée sur toute page qui inclut la sous-page. C'est similaire à l'utilisation des "Templates" avec Mediawiki ou à l'utilisation du #include en C++.
−
−
Pour inclure le contenu d'une sous-page/sous-contenu dans une autre, il suffit d'ajouter ceci à l'endroit où vous souhaitez que le sous-contenu soit inclus :
−
−
<source lang="html">
−
<?php includeContainer('alias_du_conteneur_a_inclure'); ?>
−
</source>
−
−
= Ajouter de contenu dynamique dans une page =
L'une des caractéristiques les plus intéressantes de Dolibarr CMS est que vous pouvez inclure du contenu dynamique en ajoutant du code PHP, n'importe où sur votre site web. Seules les personnes autorisées le font car elles ont besoin de la permission "Ajouter du contenu dynamique" pour pouvoir le faire.
L'une des caractéristiques les plus intéressantes de Dolibarr CMS est que vous pouvez inclure du contenu dynamique en ajoutant du code PHP, n'importe où sur votre site web. Seules les personnes autorisées le font car elles ont besoin de la permission "Ajouter du contenu dynamique" pour pouvoir le faire.
L'ajout de contenu dynamique est aussi simple que le développement en PHP. Il suffit d'ajouter les balises <?php / ?>. Vous pouvez utiliser, dans votre code dynamique, n'importe laquelle des variables globales prédéfinies suivantes (elles sont déjà initialisées et renseignées) :
L'ajout de contenu dynamique est aussi simple que le développement en PHP. Il suffit d'ajouter les balises <?php / ?>. Vous pouvez utiliser, dans votre code dynamique, n'importe laquelle des variables globales prédéfinies suivantes (elles sont déjà initialisées et renseignées) :
Line 64:
Line 53:
== Accéder aux propriétés de la page web ==
== Accéder aux propriétés de la page web ==
−
Voici un autre exemple de contenu dynamique permettant d'obtenir des métadonnées d'un conteneur/page :
+
Voici un autre exemple de contenu dynamique à mettre dans le source de votre page permettant d'obtenir des métadonnées d'un conteneur/page :
<source lang="html">
<source lang="html">
__(Titre)__ : <?php echo $websitepage->title; ?><br>
__(Titre)__ : <?php echo $websitepage->title; ?><br>
__(Description)__ : <?php echo $websitepage->description; ?><br>
__(Description)__ : <?php echo $websitepage->description; ?><br>
−
__(Mots-clés)__ : <?php echo $websitepage->keywords; ?><br>
+
__(Keywords)__ : <?php echo $websitepage->keywords; ?><br>
−
__(DateDeCréation)__ : <?php echo dol_print_date($websitepage->date_creation, 'dayhour', $weblangs); ?><br>
+
__(DateCreation)__ : <?php echo dol_print_date($websitepage->date_creation, 'dayhour', $weblangs); ?><br>
</source>
</source>
−
== Dernier article du blog ==
+
== Ajouter le contenu d'une page/conteneur dans une autre page/conteneur ==
+
L'inclusion d'un conteneur dans un conteneur parent permet de déplacer une partie du contenu (texte ou html) d'une page dans une sous-page. Vous pouvez donc l'inclure sur plusieurs pages. La modification du contenu de la sous-page sera propagée sur toute page qui inclut la sous-page. C'est similaire à l'utilisation des "Templates" avec Mediawiki ou à l'utilisation du #include en C++.
+
+
Pour inclure le contenu d'une sous-page/sous-contenu dans une autre, il suffit d'ajouter ceci à l'endroit où vous souhaitez que le sous-contenu soit inclus :
+
+
<syntaxhighlight lang="html">
+
<?php includeContainer('alias_du_conteneur_a_inclure'); ?>
+
</syntaxhighlight>
+
+
==Ajouter une redirection vers une autre page==
+
Si vous souhaitez effectuer une redirection vers une autre page, vous pouvez ajouter le code suivant dans la source de la page :
+
+
<syntaxhighlight lang="html">
+
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
+
</syntaxhighlight>
+
ou
+
<syntaxhighlight lang="html">
+
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>
+
</syntaxhighlight>
+
+
== Autres astuces ==
+
Pour inclure une image stockée dans le répertoire medias (répertoire ouvert au public), utilisez le chemin relatif commençant par /medias, exemple :
+
<syntaxhighlight lang="html">
+
<img src="/medias/image/myimagepath/filename.ext">
+
</syntaxhighlight>
+
+
Pour une image partagée avec un lien de partage (accès ouvert via la clé de hachage de partage du fichier), utilisez le wrapper :
+
<syntaxhighlight lang="html">
+
<img src="/viewimage.php?hashp=12345679012...">
+
</syntaxhighlight>
+
+
Pour obtenir l'URL de l'image d'un objet PHP, utilisez
+
<syntaxhighlight lang="html">
+
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
+
</syntaxhighlight>
+
+
Pour obtenir l'URL d'une image dans le contenu HTML d'un article, utilisez
+
<syntaxhighlight lang="html">
+
<img src="<?php print getImageFromHtmlContent($$htmlcontent, 1) ?>">
+
</syntaxhighlight>
+
+
+
== Exemple de code: Dernier article du blog ==
Voici un exemple de page qui affiche la liste des 5 derniers articles actifs (conteneur de type "blogpost"), en français, qui contient le mot-clé "monmotclé".
Voici un exemple de page qui affiche la liste des 5 derniers articles actifs (conteneur de type "blogpost"), en français, qui contient le mot-clé "monmotclé".
Line 85:
Line 116:
$weblangs->loadLangs(array("main"));
$weblangs->loadLangs(array("main"));
$arrayofblogs = $websitepage->fetchAll($website->id, 'DESC', 'date_creation', 5, 0, array('type_container'=>'blogpost', 'keywords'=>$keyword, 'status'=>'1', 'lang'=>'fr'));
$arrayofblogs = $websitepage->fetchAll($website->id, 'DESC', 'date_creation', 5, 0, array('type_container'=>'blogpost', 'keywords'=>$keyword, 'status'=>'1', 'lang'=>'fr'));
−
if (is_numeric($arrayofblogs) && $arrayofblogs < 0)
+
if (is_numeric($arrayofblogs) && $arrayofblogs < 0) {
−
{
print '<div class="error">'.$weblangs->trans($websitepage->error).'</div>';
print '<div class="error">'.$weblangs->trans($websitepage->error).'</div>';
−
}
+
} elseif (is_array($arrayofblogs) && ! empty($arrayofblogs)) {
−
elseif (is_array($arrayofblogs) && ! empty($arrayofblogs))
−
{
$fuser = new User($db);
$fuser = new User($db);
−
foreach($arrayofblogs as $blog)
+
foreach($arrayofblogs as $blog) {
−
{
print '<div class="row justify-content-sm-center row-40">';
print '<div class="row justify-content-sm-center row-40">';
print '<div class="container blog-box centpercent" style="padding: 20px; transition: .3s all ease;">';
print '<div class="container blog-box centpercent" style="padding: 20px; transition: .3s all ease;">';
−
print '<a href="'.$blog->pageurl.'.php">';
+
print '<a href="'.$blog->pageurl.'.php">';
−
print '<div class="post-boxed-img-wrap"><img src="'.($blog->image ? 'viewimage.php?modulepart=medias&file='.$blog->image : 'medias/image/'.$website->ref.'/calendar.svg"').'" alt="" width="120"></div>';
+
print '<div class="post-boxed-img-wrap"><img src="'.($blog->image ? 'viewimage.php?modulepart=medias&file='.$blog->image : 'medias/image/'.$website->ref.'/calendar.svg"').'" alt="" width="120"></div>';
print '<div class="post-boxed-caption">';
print '<div class="post-boxed-caption">';
print '<div class="post-boxed-title font-weight-bold">'.$blog->title.'</div>';
print '<div class="post-boxed-title font-weight-bold">'.$blog->title.'</div>';
Line 112:
Line 139:
print '</div>';
print '</div>';
}
}
+
} else {
+
print $weblangs->trans("NoArticlesFoundForTheKeyword", $keyword);
}
}
−
else
+
?>
−
{
+
</div>
−
print '<div class="row justify-content-sm-center row-40">';
+
</section>
−
print '<div class="container blog-box centpercent" style="padding: 20px; transition: .3s all ease;">';
+
</source>
−
print $weblangs->trans("NoArticlesFoundForTheKeyword", $keyword);
+
−
print '</div>';
+
== Example de code: Liste des produits ==
−
print '</div>';
+
Voici un exemple de page qui affiche la liste des produits en base.
−
+
+
<source lang="html">
+
<!-- Blog list -->
+
<section id="sectionproducts" contenteditable="true" class="main section-50 section-md-50 section-md-bottom-50">
+
<h2>Liste des produits</h2>
+
<div class="center">
+
<?php
+
$weblangs->loadLangs(array("main"));
+
+
$sql = 'SELECT rowid, ref FROM '.MAIN_DB_PREFIX.'product WHERE tosell > 0';
+
$resql = $db->query($sql);
+
if ($resql) {
+
$num_rows = $db->num_rows($resql);
+
$i = 0;
+
while ($i < $num_rows) {
+
$obj = $db->fetch_object($resql);
+
print $obj->ref."<br>\n";
+
$i++;
+
}
+
} else {
+
print $weblangs->trans("NoRecordFound");
}
}
?>
?>
Line 151:
Line 200:
</source>
</source>
−
= Deploy | Publish your website =
+
= Déployer | Publier votre site web =
−
To make your website live, you can click on the link "Deploy/Text my website". A popup will show you instructions to setup the web server, like Apache, so you can make your website live on the Internet. When a website is lived, it is not necessary to have Dolibarr application live, but the database must still remain started.
+
Pour faire déployer votre site web, vous pouvez cliquer sur le lien "Déployer/Tester mon site web". Une fenêtre contextuelle vous montrera les instructions pour configurer le serveur web, comme Apache, afin que vous puissiez rendre votre site web accessible sur l'internet. Lorsqu'un site web est en ligne, il n'est pas nécessaire que l'application Dolibarr soit en ligne, mais la base de données doit toujours être démarrée.
−
Note: It is not possible to have your website and Dolibarr backoffice (that is itself a website tool) using the exactly same domain name.
+
Note : Il n'est pas possible que votre site web et le backoffice Dolibarr (qui est lui-même une application web) utilisent exactement le même nom de domaine.
−
Indeed, it is thanks to the domain name that the web server (like Apache, Nginx, ...) knows where to redirect the request (The Dolibarr Backoffice itself or the websote built by the CMS of Dolibarr).
+
En effet, c'est grâce au nom de domaine que le serveur web (comme Apache, Nginx, ...) sait où rediriger la requête (Le backoffice Dolibarr lui-même ou le site web construit par le CMS de Dolibarr).
−
But you can choose the beginning of the name to differentiate them. For example, you can use:
+
Mais vous pouvez choisir le début du nom pour les différencier. Par exemple, vous pouvez utiliser :
−
* http://admin.example.com for the Dolibarr backoffice tool and
+
* http://admin.example.com pour l'outil de back-office Dolibarr et
−
* http://www.example.com for the first Website edited by the CMS feature.
+
* http://www.example.com pour le premier site web édité par le module CMS.
−
* http://www2.example.com for the second Website edited by the CMS feature.
+
* http://www2.example.com pour le deuxième site web édité par le module CMS.
−
* http://www.example2.com for the third Website edited by the CMS feature.
+
* http://www.example2.com pour le troisième site web édité par le module CMS.