Comment limiter l'accès direct aux URL des nœuds affichés dans une galerie vidéo créée avec Views?
10
J'ai créé une galerie vidéo en utilisant Views . Mais je veux seulement que la page soit accessible au public et empêcher l'accès à chacune des vidéos individuellement.
Les vidéos devaient être créées en tant que type de contenu, donc toutes ont des ULR accessibles comme /content/video-1, etc.
Essayez le module d' accès au videocontenu et empêchez l'accès au contenu individuellement (ou vous pouvez également définir l'accès à celui-ci à votre guise roles)
Ce module vous permet de gérer les autorisations pour les types de contenu par rôle et auteur. Il vous permet de spécifier des autorisations d'affichage, de modification et de suppression personnalisées pour chaque type de contenu. En option, vous pouvez activer les paramètres d'accès par contenu, afin de personnaliser l'accès pour chaque nœud de contenu.
Vous pouvez également utiliser le module Node View Permissions , mais je suggère de l'utiliser Content access module.
(Si vous voulez travailler avec Drupal pour l'avenir, il vaut mieux vous impliquer avec ces modules utiles)
Presque ce dont j'avais besoin. Enfin, j'ai contrôlé l'accès via bas niveau, car je voulais rediriger vers la page d'accueil dans certains cas, 404 dans d'autres, etc., donc j'avais un meilleur contrôle, mais je pense que ce module pourrait fonctionner dans la plupart des cas. Peut-être avec un meilleur ajustement dans mon cas, mais je n'ai pas eu le temps d'enquêter.
Le module d'autorisations de visualisation des nœuds active les autorisations «Afficher son propre contenu» et «Afficher tout contenu» pour chaque type de contenu sur la page des autorisations comme c'était le cas sur Drupal 6.
Maintenant, allez à la page d'autorisation et supprimez Afficher toute autorisation de contenu du type de contenu vidéo pour l' utilisateur anonyme .
Si vous souhaitez que seules quelques vidéos de la galerie vidéo soient accessibles à l'utilisateur anonyme, installez le module Refuser l'accès .
Je pense que le module Rabbit Hole fait exactement ce que vous recherchez. Voici un extrait de la page de description du module répondant à votre besoin. Bonne chance.
Rabbit Hole est un module qui ajoute la possibilité de contrôler ce qui doit se produire lorsqu'une entité est consultée sur sa propre page.
Vous avez peut-être un type de contenu qui ne devrait jamais être affiché sur sa propre page, comme un type de contenu d'image affiché dans un carrousel. Rabbit Hole peut empêcher ce nœud d'être accessible sur sa propre page, via node / xxx.
Optez pour le module trou de lapin , il fait exactement la même chose. Tout le contenu est accessible via des vues / code mais lorsque vous essayez d'accéder à la page de détail "contenu / ***", l'accès est refusé ou vous pouvez définir une redirection.
Je vais lui faire un tour, merci. Pour le moment, je l'ai résolu à bas niveau, mais il est préférable de connaître les modules personnalisés déjà réalisés.
Cesar
0
1) Créez un champ de valeur booléenne dans votre type de contenu.
2) Si la valeur est sélectionnée comme vraie, une classe unique doit être ajoutée à ce champ vidéo, si la valeur est sélectionnée comme fausse, la classe ne doit pas être ajoutée à ce champ vidéo.
3) Écrivez du CSS pour cacher les vidéos où la classe n'est pas présente.
En utilisant le module Rules, vous pouvez implémenter une règle qui ressemble à ceci:
{"rules_disallow_accesss_to_selected_urls":{"LABEL":"Disallow access to selected URLs","PLUGIN":"reaction rule","OWNER":"rules","REQUIRES":["rules"],"ON":{"init":[]},"IF":[{"text_matches":{"text":["site:current-page:url"],"match":"content\/video-1","operation":"regex"}}],"DO":[{"drupal_message":{"message":"Sorry, access to URLs like [site:current-page:url] is not allowed ...","type":"error"}},{"redirect":{"url":"no_access"}}]}}
Toute personne essayant d'accéder au chemin relatif content/video-1sera redirigée vers une page avec chemin no_accesset un message d'erreur associé s'affichera (adaptez ce chemin pour l'adapter à vos propres conventions et passez en revue le message à afficher).
La règle ci-dessus restreint uniquement l'accès au chemin relatif content/video-1(comme dans votre question). Si vous souhaitez étendre la règle à des URL similaires, passez content\/video-1à quelque chose comme content\/video-\\d+$, ou à toute variante qui correspond à la convention de dénomination de vos chemins.
La règle ci-dessus ne prend pas (encore) en compte pour n'appliquer l'action de règles qu'aux utilisateurs ayant des rôles sélectionnés. Mais pour quelqu'un qui connaît un peu le module Rules, c'est une simple "condition" à ajouter ... par exemple: ignorer l'action des règles pour les utilisateurs avec un rôle comme éditeur, administrateur, etc. Ce que vous pouvez faire en ajoutant une Rules Condition comme "l'utilisateur n'a PAS d'administrateur de rôle (et / ou d'éditeur)". De cette façon, ces types d'utilisateurs spéciaux peuvent toujours voir ces nœuds de toute façon (sans une telle condition supplémentaire, ils ne peuvent également plus afficher ces nœuds ...).
Pour expérimenter cette règle dans votre propre site, copiez simplement le code Rules complet ci-dessus et collez-le dans une nouvelle règle dans votre propre site, créée via la fonction "Importer" (disponible si l'interface utilisateur Rules est activée). Ensuite, modifiez / affinez davantage pour l'adapter à votre propre environnement (par exemple, le message "Désolé, ..." sera affiché).
Raffinement supplémentaire
Dans l'une des autres réponses, vous avez ajouté un commentaire qui comprend ceci:
... Je voulais rediriger vers la page d'accueil dans certains cas, 404 dans d'autres, etc., donc j'avais un meilleur contrôle ...
Si c'est ce que vous souhaitez également faire, vous pouvez affiner davantage l'action de règles ci-dessus en ajoutant également le module Règles conditionnelles . Avec cela, pour chacun de vos "certains cas", vous pouvez ensuite spécifier l'URL appropriée vers laquelle rediriger. Reportez-vous à ma réponse à " Comment définir les valeurs de certains champs en fonction de la valeur d'une zone de liste? " Pour une illustration de la façon d'utiliser ce module dans une action de règles.
Installez le module Node View Permissions .
Maintenant, allez à la page d'autorisation et supprimez Afficher toute autorisation de contenu du type de contenu vidéo pour l' utilisateur anonyme .
Si vous souhaitez que seules quelques vidéos de la galerie vidéo soient accessibles à l'utilisateur anonyme, installez le module Refuser l'accès .
la source
Mettez simplement à jour votre type de contenu.
Ajoutez un champ numérique comme display_order etc.
Définissez la valeur de ce champ uniquement pour les vidéos que vous souhaitez afficher.
Accédez à vos paramètres d'affichage et définissez;
Utiliser le pager: afficher un nombre spécifié d'éléments | x éléments
où x est le nombre de vidéos que vous souhaitez afficher
Ensuite, appliquez le tri par ordre d' affichage
J'espère que cela fonctionnera.
la source
Je pense que le module Rabbit Hole fait exactement ce que vous recherchez. Voici un extrait de la page de description du module répondant à votre besoin. Bonne chance.
la source
Optez pour le module trou de lapin , il fait exactement la même chose. Tout le contenu est accessible via des vues / code mais lorsque vous essayez d'accéder à la page de détail "contenu / ***", l'accès est refusé ou vous pouvez définir une redirection.
la source
1) Créez un champ de valeur booléenne dans votre type de contenu.
2) Si la valeur est sélectionnée comme vraie, une classe unique doit être ajoutée à ce champ vidéo, si la valeur est sélectionnée comme fausse, la classe ne doit pas être ajoutée à ce champ vidéo.
3) Écrivez du CSS pour cacher les vidéos où la classe n'est pas présente.
la source
En utilisant le module Rules, vous pouvez implémenter une règle qui ressemble à ceci:
Toute personne essayant d'accéder au chemin relatif
content/video-1
sera redirigée vers une page avec cheminno_access
et un message d'erreur associé s'affichera (adaptez ce chemin pour l'adapter à vos propres conventions et passez en revue le message à afficher).La règle ci-dessus restreint uniquement l'accès au chemin relatif
content/video-1
(comme dans votre question). Si vous souhaitez étendre la règle à des URL similaires, passezcontent\/video-1
à quelque chose commecontent\/video-\\d+$
, ou à toute variante qui correspond à la convention de dénomination de vos chemins.La règle ci-dessus ne prend pas (encore) en compte pour n'appliquer l'action de règles qu'aux utilisateurs ayant des rôles sélectionnés. Mais pour quelqu'un qui connaît un peu le module Rules, c'est une simple "condition" à ajouter ... par exemple: ignorer l'action des règles pour les utilisateurs avec un rôle comme éditeur, administrateur, etc. Ce que vous pouvez faire en ajoutant une Rules Condition comme "l'utilisateur n'a PAS d'administrateur de rôle (et / ou d'éditeur)". De cette façon, ces types d'utilisateurs spéciaux peuvent toujours voir ces nœuds de toute façon (sans une telle condition supplémentaire, ils ne peuvent également plus afficher ces nœuds ...).
Pour expérimenter cette règle dans votre propre site, copiez simplement le code Rules complet ci-dessus et collez-le dans une nouvelle règle dans votre propre site, créée via la fonction "Importer" (disponible si l'interface utilisateur Rules est activée). Ensuite, modifiez / affinez davantage pour l'adapter à votre propre environnement (par exemple, le message "Désolé, ..." sera affiché).
Raffinement supplémentaire
Dans l'une des autres réponses, vous avez ajouté un commentaire qui comprend ceci:
Si c'est ce que vous souhaitez également faire, vous pouvez affiner davantage l'action de règles ci-dessus en ajoutant également le module Règles conditionnelles . Avec cela, pour chacun de vos "certains cas", vous pouvez ensuite spécifier l'URL appropriée vers laquelle rediriger. Reportez-vous à ma réponse à " Comment définir les valeurs de certains champs en fonction de la valeur d'une zone de liste? " Pour une illustration de la façon d'utiliser ce module dans une action de règles.
la source