Модуль для сайтов-одностраничников, есть ли смысл?

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

Аватар пользователя constcost constcost 29 октября 2013 в 15:48

Использовать Друпал для создания подобных сайтов конечно можно, но я думаю это лишние проблемы. Вся фишка подобных сайтов в том, что они со спецэффектами и будет плохо, если они будут делаться по шаблону. Даже если создать друпал-модуль, который будет добавлять страницу (положим там даже будет выбор эффекта появления и выбор анимации css) в одностраничный сайт, сайт не будет уникальным. Как думаете какие плюсы будут, если все-таки написать подобный модуль?

Комментарии

Аватар пользователя constcost constcost 29 октября 2013 в 19:28

"sergeybelya" wrote:
По-моему, вы путаете модули и темизацию.

Здесь вы правы, это по большей части сводится к темизации. Может у тех, кто давно занимается сайтами-одностраничниками, есть свой стандартный набор jquery-плагинов, которые они используют в проектах. Я просмотрел несколько одностраничных шаблонов для друпал, в большинстве из них все сводилось к темизации, при этом javascript-код настройки плагинов там прописывался прямо в файлах шаблонов.
"adubovskoy" wrote:
не проще взять готовое?) http://www.ra-don.ru/landing[/quote]
Здесь довольно упрощенный тип.

Т.е. по сути модуль будет давать возможность создавать страницу, добавлять на эту страницу всякие js-плагины. Например, если посмотреть сайт http://www.5emegauche.com
Здесь на странице http://www.5emegauche.com/clients мы видим галерею клиентов. При клике по клиенту он подгружается через ajax. Каждая страница клиента по сути это слайд-шоу из картинок и текста.

Я немного подумал, это будет довольно сложно реализовать. В моем понимании сайт-одностраничник по высоте должен полностью помещаться на экране монитора, а если у него высота больше, то должно быть меню, которое позволяет перейти к нижней части. Сложность заключается в создании страниц, которые будут подгружаться через ajax. Каждая страница должна иметь свой url. В друпале можно создавать меню и желательно, чтобы можно было создавать структуру типа:

/<front>                        Главная (слайд-шоу)
/portfolio                      Портфолио (ajax)
/portfolio/item1                  Страница 1 (ajax)
/portfolio/item1#section1           Секция1
/portfolio/item1#section2           Секция2
/portfolio/item2                  Страница 2 (ajax)
/portfolio/item2#section1           Секция1
/portfolio/item2#section2           Секция2
/team                           Наша команда (ajax)
/team#item1                       Иван Иванов
/team#item2                       Петр Петров

Я не стал затрагивать тему jquery-плагинов, а их много. Начиная с плагинов плавной прокрутки и заканчивая всякими экзотическими плагинами, типа прокрутка по траектории - http://joelb.me/scrollpath.
Есть готовый модуль https://drupal.org/project/jquery_plugin, по сути можно использовать его возможности. Но если учесть, что каждый плагин можно настраивать и желательно настраивать из под админки, то все еще более усложняется.

Аватар пользователя constcost constcost 29 октября 2013 в 19:45

Помнится была у меня мысль, чтобы на сайте музыка играла в фоне. Но проблема была в том, что при перезагрузке страницы песня начинала играть с начала. А чтобы песня не играла по новой нужно было делать все через ajax. Так как было всего 5 страниц, то там проблем не было, все решалось простым модулем:


<?php

function ajax_links_init() {
    
drupal_add_js('misc/jquery.form.js');
    
drupal_add_library('system''drupal.ajax');
}

/**
 * Implements hook_menu().
 */

function ajax_links_menu() {
    
// A menu callback is required when using ajax outside of the Form API.
    
$items['pages'] = array(
        
'page callback' => 'ajax_links_response',
        
'access callback' => 'user_access',
        
'access arguments' => array('access content'),
        
'type' => MENU_CALLBACK,
    );
    return 
$items;
}
function 
ajax_links_response($type 'ajax'$nid 0) {
    
$output _ajax_links_loadernode($nid);
    if (
$type == 'ajax') {
        
$commands = array();
        
$commands[] = ajax_command_replace('#content''<div id="content">' $output '</div>');
        
$commands[] = ajax_command_changed('#content');
        
$commands[] = ajax_command_invoke(NULL"ajax_fade");
        
$page = array(
            
'#type' => 'ajax',
            
'#commands' => $commands
        
);
        
ajax_deliver($page);
    }
    else {
        
$output '<div id="content">' $output '</div>';
        return 
$output;
    }
}
function 
_ajax_links_loadernode($nid 0) {
    
    
$node node_load($nidNULLfalse);
    if (
$node) {
        
$vnode node_view($node);
        return 
theme("node"$vnode);
    }
    
    
//return views_embed_view('portfolio', 'page', $nid);
}
?>