2010-10-27 21 views
1

Je drupal suis dans le besoin d'un certain pointage dans la bonne direction ici ...contenu d'affichage en deux colonnes avec une hauteur fixe dans

J'ai un site avec un couple de différents types de contenu. Je veux afficher ce contenu dans une mise en page de type livre. Le livre doit avoir une largeur et une hauteur fixes et les pages doivent être remplies avec autant de nœuds que possible. Il devrait être dans deux colonnes, avec la colonne de gauche étant remplie avant la droite.

Comment devrais-je m'en approcher?

J'ai réfléchi à quelques solutions, je ne sais pas ce qui est possible et lequel est le meilleur ou que je peux combiner.

  1. Je pourrais simplement créer une vue qui sélectionne plus de nœuds que nécessaire. Ensuite, vérifiez combien de temps les nœuds sont dans la couche thématique et jetez les nœuds qui ne sont pas nécessaires. Les téléavertisseurs doivent être corrigés aussi.

  2. Utilisez des panneaux en combinaison avec des vues pour afficher une vue dans deux colonnes, si cela est possible. Besoin d'un moyen de déterminer le nombre de nœuds affichés sur chaque page, en fonction de la longueur du contenu.

  3. Écrivez un greffon/gestionnaire pour les vues afin que je puisse sélectionner une quantité de nœuds qui a une longueur maximum, prédéterminée, maximum de contenu.

  4. Ecrivez un nouveau style d'affichage pour les vues affichant le contenu dans deux colonnes de hauteurs fixes.

  5. Ecrivez un module personnalisé, laissez des vues et des panneaux en dehors et faites tout moi-même avec db_queries.

Apprécierait et guider beaucoup. Je ne cherche pas une solution complète, je n'ai pas peur de coder et je vais contribuer si je crée quelque chose que quelqu'un d'autre peut utiliser (comme un plugin de vues). Juste besoin de quelqu'un pour me guider dans la bonne direction :)

Répondre

1

Le plus difficile sera de déterminer combien de contenu vous avez besoin pour remplir l'espace. Il n'y a pas vraiment de bonne façon de le faire non plus, car cela dépend à la fois du balisage et des styles.

La meilleure solution que je peux penser est de charger les nœuds avec javascript, ou peut-être juste les avoir disponibles en tant que variables javascript. De cette façon, vous pourriez insérer les noeuds à votre page un par un. Vous pouvez alors voir dans le JS les hauteurs de tous les nœuds au total, et une fois que cette hauteur est plus grande que x, il suffit de supprimer le dernier nœud inséré.

Ce n'est pas une solution parfaite, mais je pense que vous devriez envisager de le faire avec JavaScript. Le seul problème est qu'il ne se dégradera pas gracieusement très bien.

+0

N'a pas pensé à le faire avec JavaScript. J'y penserai certainement. Si je suis en mesure d'obtenir la hauteur d'un div qui contient le nœud, il résout beaucoup de problème avec le choix du nombre de nœuds à produire. Pourrait également manipuler les pagers avec javascript. Je pourrais commencer avec une vue avec 5 nœuds sur chaque page du livre, puis déplacer les nœuds de la première à la deuxième page et supprimer les nœuds de la deuxième page si nécessaire. Si javascript est désactivé, l'utilisateur obtiendra un livre étrangement dimensionné, mais ce n'est pas la fin du monde. Merci! – Nasso

0

Drupal vous aider à construire rapidement, et il semble prometteur, mais ne parvient pas à combler les besoins du client, concepteur aussi programmeur. Vous devez écrire une page de module et certaines fonctions.

La 5ème solution que vous avez donnée a eu peu de problèmes que d'autres. Ecrire une fonction qui a un comportement "teaser like", je retournerai le noeud formaté en fonction de son type. Ne posez pas sur le système de teaser de Drupal. Si les teasers ont des hauteurs différentes, ajoutez de la hauteur à la fonction Teaser.

+0

Je ne veux pas rogner les nœuds de quelque façon que ce soit. Je veux afficher le contenu complet. Il penche vers un module complètement personnalisé en ce moment, cependant ... – Nasso

0

Je n'ai pas de réponse directe, mais j'ai quelques choses à penser.

Il me semble que ce que vous cherchez est une combinaison d'une mise en page multicolonne CSS3 (voir http://www.quirksmode.org/css/multicolumn.html par exemple) et limiter le contenu affiché à une hauteur fixe. Ma première pensée serait de créer une vue unique qui obtient plus que ce dont vous avez besoin, l'afficher en utilisant des colonnes CSS3, et définir overflow: hidden; pour le conteneur, de sorte que le texte supplémentaire est juste caché.

Si vous souhaitez obtenir plus de détails, vous devrez peut-être utiliser le système de rendu des vues pour limiter le nombre total de nœuds en fonction du nombre de caractères restitués. Mais comme votre contrainte désirée est plus visuelle que orientée vers les données, je pense que l'approche la plus pratique sera d'utiliser javascript pour détecter la hauteur du texte et l'état de débordement.

Certaines choses ne sont pas claires au sujet de vos besoins. Quel est le but des 2 types de contenu? L'un affiche-t-il à gauche et l'autre à droite? Ou s'agit-il seulement de deux types de contenu différents qui devraient se comporter de la même manière, mais nous ne voyons qu'un type de contenu à la fois sur une page donnée? Que devrait-il se passer avec le contenu débordé? Devrait-il apparaître dynamiquement à la page 2, puis 3, puis 4, et ainsi de suite?

Une pensée d'adieu: Peut-être charger tout le contenu que vous souhaitez parcourir, directement dans le navigateur. Peut-être que ça commence à être caché. Ensuite, utilisez javascript pour l'afficher, le mettre en forme dans des colonnes et utiliser javascript pour gérer la pagination.

+0

Merci pour la réponse. Jetez un oeil à la css. Le site ressemble à un livre. Il se composera de plusieurs types de contenu. Ils seront commandés après le type de contenu. Par exemple, il peut y avoir d'abord des journaux, puis des films et ensuite des codes codes. Une fois que l'utilisateur a feuilleté tous les journaux, le livre devrait commencer à énumérer les films, etc. Il pourrait y avoir une situation où il y a un type de contenu sur la colonne de gauche et un autre sur la droite. Je n'ai pas de js pour pagechange. Besoin d'avoir des urls qui peuvent référencer une certaine page dans le livre. Merci pour la suggestion cependant. – Nasso