Вы не зашли.
Страницы 1
Сегодня зашел глянуть какие изменения произошли за пол года. Очень понравилась навигация без перезагрузки страницы. Подобное есть уже во многих соц сетях. Захотелось сделать тоже самое. Время было поздно, как то обдумывать все моменты особо не получилось
Собственно собрал плагин:
add_act('core', 'test');
function test(){
global $SUPRESS_TEMPLATE_SHOW;
register_htmlvar("js", "/templates/sourceworld_ru/siteajax.js");
if(isset($_REQUEST['notpl'])){
$SUPRESS_TEMPLATE_SHOW = 1;
}
}
написал javascript код
nav = {
ajax: new sack(),
hash: window.location.hash.substring(1),
goto: function(goto){
document.getElementById('mainblock').innerHTML='<center><img src="/templates/default/images/loading.gif" alt=""/></center>';
this.ajax.requestFile = goto;
this.ajax.setVar("notpl", 1);
this.ajax.element = 'mainblock';
this.ajax.method = 'POST';
window.location.hash = "#"+goto.substring(("http://"+window.location.host).length);
scroll(0,0);
this.ajax.runAJAX();
},
init: function(){
if (this.hash != ''){
this.goto(this.hash);
}
}
}
window.onload = (function(){nav.init();});
Закинул, в шаблоне навешал на ссылки
onclick="nav.goto(this.href); return false;"
вроде работает. Есть конечно кое какие проблемы, типа "хлебные крошки" не подгружаються, или когда находишся на статической странице при переходе на главную не подгружает стили рейтинга.
Кто нибуть делал что то подобное без вмешательства плагинов, на javascript. Хочу взглянуть, так как мое решение не ахти)
как это всё работает можно взглянуть тут .
Изменено Knopik (2011-06-07 08:57:23)
Не в сети
KhadeR, спасибо, но это не совсем то)
Не в сети
Это все надо решать на уровне движка, который должен диктовать какую-то стратегию поведения для всех плагинов, потому что сейчас к тем же "Хлебным крошкам" нельзя обратиться через AJAX и получить обновленную информацию, одним JS тут нельзя обойтись. Оптимальный вариант это передача движку в AJAX запросе списка плагинов, от которых необходимо вернуть информацию, получаем обратно массив (а не только mainblock) и заменяем id=breadcrumbs -> массив['breadcrumbs'], id=mainblock -> массив['mainblock']. Сейчас получается, что движок один хрен делает все запросы для рендера страницы, а выводит только главную.
Не в сети
В принципе в моем случаем можно обойтись добавлением другого main.tpl, в котором оставить только {breadcrumbs}{mainblock}, и подправить код плагина.
add_act('core', 'test');
function test(){
global $SYSTEM_FLAGS;
register_htmlvar("js", "/templates/sourceworld_ru/siteajax.js");
if(isset($_REQUEST['notpl'])){
$SYSTEM_FLAGS['template.main.name']="main-ajax";
}
}
Не в сети
Это все надо решать на уровне движка, который должен диктовать какую-то стратегию поведения для всех плагинов, потому что сейчас к тем же "Хлебным крошкам" нельзя обратиться через AJAX и получить обновленную информацию, одним JS тут нельзя обойтись. Оптимальный вариант это передача движку в AJAX запросе списка плагинов, от которых необходимо вернуть информацию, получаем обратно массив (а не только mainblock) и заменяем id=breadcrumbs -> массив['breadcrumbs'], id=mainblock -> массив['mainblock']. Сейчас получается, что движок один хрен делает все запросы для рендера страницы, а выводит только главную.
Пожалуй соглашусь, что то на подобии нужно будет для одной идеи, но сам наверно не реализую
Не в сети
Страницы 1