[РЕШЕНО] Как вывести содержимое страницы в 2 колонки и постранично?

Главные вкладки

Аватар пользователя Freakachoo Freakachoo 3 апреля 2009 в 22:12

Добрый день!

Есть следующая задача - выводить контент в 2 колонки, как в журналах, да еще и бить его на страницы.
Это все для того чтобы дизайн сохранял свою исходную форму и не был резиновым ни по вертикали ни по горизонтали. (см. приложение - design-2-mini.jpg).

... кстати говоря заодно можете прокомментировать дизайн (первая страница будет с галереей типа diaporama - design-1-mini.jpg)... моих рук дело Lol

По задаче - я нашел один выход через views+panels+views_bonus_pack:panels НО... бонус пак с готовым плагином для панелс есть только для 5 версии друпала :((( а под 6-ку там только export пока что... поэтому даже не знаю как быть!?

ВложениеРазмер
Иконка изображения design_1-mini.jpg149.08 КБ
Иконка изображения design_2-mini.jpg156.51 КБ

Комментарии

Аватар пользователя Freakachoo Freakachoo 4 апреля 2009 в 14:24

Через JQuery это конечно круто! Обязательно применю в других проектах!!! Спасибо. НО. Для моей задачи подходит не до конца - он не будет разбивать на страницы как мне нужно...
А вот с Views-Grid у меня что-то не получилось... В сетке Вьювс ведь отображает материалы а не одно поле!? Тоесть он не может разбить по сетке содержимое одного поля!

Аватар пользователя Freakachoo Freakachoo 5 апреля 2009 в 6:20

Попытался скрестить модуль Pager и способ из первого сообщения (Jquery+Columnizer) Не вышло... подставил в модуль Pager нужные div-ы... но Pager стал глючить и не выводить контент... что странно...

Пробую капать дальше.

Аватар пользователя Freakachoo Freakachoo 6 апреля 2009 в 3:19

Вы не поверите. Я таки справился с этой задачей, что было не особенно легко! (либо я просто нашел кривой способ. если кто знает способ лучше, изящнее и проще, опишите!)

Итак сделал я это модулем 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 вставить в начало:

<script type="text/javascript">
 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});

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

Большая просьба к тем кто знает как это реализовать попроще - высказаться! Хочу это теперь частенько в дизайне использовать Smile понравилось.