Добрый день!
Есть следующая задача - выводить контент в 2 колонки, как в журналах, да еще и бить его на страницы.
Это все для того чтобы дизайн сохранял свою исходную форму и не был резиновым ни по вертикали ни по горизонтали. (см. приложение - design-2-mini.jpg).
... кстати говоря заодно можете прокомментировать дизайн (первая страница будет с галереей типа diaporama - design-1-mini.jpg)... моих рук дело
По задаче - я нашел один выход через views+panels+views_bonus_pack:panels НО... бонус пак с готовым плагином для панелс есть только для 5 версии друпала :((( а под 6-ку там только export пока что... поэтому даже не знаю как быть!?
Вложение | Размер |
---|---|
design_1-mini.jpg | 149.08 КБ |
design_2-mini.jpg | 156.51 КБ |
Комментарии
http://romka.eu/blog-jquery-auto-columnizer
Под шестой вьюс есть отображение "Сеткой" (grid)
Через JQuery это конечно круто! Обязательно применю в других проектах!!! Спасибо. НО. Для моей задачи подходит не до конца - он не будет разбивать на страницы как мне нужно...
А вот с Views-Grid у меня что-то не получилось... В сетке Вьювс ведь отображает материалы а не одно поле!? Тоесть он не может разбить по сетке содержимое одного поля!
Ребята, вопрос все еще сильно актуален!!! Ответьте кто знает ответ!!! пожалста!
Попытался скрестить модуль Pager и способ из первого сообщения (Jquery+Columnizer) Не вышло... подставил в модуль Pager нужные div-ы... но Pager стал глючить и не выводить контент... что странно...
Пробую капать дальше.
Вы не поверите. Я таки справился с этой задачей, что было не особенно легко! (либо я просто нашел кривой способ. если кто знает способ лучше, изящнее и проще, опишите!)
Итак сделал я это модулем Paging: http://drupal.org/project/paging
И jquery plugin японского происхождения -- multicol: http://plugins.jquery.com/project/multicol
columnizer-ом воспользоваться не получилось, потому что он конфликтовал с Paging и не хотел почему-то обрабатывать.
Подключать jquery 1.3.2. не нужно как того просит multicol, он будет работать и со встроенным в друпал jquery 1.2.* - который и так каждый раз подключается сам.
Итак нам нужно просто в node.tpl.php вставить в начало:
window.onload= function(){
$("#column22").multicol({colNum:2, colMargin: 10});
}
</script>
А контент обрамить в
<div id=column22 class="multicol"></div>
Но в этом случае контент поделится на 2 колонки только при первой загрузке страницы.
Когда же с помощью Paging (при включенной опции Ajax) мы переключаем страницы, onLoad не исполняется. Поэтому мне пришлось вставить эту же функцию в файлы модуля Paging:
в файл paging.module (в строку 617) после:
$node->content[$start]['#value'] = '<div id="paging-pager-' . $node->nid . '" class="paging-pager-contents">
вставляем:
<div id="column22" class="multicol">'
получаем:
$node->content[$start]['#value'] = '<div id="paging-pager-' . $node->nid . '" class="paging-pager-contents"><div id="column22" class="multicol">'
И в строке 643:
return '<div class="links">' . $output . '</div>'
сделать:
return '</div><div class="links">' . $output . '</div>';
(закрываем вставленный див) таким образом мы обрамляем контент страницы каждый раз при переходе на следующую страницу модулем Paging (при включенном Аяксе).
Но это еще не все... придется вставить исполнение функции в файл paging.js в месте где мы получаем информацию Аяксом:
строка 132, внутри функции:
success: function(response) {
текст:
$("#column22").multicol({colNum:2, colMargin: 10});
ну вот и все. должно заработать...
Мда... прочитал и понял что ЖУТКО криво. делал для сайта визитки, там страниц было не много, поэтому все получилось для большого сайта конечно это слишком кривой метод или надо дорабатывать условиями и все такое...
Большая просьба к тем кто знает как это реализовать попроще - высказаться! Хочу это теперь частенько в дизайне использовать понравилось.