Загрузка страниц с Ajax!

Любая помощь по установке/настройке/модификации concrete5

Загрузка страниц с Ajax!

Сообщение sergio11ofpp » 12 июл 2013, 14:10 ,  »  Сообщение:#1

Пробую сдлеать при клике загрузку страницы с Ajax. Только вот не знаю в каком направление идти!
Мои предположения это создать в папке tool файл который будет тянуть
Код: Выделить всё
<?php
   $a = new Area('(в зависимости от клика)');
   $a->display($c);
         
?>

То есть если мы кликаем на ссылку О нас

Он передаёт какой нить аттрибут типо "about"
Обрабатываем
Код: Выделить всё
<?php
   $a = new Area('about');
   $a->display($c);
         
?>


И получаем обратно всю арею.
Только вот таким образом для каждой страницы придётся делать свой pagetype

Если у кого есть какие сображения по этому поводу буду презнателен!
Или просто я не так думаю и надо в другом направлении двигатся!
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка страниц с Ajax!

Сообщение guyasyou » 12 июл 2013, 14:30 ,  »  Сообщение:#2

Я так понимаю, грузить страницу с того же сайта на С5?
Может быть так:
при клике, ажакс идет на нужную страницу, и возвращает все его содержимое, а вы в js фильтруете ответ, чтобы отковырять лишь нужный вам html (не всю же страницу загружать, со всеми там header и т.п.).
а потом вывести этот html в нужном месте.

про то как фильтровать- я не знаю, но есть такое.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Загрузка страниц с Ajax!

Сообщение cmsservice » 12 июл 2013, 15:41 ,  »  Сообщение:#3

Тут есть несколько уточняющих вопроса:
  1. Вам нужно всю страницу забирать или какие-то конкретные области?
  2. На каком уровне Вы владеете PHP и JS?
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Загрузка страниц с Ajax!

Сообщение vbnm » 13 июл 2013, 00:05 ,  »  Сообщение:#4

очень нужная вещь в последнее время
очень хотца помотреть решение, если таковое будет найдено.
фильтры можно решить за счет модуля блок грабер, он на пхпквери, по сущетсву это парсинг
но белее качественно мне кажется использование XSL
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
и
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
vbnm
 
Сообщения: 462
Зарегистрирован: 02 июл 2011, 01:44

Re: Загрузка страниц с Ajax!

Сообщение Count_Raven » 13 июл 2013, 12:26 ,  »  Сообщение:#5

Нет, изначально неверный подход.

1. Идя в вашем направлении, вы убиваете возможность поисковикам индексировать ваш сайт. Поисковик по JavaScript-событиям шариться не будет.
2. Где-то на просторах интернета пару лет назад валялся простенький пример.
3. Что вам нужно (приблизительно):
- Все страницы являются обычными страницами, чтобы поисковые системы или пользователи с отключенным JavaScript нормально совершали навигацию по сайту.
- Ссылки в навигации являются обычными ссылками, ничего тут не меняем. Только добавляем к ним событие JavaScript onclick в котором отправляем AJAX-запрос к специальному tool (нам его надо написать), а в AJAX-запросе передаем href этой ссылки.
- Tool получает href ссылки, парсит его и получает объект страницы, которую нужно загрузить:
$page = Page::getByPath("/тут/будет/переменная/содержащая/путь/к/странице/из ссылки");
Получаем и отображаем area:
$a = new Area('Main');
$a->disableControls();
$a->display($page);
Area Main отправляется ответом AJAX и там у ссылки наш обработчик определяет место, где на странице этот контент должен отобразиться.

Можно также грузить не только Main, но и множество других Area, но тогда ответ нужно отдавать в JSON.
Еще можно сделать специальные атрибуты для страниц, в которых задавать параметры, что грузится через AJAX, а что нет или может быть для некоторых страниц нужно запретить загрузку через AJAX, к примеру, там будут сложные блоки, которые нельзя через AJAX, так как они добавляют в head контент, загружают еще какие-то скрипты, что-то инициализируют и не могут быть загружены через AJAX. И такие ссылки автоматически будут грузиться без AJAX.

Можно много чего прикрепить.

Ничего сложного в этом в принципе нет. Довольно элементарно.

P.S. Описанный пример я не тестировал, а сочинил прямо тут на форуме. Возможно в tool понадобится загрузить модели, может вам понадобится подключить какие-нибудь хелперы. Loader::model('collection'); Loader::model('page'); Loader::model('area'); ну и типа того. Надо на практике смотреть как будет.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Загрузка страниц с Ajax!

Сообщение Count_Raven » 13 июл 2013, 12:37 ,  »  Сообщение:#6

Не совсем то, но там есть мысли:
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Загрузка страниц с Ajax!

Сообщение sergio11ofpp » 19 июл 2013, 10:52 ,  »  Сообщение:#7

Спасибо всё понял. ПРосто обычно я создовал атрибут для страницы типо Rich Text Где юзер мог писать весь контент и лоодел его, а тут хочется что веь сайт был Аджакс.
Спасибо.
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка страниц с Ajax!

Сообщение Count_Raven » 19 июл 2013, 17:06 ,  »  Сообщение:#8

sergio11ofpp писал(а):Спасибо всё понял. ПРосто обычно я создовал атрибут для страницы типо Rich Text Где юзер мог писать весь контент и лоодел его, а тут хочется что веь сайт был Аджакс.
Спасибо.

Это не Concrete5-style. Выше я описал способ, как сделать весь сайт на AJAX без особых извращений.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Загрузка страниц с Ajax!

Сообщение sergio11ofpp » 24 июл 2013, 11:45 ,  »  Сообщение:#9

И ещё один вопросик. тоже про Ajax:
У меня в PHP:
Код: Выделить всё
    $path = ($_POST['path']);
    $page = Page::getByPath($path);
    $id = $page->getCollectionID();
    Loader::model('page_list');
   $pl = new PageList();
   $pl->filterByParentID($id);
   $results = $pl->getPage();
   echo json_encode($results);

В JS
Код: Выделить всё
success : function(data) {
  alert(data.cID);
}

Но я получаю "undefined"/

Я так понимаю это из-за того что я получаю Объект многих страниц а не 1 массив?
И как это можно исправить например мне нужно получить имена и url саб страниц.
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка страниц с Ajax!

Сообщение sergio11ofpp » 24 июл 2013, 12:14 ,  »  Сообщение:#10

Всё понял:
Код: Выделить всё
 $results = $pl->getPage();
$ret = array();
foreach ($results as $page) {
   $ret[] = array('cID'=>$page->getCollectionID(), 'name'=>$page->getCollectionName());
}
echo json_encode($ret);


Всё получается только надо сделать loop в JS
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка страниц с Ajax!

Сообщение Count_Raven » 24 июл 2013, 12:23 ,  »  Сообщение:#11

Угу.
Вы из pageList при помощи getPage получаете массив объектов Collection.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Загрузка страниц с Ajax!

Сообщение sergio11ofpp » 14 авг 2013, 11:09 ,  »  Сообщение:#12

Count_Raven писал(а):Нет, изначально неверный подход.

1. Идя в вашем направлении, вы убиваете возможность поисковикам индексировать ваш сайт. Поисковик по JavaScript-событиям шариться не будет.
2. Где-то на просторах интернета пару лет назад валялся простенький пример.
3. Что вам нужно (приблизительно):
- Все страницы являются обычными страницами, чтобы поисковые системы или пользователи с отключенным JavaScript нормально совершали навигацию по сайту.
- Ссылки в навигации являются обычными ссылками, ничего тут не меняем. Только добавляем к ним событие JavaScript onclick в котором отправляем AJAX-запрос к специальному tool (нам его надо написать), а в AJAX-запросе передаем href этой ссылки.
- Tool получает href ссылки, парсит его и получает объект страницы, которую нужно загрузить:
$page = Page::getByPath("/тут/будет/переменная/содержащая/путь/к/странице/из ссылки");
Получаем и отображаем area:
$a = new Area('Main');
$a->disableControls();
$a->display($page);
Area Main отправляется ответом AJAX и там у ссылки наш обработчик определяет место, где на странице этот контент должен отобразиться.

Можно также грузить не только Main, но и множество других Area, но тогда ответ нужно отдавать в JSON.
Еще можно сделать специальные атрибуты для страниц, в которых задавать параметры, что грузится через AJAX, а что нет или может быть для некоторых страниц нужно запретить загрузку через AJAX, к примеру, там будут сложные блоки, которые нельзя через AJAX, так как они добавляют в head контент, загружают еще какие-то скрипты, что-то инициализируют и не могут быть загружены через AJAX. И такие ссылки автоматически будут грузиться без AJAX.

Можно много чего прикрепить.

Ничего сложного в этом в принципе нет. Довольно элементарно.

P.S. Описанный пример я не тестировал, а сочинил прямо тут на форуме. Возможно в tool понадобится загрузить модели, может вам понадобится подключить какие-нибудь хелперы. Loader::model('collection'); Loader::model('page'); Loader::model('area'); ну и типа того. Надо на практике смотреть как будет.


В общем вчера попробывал этот способо не работает(((
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка страниц с Ajax!

Сообщение Count_Raven » 16 авг 2013, 12:19 ,  »  Сообщение:#13

Странно, у меня работает практически идентичный способ.

А что у вас там не работает? Какая-то ошибка или еще какая проблема?
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Загрузка страниц с Ajax!

Сообщение vbnm » 20 авг 2013, 00:31 ,  »  Сообщение:#14

sergio11ofpp
плиз, запакуй в архив все наработки и выложи, хотца добить эту тему, иль пойти другим путем. :D
vbnm
 
Сообщения: 462
Зарегистрирован: 02 июл 2011, 01:44

Re: Загрузка страниц с Ajax!

Сообщение sergio11ofpp » 21 авг 2013, 11:50 ,  »  Сообщение:#15

не то что доработка я пробывал так.
Код: Выделить всё
 var path = $(this).attr('href');
 dataString = 'path='+path;
$.ajax({
      опции;
      data:dataString,
      type:json,
     success:function(response){
        $('body').html(response);
    }
});


В PHP
Код: Выделить всё
<?php  defined('C5_EXECUTE') or die("Access Denied.");
    $path = ($_POST['path']);
    $page = Page::getByPath($path);
      $a = new Area('Main');
      $ret = $a->display($page);
echo json encode($ret);



Выдаёт Ошибку типо $page не являяется объектом

Хотя если я сделаю
Код: Выделить всё
rcho json encode($page);


То могу посмотреть cID, cName и так далее...
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

След.

Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

cron