Лэндинг на Drupal с помощью доработанного модуля Onepage

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

Аватар пользователя gun_dose gun_dose 17 апреля 2015 в 10:22

Решил как-то переделать свой простенький сайт в одностраничник. Где-то тут на форуме кто-то вскользь упомянул, что для этих целей можно воспользоваться дистрибутивом Onepage. Когда дошли руки до этого дела, решил установить эту штуку, да посмотреть, что к чему. Забегая наперёд, скажу, что в итоге всё получилось, вот ссылка на сайт:
wellsolutions.by/

Теперь о главном. Заморачиваться со стыковкой уже существующего сайта и профилем Onepage мне было в лом, поэтому я решил использовать только одноимённый модуль из этого профиля, дабы не переделывать заново весь сайт. Принцип работы модуля такой: модуль создаёт страницу, состоящую из секций, каждая секция - это страница, созданная через Page Manager, интегрированный в CTools, на каждую секцию создаётся якорь, ссылки на якоря отображаются в специальном блоке, который выводится только в контексте страницы Onepage (отсюда зависимость от модуля Context). Скрипт плавной прокрутки к якорям интегрирован в модуль.

Теперь о самом главном. Версия модуля Onepage после установки в другой проект оказалась не совсем совсем не рабочая. В модуле оказалось множество недоработок и откровенных косяков, которые я решил исправить. Перечислю их:
1. Переделал шаблон для блока ссылок, т.к. он выводился в левую боковую панель, а я решил его поставить в регион "Навигация", поэтому привёл структуру блока в соответствие со структурой главного меню. Таким образом удалось легко переопределять главное меню и темизация стилей блока существенно облегчилась.
2. Переделал админский интерфейс, т.к. изначально секции выводились в алфавитном порядке по машинному имени и возможность переопределения сортировки не была предусмотрена. Сделал список секций перетаскиваемым, доработал сортировку, чтобы вновь созданные и отключенные секции нормально выводились. Сейчас админка выглядит как-то так:
админка Onepage
3. Добавил hook_permission(), т.к. стояла в выводе проверка прав доступа, а сами права не были определены.
4. Пофиксил ещё несколько мелочей, например отсутствующий инклюд page_manager.admin. И ещё что-то там, уже не помню точно, т.к. делал всё ещё зимой, а потом жизненные обстоятельства вынудили меня временно переключиться на совсем другие сферы деятельности.

Вот вроде всё. Более подробно историю доработок модуля я описал в статье по ссылке ниже, там же в конце статьи есть ссылка на скачивание доработанной версии модуля:
http://wellsolutions.by/article/onepage-modul-sozdaniya-odnostranichniko...

Также для придания пущего эффекта одностраничности поставил colorbox_node, чтобы можно было смотреть вообще всё, оставаясь исключительно на главной.

Важная инфа для поклонников индексации: все ранее созданные страницы сайта остаются доступными по прежним адресам. Лэндинг остаётся только на главной (хотя можно вообще задать ему произвольный адрес).

ЗЫ: с разработчиками дистрибутива по этому поводу пока не связывался.

Комментарии

Аватар пользователя gun_dose gun_dose 17 апреля 2015 в 11:14

"whiesam" wrote:
ИМХО Panels+IPE+Ctools и не надо ничего выдумывать.

не совсем так. Если на заставлять юзера оголтело крутить скролл, то нужна прокрутка к якорям и тогда правильно будет Panels+IPE+Ctools + помудрить с шаблонами панелей, чтобы добавить в них атрибут name + сделать какую-то менюшку со ссылками + постоянно гемороиться с ручной синхронизацией содержимого панелей и навигационного меню. А в остальном вы правы))

Аватар пользователя drupby drupby 10 ноября 2015 в 11:50

"gun_dose" wrote:
Версия модуля в репозитории drupal.org не совсем совсем не рабочая. Через drush на скачивается, через админку тоже не хочет ставиться.

ну-ну

Аватар пользователя gun_dose gun_dose 17 апреля 2015 в 13:14

"drupby" wrote:
ну-ну

упс))) где-то проморгал)) зимой, когда начинал всё это, мне вроде показалось, что эта телега была в модулях. Shame on me кароч. Но факт остаётся фактом, что модуль, вытянутый из дистрибутива был не очень рабочий.

Аватар пользователя whiesam whiesam 17 апреля 2015 в 17:31

"gun_dose" wrote:
Если на заставлять юзера оголтело крутить скролл, то нужна прокрутка к якорям и тогда правильно будет Panels+IPE+Ctools + помудрить с шаблонами панелей...

Всё что надо - это:
1) Переписать вывод panels region (добавить id="" для пункта #2)
2) JS который будет осуществлять scrollspy по пункту 1 (10 строк на jquery)

Аватар пользователя psyh psyh 18 апреля 2015 в 12:21

Сделано прикольно. Этот модуль действительно сильно помогает для этой задачи?
Мне когда понадобилось сделать одностраничник, искал подходящие модули, но мне показалось, что блудить в чужом лесу гиморнее, чем свой нагородить Smile
Модули которые понадобились именно для этой задачи:
- Menu attributes
- Special menu items
А всякие эффекты jquery проще вручную встраивать, чем друпаловскими модулями.
Но у меня все действиетельно состоит из одной страницы. Если бы понадобилось вытащить контент с многостраничного сайта, то может быть с этим модулем было бы удобнее.

Аватар пользователя gun_dose gun_dose 19 апреля 2015 в 21:06

"whiesam" wrote:
Всё что надо - это:
1) Переписать вывод panels region (добавить id="" для пункта #2)
2) JS который будет осуществлять scrollspy по пункту 1 (10 строк на jquery)

Вы не дочитали по ходу. Вывод и скрипт пишется один раз - с этим проблем нет и модуль для этого действительно не нужен. Но гемор в вашем варианте состоит в том, что при добавлении/удалении/перемещении контента на странице, нужно каждый раз потом ещё и в менюшке всё вручную приводить в соответствие. А в данном модуле менюшка сама повторяет все секции главной страницы в нужном порядке. В общем, плюс только в том, что немного проще становится управлять контентом.

Аватар пользователя whiesam whiesam 23 апреля 2015 в 21:58

"gun_dose" wrote:
А в данном модуле менюшка сама повторяет все секции главной страницы в нужном порядке. В общем, плюс только в том, что немного проще становится управлять контентом.

Custom module в 10 строк кода. Или вообще прямо в template.php