Отображать содержимое в двух столбцах с фиксированной высотой в drupal - PullRequest
1 голос
/ 27 октября 2010

Мне нужно несколько указывать в правильном направлении здесь ...

У меня есть сайт с парой различных типов контента.Я хочу отобразить этот контент в виде книги.Книга должна иметь фиксированную ширину и высоту, а страницы должны заполняться как можно большим количеством узлов.Он должен быть в двух столбцах, левый столбец должен быть заполнен перед правым.

Как мне подойти к этому?

Я думал о нескольких решениях, не знаю какиевозможны и какой из них лучше или который я могу объединить.

  1. Я мог бы просто создать представление, которое выбирает больше узлов, чем необходимо.Затем проверьте, как долго узлы находятся в слое тем и отбросьте ненужные узлы.Пейджеры также должны быть исправлены.

  2. Используйте панели в сочетании с видами, чтобы отобразить один вид в двух столбцах, если это возможно.Нужен способ определить количество узлов, отображаемых на каждой странице, на основе длины содержимого.

  3. Написать плагин / обработчик для представлений, чтобы я мог выбрать количество узлов, которыеимеет максимальную, предопределенную, максимальную длину содержимого.

  4. Напишите новый стиль отображения для представлений, отображающий содержимое в двух столбцах с фиксированной высотой.

  5. Напишите собственный модуль, исключите из него виды и панели и сделайте все сам с помощью db_queries.

Буду признателен и очень многим руководству.Не ища готового решения, я не боюсь писать код и буду помогать, если создам что-то, что может использовать кто-то другой (например, плагин views).Просто нужен кто-то, чтобы вести меня в правильном направлении:)

Ответы [ 3 ]

1 голос
/ 27 октября 2010

Сложнее всего будет выяснить, сколько контента вам нужно, чтобы заполнить пространство.На самом деле нет хорошего способа сделать это, поскольку это будет зависеть как от разметки, так и от стилей.

Лучшее решение, о котором я могу подумать, - это загрузить узлы с помощью JavaScript или, возможно, просто сделать их доступнымипеременные javascript.Таким образом, вы можете вставлять узлы на страницу по одному.Затем в JS можно увидеть высоты всех узлов в целом, и как только эта высота станет больше x, вам нужно будет удалить только последний вставленный узел.

Это не идеальное решение, но я думаю,Вы должны смотреть на это с помощью JavaScript.Единственная проблема в том, что он не будет изящно очень хорошо разлагаться.

0 голосов
/ 14 ноября 2010

У меня нет прямого ответа, но есть несколько вещей, о которых вы должны подумать.

Мне кажется, что то, что вы ищете, является комбинацией многоколоночного макета CSS3 (см. http://www.quirksmode.org/css/multicolumn.html например) и ограничение отображаемого содержимого фиксированной высотой.

Моей первой мыслью было бы создать одно представление, которое получит больше, чем нужно, отобразить его с помощью столбцов CSS3 и установить переполнение.скрытый;для контейнера, так что дополнительный текст просто скрыт.

Если вам нужно узнать более подробно, вам, возможно, придется покопаться в системе рендеринга представлений, чтобы ограничить общее количество узлов на основе количества отрисованных символов.

Но так как вашжелаемое ограничение более наглядно, чем ориентированное на данные, я думаю, что наиболее практичным подходом будет использование javascript для определения высоты текста и состояния переполнения.

Есть некоторые вещи, которые неясны в отношении ваших требований.Какова цель двух типов контента?Отображается ли один слева, а другой справа?Или это просто два разных типа контента, которые должны вести себя одинаково, но мы видим только один тип контента за раз на данной странице?Что должно случиться с переполненным контентом?Должно ли оно появиться динамически на странице 2, затем 3, затем 4 и т. Д.

Одна прощальная мысль: может быть, загрузите ВСЕ содержимое, которое вы хотите просмотреть, прямо в браузер.Может быть, это начнется скрытно.Затем используйте javascript для его отображения, отформатируйте в столбцы и также используйте javascript для обработки страниц.

0 голосов
/ 27 октября 2010

Drupal помогает вам быстро строить, и выглядит многообещающе, но не в состоянии удовлетворить потребности клиента, дизайнера и программиста.Вам нужно написать одну страницу модуля и несколько функций.

5-е решение, которое вы дали, имеет мало проблем, чем другие.Напишите функцию, которая будет иметь «похожее на тизер» поведение, я верну отформатированный узел в соответствии с его типом.Не кладите на тизерную систему drupal.Если тизеры будут иметь разную высоту, добавьте высоту к функции тизера.

...