We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 17863
    • 32 Posts
    Bonjour à tous,

    Je découvre aujourd’hui modX, et me voici très enthousiaste depuis son installation sur ma machine.
    Je suis un fervent utilisateur de SPIP depuis sa version 1.2 que j’utilise à des fins personnelles et professionnelles.
    Cependant, voila un an maintenant que je lui cherche un remplaçant. SPIP est un logiciel bien pensé et facile à déployer une fois le principe des boucles aquises, mais je lui reproche cependant de ne pas pouvoir se plier à certains besoins de mes clients concernant les accès privés par exemple, et une interface parfois trop complète pour des besoins standards de sites institutionnels nécessitant un peu de dynamisme comme des forums par exemple...
    Voilà pour la présentation.

    Pour les besoins d’un groupe national possédant plusieurs succursales un peu partout en france, je suis consulté pour la réalisation de leurs sites internet et extranet.
    Etant donné que ces sites ne devront être en partie accessibles seulement à certaines personnes autorisées, et que je ne compte ni leur développer un CMS à partir de zero, ni faire un fork de SPIP, je me suis mis à chercher d’autres solutions. J’ai installé quelques frameworks PHP, et j’en avais retenu un : Symphony, jusqu’à ce que je rencontre ModX...
    Le principe de ModX si je l’ai bien compris, est qu’il propose les fonctions d’un CMS et en plus dispose d’une API pour pouvoir développer des fonctions plus personnelles. Un melange de CMS et d’un FrameWork en fait.

    Pour que vous puissiez me donner vos avis sur la capacité de ModX de répondre à leur besoins, je vous expose rapidements les fonctions clés des sites:
    - Accès public
    - pages de presentations (textes+images)
    - annuaires
    - telechargement de documents PDF
    - syndication
    - actualités
    - calendriers
    - Accès privés & Intranet (idem accès public +...)
    - newsletter
    - outils de calculs
    - petites annonces
    - moteur de recherche

    Comme vous le voyez, SPIP ne suffirait pas, mis à part si je lui adjoint d’autres outils GNU... mais à l’utilisation, devoir jongler entre différentes interfaces ne serais pas l’idéal pour la secrétaire chargée des mises à jour des sites ! grin

    J’ai lu avec intérêt la discussion entre davidM et loupilo sur le hub, ainsi que d’autres pages parlant de modX, et j’aimerai éviter si possible de commencer un développement avec un produit que je ne connais pas et pour lequel je m’apercevrai en fin de compte qu’il ne correspondait à mes besoins.

    si j’ai bien compris la philosophie de ModX, il devrait être possible de lui adjoindre des modules afin d’étoffer ses capacités. Je n’ai pas vu de modules de PA ou d’annuaires sur le site de ModX, peut être ai-je mal cherché.
    Quel serait selon vous la durée d’apprentissage du fonctionnement de ModX pour le développement de ce type de modules, pour un modeste développeur web comme moi ? Je n’ai que 2 ans d’expérience en programmation (autodidacte PHP).

    Dans tous les cas, longue vie à SPIP et ModX qui sont d’excellents produits chacun avec leurs qualités.
      --
      MacSpyre
      • 33175
      • 711 Posts
      Bonjour,

      Regarde Peut-on faire tout ça avec Modx ?. Tu y trouveras une bonne partie des réponses que tu souhaites smiley

      A ma connaissance il n’existe (encore) aucun annuaire. Il n’existe pas de ressources sur les petites annonces.
      Par contre, tu peux les faire toi même wink Modx est très simple pour développer de nouvelles ressources. C’est du PHP classique avec la possibilité d’utiliser l’API de Modx. Il y a des infos à ce sujet sur la page documentation et sur le wiki.

      Regarde aussi la page des ressources, tu trouveras peut être ton bonheur ! ça évolue tellement vite !
        Sorry for my english. I'm french... My dictionary is near me, but it's only a dictionary !
        • 17863
        • 32 Posts
        Merci pour ces informations Guillaume.
        Je développerai donc les 2 nouvelles ressources pour les mettre à disposition à la communauté MODx.

        Je suis bien motivé en tout cas à essayer ce produit qui a l’air très prometteur sur le papier, et les différents avis des utilisateurs consultés de part et d’autre me conforte dans ma décision.

        A bientôt sur les forums.
          --
          MacSpyre
          • 28173
          • 409 Posts
          Bonjour,

          Macspyre : as-tu finalement développé ces ressources ? Le cas échéant, comment t’en es-tu sorti ?
          Un client me demande de réaliser sur son site un système de petites annonces ainsi qu’un annuaire et je n’ai rien trouvé de tout près pour ModX.

          Si toi ou un autre forumeur a un tuyau, c’est pas de refus smiley
            • 10449
            • 956 Posts
            En tout cas, il a bien utilisé modx sur un de ces sites: http://www.chezsteph.com/index.php/Accueil -> http://www.makeopen.net/ - on y trouve les "modx-media-path" références dans le HTML smiley
              • 17863
              • 32 Posts
              Quote from: Spheerys at Feb 20, 2008, 08:10 AM

              Bonjour,

              Macspyre : as-tu finalement développé ces ressources ? Le cas échéant, comment t’en es-tu sorti ?
              Un client me demande de réaliser sur son site un système de petites annonces ainsi qu’un annuaire et je n’ai rien trouvé de tout près pour ModX.

              Si toi ou un autre forumeur a un tuyau, c’est pas de refus smiley

              Salut Spheerys,

              Effectivement, j’ai trouvé comment manier la bête...
              Aujourd’hui je ne veux plus utiliser un autre outil que MODx.
              Dis toi une chose : TOUT EST POSSIBLE

              Si tu veux quelques tuyaux, précise moi ta fonction.

              @+
                --
                MacSpyre
                • 28173
                • 409 Posts
                En fait j’ai exactement besoin de mettre en place un annuaire de lien et un système de petites annonces smiley
                  • 17863
                  • 32 Posts
                  J’avais bien compris que tu recherchais un systeme de PA et d’Annuaire  grin
                  J’aurai aimé avoir plus d’informations sur tes besoins concernant ces modules.

                  Si le but est de réaliser un site où chaque visiteur aurait la possibilité de laisser leur contribution, et pour faire simple tu pourrais suivre cette démarche :

                  1. Créé un groupe d’utilisateurs web ’membres’
                  2. Créer un répertoire MODx pour stocker les annonces laissées par les visiteurs.
                  3. Créer une page MODx et lui attribuer un accès restreint sur le groupe d’utilisateurs ’membres’. Cette page servira aux personnes enregistrées d’ajouter des annonces. On y place ce snippet :
                  [!petitesAnnonces? &tplContener=`petitesAnnonces` &parent=`XX` !]

                  Où parent est l’ID du répertoire créé en 2.
                  3. Créer le snippet ’petitesAnnonces’ :
                  <?php
                  // ---------------------------------------------------
                   // initialisation des variables locales du snippet
                   // ---------------------------------------------------
                  global $modx;
                  $out = '';
                  $idPage = 0;
                  $idTheme = 0;
                   // ---------------------------------------------------
                   // recuperer les prametres du Snippet
                   // ---------------------------------------------------
                  
                  $tplContener = isset($tplContener)? $modx->getChunk($tplContener): 'le parametre &$tplContener est maquant (un chunk est obligatoire)';
                  $parent = isset($parent)? $parent: 0;
                  
                   // ---------------------------------------------------
                   // recuperer les champs du formulaire
                   // ---------------------------------------------------
                  $idPage = isset($_POST['idPage']) ? $_POST['idPage'] : 0;
                  $idTheme = isset($_POST['idTheme']) ? $_POST['idTheme'] : 0;
                  
                  if($idTheme<=0){
                  // first child of parent redirect
                  if($parent)	{
                  	$firstChild = array();
                  	$children= $modx->getActiveChildren($parent, 'menuindex', 'ASC');
                  	if (!$children === false) {
                  	    $firstChild= $children[0];
                  		$idTheme = $firstChild['id'];
                  		$_POST['idTheme'] = $idTheme;
                  	} 
                  }
                  }
                  
                  /**
                   * action à réaliser.
                   */
                  
                  $out = $tplContener;
                  $snippet1 = $modx->runSnippet('traitementAnnonces',array('tplContener'=>'petitesAnnonces','parent'=>$parent));
                  $out = str_replace("[+snippet1+]",$snippet1,$out);
                  return $out;
                  ?>
                  

                  4. Créer le chunck ’petitesAnnonces’ :
                  [+confirmation+]
                  <form method="post" name="messagefrm" enctype="multipart/form-data" action="[~[*id*]~]" >
                  <div>
                  	<p>
                  		<label for="nom">Votre nom :</label><br/>
                  		<input id="nom" name="[+longtitle+]" type="text" maxlength="255" size="60" value="[+longtitleValue+]" />
                  	</p>
                  	<p>
                  		<label for="email">Votre eMail :</label><br/>
                  		<input id="email" name="[+description+]" type="text" maxlength="255" size="60" value="[+descriptionValue+]" />
                  	</p>
                  	<p>
                  		<label for="departement">Votre departement :</label><br/>
                  		<input id="departement" name="[+menutitle+]" type="text" maxlength="2" size="2" value="[+menutitleValue+]" />
                  	</p>
                  </div>
                  <div>
                  	<p>
                  		<label for="chargerTheme">Catégorie :</label><br/>
                  		[+SELECT_THEMES+]
                  	</p>
                  	<p>
                  		<label for="[+pagetitle+]">Titre :</label><br/>
                  		<input id="[+pagetitle+]" name="[+pagetitle+]" type="text" maxlength="255" size="60" value="[+pagetitleValue+]" />
                  	</p>
                  	<p>
                  		<label for="[+content+]">Votre Annonce :</label><br/>
                  		<textarea name="[+content+]" id="[+content+]" class="inputBox" rows="10" cols="60">[+contentValue+]</textarea>
                  	</p>
                  	<input name="[+action+]"  type="hidden" value="" />	<input name="idPage"  type="hidden" value="[+idPage+]" />
                  	<input name="idTheme"  type="hidden" value="[+idTheme+]" />
                  	<input type="button" value="[+CREA_UPDATE_NAME+]" onclick="postForm('[+CREA_UPDATE+]'); return false;" />
                  </div>
                  </form>
                  

                  6. Créer le snippet traitementAnnonces
                  <?php
                  global $modx;
                  
                   // ---------------------------------------------------
                   // initialisation des variables locales du snippet
                   // ---------------------------------------------------
                  $out = '';
                  $idPage = 0;
                  $action = '';
                  $pagetitle = '';
                  $longtitle = '';
                  $description = '';
                  $alias = '';
                  $link_attributes = '';
                  $introtext = '';
                  $menutitle = '';
                  $content = '';
                  $published = 1;
                  $hidemenu = 0;
                  $idTheme = 0;
                  $confirmation = '';
                  
                  $tplContener = isset($tplContener)? $modx->getChunk($tplContener);
                  
                   // ---------------------------------------------------
                   // recuperer les champs du formulaire
                   // ---------------------------------------------------
                  $idPage = isset($_POST['idPage']) ? $_POST['idPage'] : 0;
                  $action = isset($_POST[$prefixe.'opcode']) ? $_POST[$prefixe.'opcode'] : '';
                  $pagetitle = isset($_POST[$prefixe.'pagetitle']) ? $_POST[$prefixe.'pagetitle'] : '';
                  $longtitle = isset($_POST[$prefixe.'longtitle']) ? $_POST[$prefixe.'longtitle'] : '';
                  $description = isset($_POST[$prefixe.'description']) ? $_POST[$prefixe.'description'] : '';
                  $alias = isset($_POST[$prefixe.'alias']) ? $_POST[$prefixe.'alias'] : '';
                  $link_attributes = isset($_POST[$prefixe.'link_attributes']) ? $_POST[$prefixe.'link_attributes'] : '';
                  $introtext = isset($_POST[$prefixe.'introtext']) ? $_POST[$prefixe.'introtext'] : '';
                  $menutitle = isset($_POST[$prefixe.'menutitle']) ? $_POST[$prefixe.'menutitle'] : '';
                  $content = isset($_POST[$prefixe.'content']) ? nl2br($_POST[$prefixe.'content']) : '';
                  $published = isset($_POST[$prefixe.'published']) ? $_POST[$prefixe.'published'] : '';
                  $hidemenu = isset($_POST[$prefixe.'hidemenu']) ? $_POST[$prefixe.'hidemenu'] : '';
                  $idTheme = isset($_POST['idTheme']) ? $_POST['idTheme'] : 0;
                  ?>
                  
                  /**
                   * selon l'action
                   */
                  switch($action) {
                      case 'create':
                          $doc = new Document($idPage,'pagetitle,longtitle,description,alias,link_attributes,introtext,menutitle,content,published,hidemenu,parent,privateweb,pub_date,unpub_date,template');
                          $doc->Set('pagetitle',$pagetitle);
                          $doc->Set('longtitle',$longtitle);
                          $doc->Set('description',$description);
                          $doc->Set('alias',$alias);
                          $doc->Set('link_attributes',$link_attributes);  
                          $doc->Set('introtext',$introtext);
                          $doc->Set('menutitle',$menutitle);
                          $doc->Set('content',$content);
                          $doc->Set('published',0);
                          $doc->Set('hidemenu',0);
                          $doc->Set('parent',$idTheme);
                  		$doc->Set('privateweb',1);
                  		$doc->Set('pub_date',time());
                  		$unmois = time() + (30 * 24 * 60 * 60);
                  		$doc->Set('unpub_date',$unmois);
                  		$doc->Set('template',1); // Mettre ici l'id du template a afficher
                          $doc->Save();
                  		mail('[email protected]', 'nouvelle annonce' ,"une annonce vient d'être posté, id : ".$doc->Get('id')." " , "From: ".$description);
                  		$idPage = 0;
                  		$action = '';
                  		$pagetitle = '';
                  		$longtitle = '';
                  		$description = '';
                  		$alias = '';
                  		$link_attributes = '';
                  		$introtext = '';
                  		$menutitle = '';
                  		$content = '';
                  		$published = 0;
                  		$hidemenu = 0;
                  		$idTheme = 0;
                  		$confirmation = 'Votre annonce a bien été enregistrée , elle sera publiée après validation.';
                      break;
                      default :
                      break;
                  }    
                  


                  Je te garantis pas que tout fonctionne en l’état, je t’ai lancé une piste, à ton tour de jouer, et d’adapter cette méthode pour faire tes deux modules.
                  Le principe de fonctionnement est à peu près le même pour faire des PA, un FAQ, ou tout autre type de documents sans devoir pour autant donner les clefs du manager.

                  @+
                    --
                    MacSpyre
                    • 28173
                    • 409 Posts
                    Merci pour ta réponse.
                    Me vais me plonger dans tout ça dans les prochaines semaines smiley