Aller au contenu
Support de Zwii
roger

[Résolu] Module de recherche amélioration

Messages recommandés

Bonjour @Fred ainsi que  @sylvainlelievre

 

Voila ce n'est as vraiment un bug que je relate ici mais plutôt un inconvénient relevé depuis quelque temps déjà et qui concerne la page de recherche d'un Zwii.

 

- En effet lorsque nous lançons une recherche sur un mot précis ou des mots approchants (avec l'option prévue sous la barre de recherche) et bien aucun résultat n 'est retourné si l'un des mots (ou un simple mot) est écrit dans un commentaire posté par exemple dans le blog.

- C'est idem si l'on recherche dans les "Galeries" d'un zwii le module ne trouve pas les noms de galeries crées

 

💡 Il me semble important que le module de recherche soit aussi capable de recherche n'importe quel terme das un  zwii et qui soit à la vue d'un visiteur ou d'un membre enregistré; non?

Si on a un site qui contient énormément de commentaires postés (exemple un zwii de vulgarisation en tutoriel, un zwii transformé en site de vente ou dépannage) les gens aiment y trouver s'ils ont oublié où ils l'ont lu un terme bien précis pour le retrouver dans le contexte....

 

Cet exemple en 4 images:

Un commentaire de base à l'installation du ZwiiCMS rédigé par Rémi dans un article du blog

A.thumb.png.973cc6be0e923a9c1ce1b829fda91240.png

 

Je tape donc dans le formulaire de recherche

B.png.dd6e55f9a995ff9028b28780701fb0d5.png

résultat

C.png.d7c4eed04e7cfe67df3862f80747e94f.png

 

Je recommence avec l'autre option (décocher les mots approchants)

D.png.5fd7ac0e114a0ecad0b82bfe960bb06a.png

résultat

D.png.5fd7ac0e114a0ecad0b82bfe960bb06a.png

 

mais n'ai pas réussi à trouver dans le module search (maintenant incorporé au zwii) les codes à modifier; peur être le développeur à l'origine de ce module @sylvainlelievre pourrait trouver comment remédier à ce petit inconvénient là  🤓

Modifié par roger

Partager ce message


Lien à poster
Partager sur d’autres sites

@roger c'est parce que le module search n'est plus plus vraiment celui de @sylvainlelievre, désormais il fonctionne par expressions régulières.

 

Les lignes 117 - 118, 132 et 133 font l'agrégation du titre de la page et de son contenu, mais jamais du contenu du module dépendant de la page 165 et 1696, sauf pour le blog. 

 

Autrement dit ne sont pas pris en compte :

  • les commentaires
  • les news
  • les galeries
  • les formulaires

C'est un choix volontaire afin de diminuer la complexité de la mise en évidence des résultats gérés par la fonction occurrence :

private function occurrence($url, $titre, $contenu, $motclef, $motentier)
	{
		// Nettoyage de $contenu : on enlève tout ce qui est inclus entre < et >
		$contenu = preg_replace ('/<[^>]*>/', ' ', $contenu);
		// Accentuation
		$contenu = html_entity_decode($contenu);

		// Découper le chaîne en tenant compte des quillemets
		$a = str_getcsv(html_entity_decode($motclef), ' ');

		// Construire la clé de recherche selon options de recherche
		$keywords = '/(';
		foreach ($a as $key => $value) {
			$keywords .= $motentier === true ? $value . '|' : '\b' . $value . '\b|' ;
		}
		$keywords = substr($keywords,0,strlen($keywords) - 1);
		$keywords .= ')/i';
		$keywords = str_replace ('+', ' ',$keywords);

		// Rechercher
		$valid = preg_match_all($keywords,$contenu,$matches,PREG_OFFSET_CAPTURE);
		if ($valid > 0 ) {
			if (($matches[0][0][1]) > 0) {
				$resultat = '<h2><a  href="./?'.$url.'" target="_blank" rel="noopener">' . $titre .  '</a></h2>';
				// Création de l'aperçu
				// Eviter de découper avec une valeur négative
				$d = $matches[0][0][1] - 50 < 0 ? 1 : $matches[0][0][1] - 50;
				// Rechercher l'espace le plus proche
				$d = $d >= 1 ? strpos($contenu,' ',$d) : $d;
				// Découper l'aperçu
				$t = substr($contenu, $d ,$this->getData(['module',$this->getUrl(0),'previewLength']));
				// Applique une mise en évidence
				$t = preg_replace($keywords, '<span class="searchKeyword">\1</span>',$t);
				// Sauver résultat
				$resultat .= '<p class="searchResult">'.$t.'...</p>';
				$resultat .= '<p class="searchTitle">' . count($matches[0]) . (count($matches[0]) === 1 ? ' correspondance<p>' : ' correspondances<p>');
				//}
				return ([
					'matches' => count($matches[0]),
					'preview' => $resultat
				]);
			}
		}
	}

 

et surtout de celle-ci :

 

	public function index() {
		// Création des valeurs de thème par défaut
		if ( $this->getData(['theme', 'search']) === null ) {
			require_once('module/search/ressource/defaultdata.php');
			$this->setData(['theme', 'search', theme::$defaultData]);
		}
		// Création des valeurs de réglage par défaut
		if ( $this->getData(['module', 'search']) === null ) {
			require_once('module/search/ressource/defaultdata.php');
			$this->setData(['module', $this->getUrl(0), data::$defaultData]);
		}

		if($this->isPost())  {
			//Initialisations variables
			$success = true;
			$result = [];
			$notification = '';
			$total='';

			// Récupération du mot clef passé par le formulaire de ...view/index.php, avec caractères accentués
			self::$motclef=$this->getInput('searchMotphraseclef');

			// Récupération de l'état de l'option mot entier passé par le même formulaire
			self::$motentier=$this->getInput('searchMotentier', helper::FILTER_BOOLEAN);

			if (self::$motclef !== '' ) {
				foreach($this->getHierarchy(null,false,null) as $parentId => $childIds) {
					if ($this->getData(['page', $parentId, 'disable']) === false  &&
                        $this->getUser('group') >= $this->getData(['page', $parentId, 'group']) &&
                        $this->getData(['page', $parentId, 'block']) !== 'bar') 	{
						$url = $parentId;
						$titre = $this->getData(['page', $parentId, 'title']);
						$contenu =  ' ' . $titre . ' ' . $this->getData(['page', $parentId, 'content']);
						// Pages sauf pages filles et articles de blog
						$tempData  = $this->occurrence($url, $titre, $contenu, self::$motclef, self::$motentier);
						if (is_array($tempData) ) {
							$result [] = $tempData;
						}
					}

					foreach($childIds as $childId) {
							// Sous page
							if ($this->getData(['page', $childId, 'disable']) === false &&
                                $this->getUser('group') >= $this->getData(['page', $parentId, 'group']) &&
                                $this->getData(['page', $parentId, 'block']) !== 'bar') 	{
                                    $url = $childId;
                                    $titre = $this->getData(['page', $childId, 'title']);
                                    $contenu = ' ' . $titre . ' ' . $this->getData(['page', $childId, 'content']);
                                    //Pages filles
									$tempData  = $this->occurrence($url, $titre, $contenu, self::$motclef, self::$motentier);
									if (is_array($tempData) ) {
										$result [] = $tempData;
									}
							}

							// Articles d'une sous-page blog
							if ($this->getData(['page', $childId, 'moduleId']) === 'blog')
							{
								foreach($this->getData(['module',$childId]) as $articleId => $article) {
									if($this->getData(['module',$childId,$articleId,'state']) === true)  {
										$url = $childId . '/' . $articleId;
										$titre = $article['title'];
										$contenu = ' ' . $titre . ' ' . $article['content'];
										// Articles de sous-page de type blog
										$tempData  = $this->occurrence($url, $titre, $contenu, self::$motclef, self::$motentier);
										if (is_array($tempData) ) {
											$result [] = $tempData;
										}
									}
                                }
							}
                    }

					// Articles d'un blog
					if ($this->getData(['page', $parentId, 'moduleId']) === 'blog' ) {
						foreach($this->getData(['module',$parentId]) as $articleId => $article) {
							if($this->getData(['module',$parentId,$articleId,'state']) === true)
							{
								$url = $parentId. '/' . $articleId;
								$titre = $article['title'];
								$contenu = ' ' . $titre . ' ' . $article['content'];
								// Articles de Blog
								$tempData  = $this->occurrence($url, $titre, $contenu, self::$motclef, self::$motentier);
								if (is_array($tempData) ) {
									$result [] = $tempData;
								}
							}
                        }
					}
				}

				// Message de synthèse de la recherche
				if (count($result) === 0) 	{
					self::$resultTitle = 'Aucun résultat';
					self::$resultError = 'Avez-vous pens&eacute; aux accents ?';
				} else  {
					self::$resultError = '';
					self::$resultTitle = ' Résultat de votre recherche';
					rsort($result);
					foreach ($result as $key => $value) {
						$r [] = $value['preview'];
					}
					// Générer une chaine de caractères
					self::$resultList= implode("", $r);
				}
			}

			// Valeurs en sortie, affichage du résultat
			$this->addOutput([
				'view' => 'index',
				'showBarEditButton' => true,
				'showPageContent' => !$this->getData(['module', $this->getUrl(0),'resultHideContent'])
			]);
		} else {
			// Valeurs en sortie, affichage du formulaire
			$this->addOutput([
				'view' => 'index',
				'showBarEditButton' => true,
				'showPageContent' => true
			]);
		}
	}

Cela dit il y a sûrement moyen de faire mieux et plus court.

 

 

 

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 18 heures, Fred a dit :

Cela dit il y a sûrement moyen de faire mieux et plus court.

Merci Fred pur cette explication détaillée que tu m'as apporté en réponse à mon interrogation.

Par contre je serais bien incapable moi même de faire mieux et plus court que toi pour coder une telle fonction ou de tels codes où qu'ils soient dans le zwii. Mes qualifications au niveau PHP doivent se situer comme telles: "Roger est un élève assis sur un banc d'école du CE1 et qui essaie d'apprendre ce qu'est ce drôle de langage là qu'est PHP" 😳

 

Plus sérieux si je comprend bien cette valeur dit au module de recherche où il doit aller pour trouver une info qu'il affichera ensuite dans le résultat

Citation

$titre, $content,

le titre d'une page et son contenu à explorer (toutes les pages d'un zwii) susceptible de contenir un mot recherché (par exemple le mot article)

Et c'est sous cette forme dans le fichier "page.json" dans le data:

Citation

""blog":

"content": "<p>Cette page contient une instance du module de blog. Cliquez sur un article afin de le lire et de poster des commentaires.<\/p>",

 

Idem pour la page d'un article, le module search regardera alors dans le fichier module.json cela pour afficher ensuite un possible résultat

Citation

"mon-premier-article":

"content": "<p>Je retrouve ici le mot Article que je recherche<\/p>",

 

Alors que pour un commentaire posté dans un article "content": est lui remplacé (pour le contenu) par "comment":

Citation

"comment": {
                    "58e11d09e5aff": {
                        "author": "Rémi",
                        "content": "Article bien rédigé et très pertinent, bravo !",
                        "createdOn": 1421748000,
                        "userId": ""
                    }

 

Si j'ajoutais en plus de "content" dans la valeur de l'endroit à rechercher ceci: "comment" et modifiais un tant soi peu les autres parties situées dans ta réponse (notamment pour le resultat de recherche à afficher ):

Citation

private function occurrence($url, $titre, $content, $comment, $motclef, $motentier)
	

 

 

🤓 Aurais je une chance d'aboutir à un début de solution pour rechercher aussi dans les commentaires d'un article ou est ce voué à l'échec et ne mérite pas que je me penche sur cette modification là à essayer chez moi?

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, roger a dit :

🤓 Aurais je une chance d'aboutir à un début de solution pour rechercher aussi dans les commentaires d'un article ou est ce voué à l'échec et ne mérite pas que je me penche sur cette modification là à essayer chez moi?

En effet,

Mais la manière dont est écrit l’algorithme va alourdir l'écriture en multipliant les foreach. Il faudrait effectuer le travail en deux fois :

1. construire un tableau avec les id des pages

2. lire le tableau et faire un switch sur les modules pour aller chercher les données.

Mais comme tu veux répertorier les commentaires, il y aura une autre boucle. Comme les commentaires sont modérés dans 10400 il faudra également appliquer ce filtre.

Ce que tu peux lire :

formulaire : nom des champs

news : texte des news

blog : les commentaire publiés

galerie : les légendes

Ça fait quand même beaucoup de taf !

  • J'aime 1
  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Fred 👍, ta réponse me laisse entrevoir l'espoir que c'est possible et ce malgré, comme tu le précises à juste titre, l'énormité de la tache à accomplir dans le code à modifier (ssurtout pour la future 10400. Ce sera sans doute ma prochaine "marotte" d'essais lors de la sortie de cette version.

Je marque "Résolu" en haut car j'ai donc les réponses au sujet (qui n'est pas un bug en effet et que j'avais d'ailleurs signalé en début de sujet comme étant "plutôt un inconvénient") et si j'arrive de mon coté à un résultat, promis j'en ferais profiter le plus grand nombre 😀

 

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


  • Contenu similaire

    • Par sylvainlelievre
      Voir le fichier Snipcart pour ZwiiCMS
      Module Snipcart pour ZwiiCMS testé jusqu'à Zwii 10.4.04
       
      Voir le module sur le site de présentation
      C'est quoi ?
      Snipcart est une plateforme de panier d'achat qui permet d'ajouter très rapidement la fonction boutique en ligne à votre site web. Snipcart prend en charge la validation du panier, le paiement, les envois de courriels aux clients et bien d'autres choses. L’inscription et la phase de test sont gratuites, quand votre site sera prêt une commission de 2% sera retenue sur chaque vente. C’est une solution intéressante pour créer rapidement un site d'e-commerce et cerise sur le gâteau Snipcart est basée à Quebec, Canada.    https://snipcart.com/fr
       
      Le module Snipcart pour ZwiiCMS, proposé ici, crée une interface entre votre site Zwii et Snipcart en :
      - automatisant l'intégration de Snipcart à votre site,
      - facilitant la création des boutons d'ajout au panier ou de l'ensemble bouton et produit.
      Ce mode d'emploi présuppose que vous avez créé un compte Snipcart.
       
      RGPD : Le module Snipcart pour ZwiiCMS ne dépose pas de cookie, l'application tierce Snipcart dépose un cookie dénommée snipcart-cart nécessaire à la gestion du panier (consentement de l'internaute non nécessaire et il serait du ressort de Snipcart).
       
       
      Une boutique
       

       
       
       
      Le panier qui apparaît après un clic sur un bouton d'ajout au panier
       

       
       
      Installation ou mise à jour
      Décompressez l'archive snipcart_vxx.zip, elle contient 3 dossiers : core, module et site. Transférer par FTP ces 3 dossiers à la racine de votre site. Après une mise à jour 1.2 => 1.3 vous pouvez supprimer sur le serveur le dossier site/file/snipcart.
       
      Exemple dans le site www/10500/
       

       
      Création d'une page et configuration du module Snipcart
      Créez une nouvelle page et associez lui un module Snipcart
       

       
      Il est préférable de disposer le module en haut, un bouton d'accès au panier sera disposé en haut et à droite sur la page de vente en ligne (sinon ce sera en bas à droite).
      Enregistrez et en configuration du module activez Snipcart et renseignez votre API KEY Snipcart (disponible dans Dashboard / Configure your domain / API KEYS ).
       

      Enregistrez la configuration.
       
      C'est tout, votre module Snipcart a placé automatiquement les choses qu'il faut où il faut !
       
       
      Vous pouvez choisir en configuration 2 modes de création

       
      Voir la vidéo : https://youtu.be/qaHrO-kcwLM
       
      En résumé, à propos de ces  2 modes de création :
       
             vous ne créez que le bouton d'ajout au panier et vous êtes totalement libre pour éditer votre produit,        vous créez simultanément le bouton et le produit et vous éditez rapidement vos pages 'boutique'.  
       
             on peut modifier la configuration du module pour mixer les 2 modes sur une même page,        en mode bouton et produit vous disposez de 3 mises en page : en ligne et, avec gabarits, sur 2 colonnes ou 3 colonnes.  
       
      En configuration vous pouvez également régler quelques paramètres par défaut, pour simplifier la saisie des boutons d'ajout au panier ou de l'ensemble bouton et produit.
      Tous ces paramètres seront valables dans LA PAGE à laquelle vous avez associé le module Snipcart.
      Vous pouvez créer autant de pages d'e-commerce que vous le souhaitez avec des configurations de module indépendantes.
       

       
      En documentation vous disposez d'un lien vers la page de connexion Snipcart et un lien vers cette documentation.
       
      Edition d'une page d'e-commerce
      Editez la page à laquelle vous avez associé un module Snipcart. Dans la barre de menu Tinymce doit apparaître, à côté de l'émoticône, une icône Snipcart :
       

       
      L'icône Snipcart est également disponible dans le menu 'Insérer' et dans le menu contextuel.
       

       

       
      Dans l'éditeur Tinymce positionnez le curseur où vous voulez insérer un bouton et cliquez sur l'icône Snipcart, une fenêtre de création d'un bouton d'ajout au panier, ou de création bouton et produit, apparaît avec les valeurs par défaut définies en configuration pour poids en grammes, taxe et transport :
       

       
      Nom du produit
       
      A renseigner obligatoirement
      Id du produit
       
      Attention !  il doit absolument être unique et renseigné
       
      Description
       
      Facultatif
      Illustration
       
      Facultatif
      Vous avez préalablement transféré par FTP une image illustrant le produit
      Tarif TTC
       
      Prix TTC du produit en €,  hors éventuels frais de livraison
      Poids en grammes
       
      A renseigner si vous avez défini une règle de transport faisant intervenir le poids (voir Frais de transport) et si vous cochez la case 'Frais de transport', sinon laissez la valeur par défaut.
      Saisir un poids en grammes sans décimale
      Taxe
       
      A renseigner si vous avez défini une ou plusieurs taxes dans Snipcart (voir Taxes), sinon laissez vide.
      Le prix du produit étant TTC  cette valeur ne sert qu'à informer le client sur le montant des taxes
      Transport
       
      Pour que Snipcart ajoute des frais de transport, cochez la case. Dans ce cas une ou plusieurs règles de transport devront être créées dans Snipcart (voir Frais de transport)
      Pour des biens immatériels ou pour une collecte en magasin décochez la case, dans ce cas aucune règle de transport n'est obligatoire
      Attention !  si dans votre page se trouve au moins un produit avec frais de transport, ils seront calculés sur l'ensemble des produits.
       
       
      Dans l'onglet Bouton toutes les valeurs peuvent être réglées par défaut :
       

       
       
      L'onglet Options permet d'associer jusqu'à 2 options que le client pourra choisir sur la page panier :
       

       
      Par exemple si le client doit choisir la contenance d'une bouteille, saisissez dans data-item-custom1-name la phrase de votre choix par exemple Contenance et dans data-item-custom1-options les options possibles séparées par une barre verticale (Alt Gr 6) , par exemple : 37,5cl|75cl|1,5l
       

       
      C'est la première option (ici 35,5cl) qui s'affichera par défaut dans le panier.
       
      Si le choix a une incidence sur le prix ajoutez la entre crochets, par exemple : 37,5cl|75cl[+5]|1,5l[+10]
      Le choix 75cl entrainera une augmentation du prix de 5€.
       

       
       
      L'onglet Textes permet d'afficher une zone de saisie de texte pour le client et un message.
       

       
      Résultat obtenu avec pour la zone d'édition client data-item-custom3-name à Votre message et pour le message data-item-custom4-value à Merci pour votre commande (data-item-custom4-name laissée vide) :
       

       
       
      L'onglet Avancé permet d'ajouter au bouton des paramètres non prévus dans les onglets précédents, il nécessite une lecture approfondie du guide produits Snipcart dont un lien se trouve sur les onglets Options, Textes, et Avancé.
       
      Ne jamais modifier le code du bouton manuellement ( avec l'édition en code source de Tinymce) !
       

       
      Par exemple pour ajouter une case à cocher Cadeau vous saisissez data-item-custom5-name="Cadeau" data-item-custom5-type="checkbox" , vous obtenez :
       

       
      Panier obtenu avec 2 options Contenance et Bouchon, une zone de texte client, un message et une case à cocher Cadeau.
       
      Modification ou suppression du bouton d'ajout au panier
      Sélectionnez le bouton par un clic droit sur son texte :
       

       
      Et dans le menu contextuel choisir Snipcart.
       
      La fenêtre s'ouvre en mode modification suppression :
       

       
       
       
      Le mode d'emploi est identique, un bouton Supprimer apparaît en bas à droite pour faciliter la suppression d'un bouton d'ajout au panier ou de l'ensemble bouton et produit.
       
       
      Taxes
      Création de taxes dans Snipcart

       
      Les prix sur le site d'e-commerce sont TTC, vous devez cocher la case 'Included in price'.
       
       Si vous voulez que cette taxe soit calculée également sur les frais de transport cochez la case ' Applies on shippings'.
       
      Vous devez créer plusieurs taxes si dans votre boutique différentes taxes peuvent s'appliquer sur vos produits, exemple avec pour la France une TVA à 20%, 10%, 5.5%, 2.1%,...
       

       
      Dans Zwii quand vous créez votre bouton Snipcart d'ajout au panier, vous devez saisir le nom exact de la taxe, exemple ici avec 'TVA 20%'.
       

       
      Si vous voulez que plusieurs taxes s'appliquent au produit vous devez saisir le nom des taxes séparé par une barre verticale (AltGr touche 6), exemple avec les taxes TPS et TVQ saisir exactement TPS|TVQ.
       
      Quand, sur la page de votre site d'e-commerce, vous cliquez sur le bouton 'Ajouter au panier', vous obtenez pour un produit avec 'TAXE 20%' cet écran :
       

       
      Frais de transport
      Création d'une règle de transport dans Snipcart

       
      Vous pouvez ajouter Dans 'Handling' des frais et des délais de préparation.
       
      Placez Custom Shipping sur ON et cliquer sur CONFIGURE
       

       
       
      Puis sur CREATE SHIPPING METHOD.
       
       
       
      Donnez un nom à cette règle de transport et notez 0 dans FOR ORDER'S TOTAL ABOVE pour que cette règle s'applique dés le premier €.
       

       
      Si vous placez sur ON le choix LOCATION, vous devrez choisir le ou les pays pour lesquels cette règle de transport s'applique.
      Puis indiquez la tarification en €  par tranche de poids.
       

       
      Dans la boîte de dialogue Snipcart Tinymce, onglet Général, vous devez cocher la case 'Frais de transport' et renseigner le poids en grammes du produit.
      Astuce : si vous voulez une tarification par unité plutôt que par poids, rentrez 1 à chaque article dans la zone de texte poids en grammes (c'est la valeur par défaut à l'installation) et dans l'écran précédent créer une règle par grammes articles : de 1 à 6 grammes articles 10€, de 7 à 12 grammes articles 15€, etc...
       
       
       
       
       

      Contributeur sylvainlelievre Soumis 26/11/2020 Catégorie Les modules  
    • Par sylvainlelievre
      Voir le fichier Module de mailing automatisé
       
      Ce module Mailing vous permettra d'envoyer automatiquement des courriels à une date programmée.
       
      Voir ce module sur le site de présentation
       
      Module version 2.0 à utiliser à partir de Zwii 10.3.01, testé jusqu'à 10.4.04 : Mise à jour spéciale
       
      Module version 1.92 testé avec ZWii 9.2.28 et Zwii 10.2
       
      (ne supporte pas l'activation d'un SMTP différent de celui de l'hébergeur)
       
      De nombreuses solutions existent pour réaliser ce type d'envoi mais avec ce module vous aurez la possibilité de le faire en restant dans votre CMS préféré !
       
      Aperçu d'une page Zwii contenant ce module :
       

       
       
      # Installation
       
      Installez par FTP les dossiers module et site contenus dans l'archive à la racine de votre site.
       

       
      Exemple d'installation pour un site nommé  9212, vous observez l'apparition d'un nouveau module nommé mailing qui contient les scripts et dans site/file/ d'un nouveau dossier mailing.
      site/file/mailing contient un dossier adresses dans lequel vous rangerez vos fichiers d'adresses courriels au format csv (avec une virgule pour séparateur) ou format txt (séparateur virgule).
      site/file/mailing contient également un dossier log dans lequel seront rangés les historiques de vos mailings.
       
      # Mise à jour depuis les versions < = 1.94
      1 - sauvegarder site/file/mailing/log/log_xxx.txt avec xxx = nom de la page mailing
      2 - effacer le dossier site/file/mailing
      3 - Transférer les dossiers module et site de l'archive à la racine de votre site
      4 - transférer le fichier log_xxx.txt dans site/data/mailing/log/
       
      # Utilisation
      1 - Créez une nouvelle page
       

       
      2 - Modifiez la page
       

       
      Sélectionnez un module Mailing, nommez votre page (ici Mailing), conservez dans Emplacement "Ne pas afficher", conservez dans Référencement / Groupe requis pour accéder à la page "Visiteurs".
       

       
      Enregistrez (on verra plus tard les options de configuration). C'est prêt !
       

       
      3 - Remplissez complètement le formulaire d'enregistrement de mailing.
      Pour les destinataires vous pouvez saisir plusieurs adresses courriels séparées par des virgules ou (facultatif) renseignez automatiquement la partie destinataires en sélectionnant un fichier d'adresses au format csv (séparateur virgule) ou au format txt (séparateur virgule). 
      Nouveau : Les 4 premiers fichiers sont générés automatiquement à partir des utilisateurs inscrits.
       

       
       
      Exemple avec choix te testmailing.csv :
       

       
      Quand tous les champs sont renseignés cliquez sur Envoyer.
       
      Un message " Demande de Mailing enregistrée " doit apparaître, et en bas de page s'affiche l'opération que vous venez d'effectuer.
       

       
       
       
      # Emission du mailing
       
      Pour cela vous allez avoir besoin de créer une tâche qui se déclenchera automatiquement à une date programmée, vous allez utiliser un service de CRON.
      Vous pouvez utiliser ce service chez votre hébergeur ou utiliser le service de CRON gratuit chez Hiwit.
       
      Commencez par vous inscrire sur le site : https://cron.hiwit.org
       

       
      Une fois inscrit vous pourrez vous connecter au service en renseignant votre Pseudo et votre Pass.
       
      Ajoutez une tâche

       
      Puis cliquez sur "Gérer"

       
      Programmez votre tâche CRON :
      Etat : Activer Url du script : l'url complète de la page Zwii où vous avez installé le module Mailing (ici le nom de la page était "courrielleur"). Régler les paramètres d'exécution à votre convenance  

       
      N'oubliez pas de cliquer sur "Mettre à jour" !
      Avec ce réglage tous les jours à 12h Hiwit lancera une requête sur votre page de mailing. Si une émission a été programmée pour ce jour le mailing sera émis.
       
      # Retour sur l'utilisation après un déclenchement de mailing par tâche CRON
       
      En ouvrant votre page Zwii de mailing vous observez l'émission 
       

       
      Note importante : évitez d'envoyer des mails à des adresses fantaisistes comme le suggère cet exemple car votre hébergeur pourrait suspendre votre service de mails (oui, c'est du vécu ! ).
       
      # Configuration
       
      En configuration vous allez pouvoir :
      Choisir d'utiliser le capcha ou pas Régler la visibilité des destinataires avec adresses visibles par tous les destinataires ou cachées. Effacer le fichier historique log Accéder aux demandes enregistrées et en attente pour éventuellement les supprimer.  
      Pour accéder à la configuration entrez dans le mode modification de page et cliquez sur la roue dentée
       

       
       


       
       
      Contributeur sylvainlelievre Soumis 10/01/2020 Catégorie Les modules  
    • Par sylvainlelievre
      Voir le fichier Diaporama Slider
       
      Ce module va vous permettre d'insérer un diaporama responsif dans une page Zwii.
       
      Voir ce module en situation
       
      Version 3.5 testée  avec Zwii 10.4.04
       
      Attention les versions < 3.4  de ce module ne sont pas compatibles avec Zwii 10.4.03 et supérieur, la mise à jour est obligatoire.
       
       
      Par configuration vous pourrez obtenir cet aspect :

      La navigation se fait en cliquant sur la zone droite ou gauche de l'image.
      Le texte apparaît de façon progressive au survol de l'image.
      Arrêt du défilement automatique au survol de l'image.
       
       
      Celui là :

      Navigation par boutons discrets.
      Le texte et les boutons apparaissent de façon progressive au survol de l'image.
      Arrêt du défilement automatique au survol de l'image.
       
      Ou encore cette version avec légende en haut et boutons de navigation rectangulaires :

       
      Une version sans les puces de navigations :

      Le module Slider peut être utilisé dans une page avec gabarit
       

       
       
      Le diaporama est basé sur responsiveslides.com, le module Zwii slider est basé sur le module Zwii gallery de @Rémi. Merci à @Gilux et à @roger pour leurs contributions dans le CSS et à @Fred pour ses conseils et la mise à jour du fichier edit.js.php.
       
      #Installation
       
      1- Dézipper l'archive slider_vxx.zip
      Elle contient le dossier module incluant le dossier slider.
       
      2 - Nouvelle installation ou mise à jour
      Avec votre logiciel FTP transférer le dossier module à la racine de votre site.
       

       
       
      Résultat obtenu pour le site dev9test
       
      slider/vendor/js/ contient le fichier javascript nécessaire au fonctionnement du module.
       
      slider/view/index/ contient 4 fichiers : index.php responsable de l'affichage du diaporama, index.css qui regroupe tous le CSS du diaporama et themes.gif,  themes.svg pour les 2 boutons proposés.
       
      slider/view/config/ et slider/view/edit/ proviennent du module gallery et sont utilisés pour le paramétrage du diaporama. Ils sont légèrement modifiés.
       
       
      #mode d'emploi
       
      1 - Créer une nouvelle page, modifier cette page

       
      2 - Sélectionner le module Slider et choisir la position du module dans la page
       
      A partir de la version 9.2.07 de Zwii l'option "Position du module dans la page" apparaît. Elle vous permet de choisir où le diaporama va s'afficher dans la page.
      La position "libre" vous permet d'insérer du contenu avant et après le diaporama en saisissant [MODULE] à l'endroit voulu dans votre page.
       

       
      Cliquez sur l'icone "roue dentée", positionnée à côté du choix de module, pour passer à l'étape 3.
       
      3 - Choisir le dossier contenant les images
       
      Vous aurez au préalable chargé les images du diaporama dans un dossier à l'intérieur de site/file/source/ (par FTP ou par le gestionnaire de fichiers intégré à Zwii).
      A ce propos 3 remarques :
      * Le diaporama va s'adapter automatiquement au format (16/9, 4/3,...) ou à l'orientation des images mais je trouve que le meilleur résultat visuel sera obtenu avec des images de même format et de même orientation. Mais ce n'est qu'une opinion personnelle, vous êtes libre de mixer différentes images.
      * Le diaporama va afficher l'image dans le même conteneur quelque soit sa taille, une image trop petite va être dilatée, une image trop grande va augmenter le temps de chargement du diaporama. Je vous conseille des images de largeur minimum 800px si votre paramétrage de la " Largeur maxi du diaporama " est à 800px.
      * L'ordre de passage est maintenant paramétrable.
       

       
       
      Saisissez un nom, sélectionnez un dossier cible puis cliquez sur l’icône dossier. Vous devez obtenir ceci :
       

       
       
      Pour passer à l'étape suivante cliquez sur l'icône "crayon" située sous "Paramétrage du diaporama".
       
      4 - Paramétrage du diaporama.
       

       
       
      Sur cette page de paramétrage, après un rappel du nom et du dossier cible des images, vous avez accès aux réglages suivants :
      Choix du type de navigation manuelle par boutons ou par zones droite ou gauche de l'image, Choix du type de boutons, flèche dans un rectangle noir ou dans un cercle blanc. Visibilité des puces de navigation ou pager, Largeur maxi du diaporama en pixels, le réglage "100%" correspond à la largeur du site définie en configuration - 40 pixels, La durée de la transition, en secondes ou en millisecondes, entre diapositives (fading) , La durée totale d'affichage, en secondes ou en millisecondes, d'une image (fading compris, au minimum durée de la transition + 100ms), La visibilité de la légende uniquement au survol de l'image, toujours visible ou jamais visible, La position de la légende en bas ou en haut de l'image, Le temps d'apparition de la légende et des boutons, Le choix du type de tri des images, La saisie des légendes.  
      N'oubliez pas d'enregistrer.
       
      # C'est possible
       
      Dans un même site Zwii vous pouvez insérer plusieurs diaporamas avec pour chacun des paramétrages différents.
       
      # C'est pas possible
       
      Dans une page Zwii vous ne pouvez insérer qu'un seul diaporama.
       
      Avec Zwii ce n'est pas possible d'insérer plus d'un module par page, vous ne pourrez donc pas insérer un diaporama (module slider) dans une page de blog (module blog) ou dans un formulaire (module form).
       
       
       
      Contributeur sylvainlelievre Soumis 25/09/2019 Catégorie Galeries  
×
×
  • Créer...