Bonjour,
Suite à un tweet de
@toutsurmodx sur l'utilisation de photos dans les profils d'utilisateurs de Revolution, voici un post hook rapide pour le snippet UpdateProfile (contenu dans l'extra
Login).
En espérant que cela puisse vous être utile.
photo est un post hook pour le snippet UpdateProfile (extra Login) permettant aux utilisateur d’ajouter une photo à leur profil.
Installation
Créez un snippet (dans mon cas nommé « photo ») ayant pour contenu :
https://github.com/meltingmedia/Tools/blob/develop/core/components/tools/elements/snippets/hook.photo.php
Dans l’onglet des propriétés du snippet, créez les 3 propriétés suivantes :
- - photo_path
Chemin absolu vers le répertoire où vous souhaitez que les photos soient stockées
- - photo_path_url
Url permettantt d’acceder au répertoire défini dans la propriété path
- - photo_field
Nom du champ (input) du formulaire à utiliser pour récupérer les informations de l’image ( dans l’exemple ci-dessous : « picture » ). Veuillez à ne pas utiliser un champ nommé « photo ».
Une quatrième propriété existe, photo_filename. Elle permet de définir le nom de l’image. Ce nom doit être unique pour chaque utilisateur (afin d’éviter les conflits/écrasements). Par défaut le nom sera : {nom d’utilisateur}-profile.{extension du fichier}, exemple : romain-profile.jpg
Utilisation
[[!UpdateProfile?
&postHooks=`photo`
&useExtended=`0`
]]
<form action="[[~[[*id]]]]" method="post" enctype="multipart/form-data">
<label for="picture">Photo [[+error.picture]]</label>
[[+photo:notempty=`<img src="[[+photo]]" />`]]
<input type="file" name="picture" />
<input type="submit" name="submit" value="submit" />
</form>
Dans cet exemple, j’ai désactivé l’utilisation des champs étendus (activée par défaut) afin de ne pas créer une entrée pour le champ « picture » (qui est un array).
Si vous désirez utiliser les champs étendus, penser à indiquer
&excludeExtended=`picture`
dans votre appel de snippet (où picture est le nom de champ input type = "file").
Il est possible de définir ou « d’écraser » les paramètres dans votre appel UpdateProfile, par exemple :
[[!UpdateProfile?
&postHooks=`photo`
&useExtended=`0`
&photo_path=`/chemin/absolu/vers/dossier/`
&photo_path_url=`url/vers/dossier/`
&photo_field=`nom_du_champ_de_photo`
&photo_filename=`nom_unique-[[!+modx.user.id]]`
]]
Edit : bug avec Discuss
[ed. note: romain last edited this post 12 years, 5 months ago.]