Решил как-то переделать свой простенький сайт в одностраничник. Где-то тут на форуме кто-то вскользь упомянул, что для этих целей можно воспользоваться дистрибутивом Onepage. Когда дошли руки до этого дела, решил установить эту штуку, да посмотреть, что к чему. Забегая наперёд, скажу, что в итоге всё получилось, вот ссылка на сайт:
wellsolutions.by/
Теперь о главном. Заморачиваться со стыковкой уже существующего сайта и профилем Onepage мне было в лом, поэтому я решил использовать только одноимённый модуль из этого профиля, дабы не переделывать заново весь сайт. Принцип работы модуля такой: модуль создаёт страницу, состоящую из секций, каждая секция - это страница, созданная через Page Manager, интегрированный в CTools, на каждую секцию создаётся якорь, ссылки на якоря отображаются в специальном блоке, который выводится только в контексте страницы Onepage (отсюда зависимость от модуля Context). Скрипт плавной прокрутки к якорям интегрирован в модуль.
Теперь о самом главном. Версия модуля Onepage после установки в другой проект оказалась не совсем совсем не рабочая. В модуле оказалось множество недоработок и откровенных косяков, которые я решил исправить. Перечислю их:
1. Переделал шаблон для блока ссылок, т.к. он выводился в левую боковую панель, а я решил его поставить в регион "Навигация", поэтому привёл структуру блока в соответствие со структурой главного меню. Таким образом удалось легко переопределять главное меню и темизация стилей блока существенно облегчилась.
2. Переделал админский интерфейс, т.к. изначально секции выводились в алфавитном порядке по машинному имени и возможность переопределения сортировки не была предусмотрена. Сделал список секций перетаскиваемым, доработал сортировку, чтобы вновь созданные и отключенные секции нормально выводились. Сейчас админка выглядит как-то так:
3. Добавил hook_permission(), т.к. стояла в выводе проверка прав доступа, а сами права не были определены.
4. Пофиксил ещё несколько мелочей, например отсутствующий инклюд page_manager.admin. И ещё что-то там, уже не помню точно, т.к. делал всё ещё зимой, а потом жизненные обстоятельства вынудили меня временно переключиться на совсем другие сферы деятельности.
Вот вроде всё. Более подробно историю доработок модуля я описал в статье по ссылке ниже, там же в конце статьи есть ссылка на скачивание доработанной версии модуля:
http://wellsolutions.by/article/onepage-modul-sozdaniya-odnostranichniko...
Также для придания пущего эффекта одностраничности поставил colorbox_node, чтобы можно было смотреть вообще всё, оставаясь исключительно на главной.
Важная инфа для поклонников индексации: все ранее созданные страницы сайта остаются доступными по прежним адресам. Лэндинг остаётся только на главной (хотя можно вообще задать ему произвольный адрес).
ЗЫ: с разработчиками дистрибутива по этому поводу пока не связывался.
Комментарии
ИМХО Panels+IPE+Ctools и не надо ничего выдумывать.
не совсем так. Если на заставлять юзера оголтело крутить скролл, то нужна прокрутка к якорям и тогда правильно будет Panels+IPE+Ctools + помудрить с шаблонами панелей, чтобы добавить в них атрибут name + сделать какую-то менюшку со ссылками + постоянно гемороиться с ручной синхронизацией содержимого панелей и навигационного меню. А в остальном вы правы))
ну-ну
упс))) где-то проморгал)) зимой, когда начинал всё это, мне вроде показалось, что эта телега была в модулях. Shame on me кароч. Но факт остаётся фактом, что модуль, вытянутый из дистрибутива был не очень рабочий.
Какой же это модуль..это профиль
Отредактировал пост, дабы не отвлекать от сути.
Всё что надо - это:
1) Переписать вывод panels region (добавить id="" для пункта #2)
2) JS который будет осуществлять scrollspy по пункту 1 (10 строк на jquery)
Сделано прикольно. Этот модуль действительно сильно помогает для этой задачи?
Мне когда понадобилось сделать одностраничник, искал подходящие модули, но мне показалось, что блудить в чужом лесу гиморнее, чем свой нагородить
Модули которые понадобились именно для этой задачи:
- Menu attributes
- Special menu items
А всякие эффекты jquery проще вручную встраивать, чем друпаловскими модулями.
Но у меня все действиетельно состоит из одной страницы. Если бы понадобилось вытащить контент с многостраничного сайта, то может быть с этим модулем было бы удобнее.
Вы не дочитали по ходу. Вывод и скрипт пишется один раз - с этим проблем нет и модуль для этого действительно не нужен. Но гемор в вашем варианте состоит в том, что при добавлении/удалении/перемещении контента на странице, нужно каждый раз потом ещё и в менюшке всё вручную приводить в соответствие. А в данном модуле менюшка сама повторяет все секции главной страницы в нужном порядке. В общем, плюс только в том, что немного проще становится управлять контентом.
Как-то не убедил
Custom module в 10 строк кода. Или вообще прямо в template.php