1

Тема: AJAX

И все таки есть ли в Monstra полноценная поддержка ajax?
А если есть - как ее задействовать?

Например, хочу во всплывающем окне (facebox) показать текст.
Содержание текста нужно взять из, например, storage/text/...

Как это сделать???

Поделиться

2 2013-11-22 09:19:32

Re: AJAX

По какому критерию будет показано всплывающее окно (клик на ссылке/картинке или что-то другое)?

Поделиться

3 2013-11-22 11:41:17

Re: AJAX

И все таки есть ли в Monstra полноценная поддержка ajax?
А если есть - как ее задействовать?

Например, хочу во всплывающем окне (facebox) показать текст.
Содержание текста нужно взять из, например, storage/text/...

Как это сделать???

1. В факе смотрите как вызвать содержимое страницы, вписывайте этот код в сниппет.
    1.1 Или создайте блок с вашим текстом.
2. AJAX сделайте посредством Jqyery и вставьте на событие "нажатие" загрузку вашего сниппета или блока.

Ex ungue leonem

Поделиться

4 2013-11-25 03:40:01

Re: AJAX

Если делать так как описано в факе от facebox - имеем "картинку в картинке". Т.е. во всплывающем окне окрывается весь с сайт с шапкой и футером.
Сниппеты тоже не канают хотя бы по той причине, что мне нужно установить плагин, и как мне в этом случае автоматически установить и сниппет?

Критерий - "нажатие".

Поделиться

5 2013-11-25 03:57:33

Re: AJAX

Сниппеты тоже не канают хотя бы по той причине, что мне нужно установить плагин,

С этого момент а поподробнее, я что-то не очень понял, что и как нужно вызывать и какие критерии расширяемости. Вы хотите весь сайт сделать на Ajax?

В этом случае Вам потребуется чуть-чуть подправить плагин меню (в зависимости от схемы интеграции Ajax) и создать пустой шаблон который Вы будите назначать всем страницам кроме главной. И все.

Ex ungue leonem

Поделиться

6 2013-11-25 04:55:40

Re: AJAX

что мне нужно установить плагин

Тоже вопрос что за плагин, как он работает. Опишите точнее. Т.Е. к каким единицам информации и из какого плагина Вы хотели бы задействовать Ajax. Как должно взаимодействовать с админкой в идеальном варианте.

Ex ungue leonem

Поделиться

7 2013-11-25 06:41:37

Re: AJAX

Ну вот например такой плагин. Использовать следующим образом:

1. Скачать свежий фейсбокс.
2. Подключить евойные стили и код в темплейт как-то так:

Stylesheet::add('public/themes/default/facebox/facebox.css', 'frontend')

и

Javascript::add('public/themes/default/facebox/facebox.js', 'frontend')

3. Добавить JavaScript-код для инициализации facebox при загрузке страницы (например все ссылки у которых атрибут "class" имеет значение "facebox":

$(document).ready(function() 
{
  $('a[class="facebox"]').facebox();
});

4. В нужном месте на странице сделать ссылку с соответствующим атрибутом "class":

5. Enjoy!

Поделиться

8 2013-11-25 07:12:47

Re: AJAX

Есть такой плагин "facebox" - он позволяет показывать контент во всплывающем окне.

С успехом выводит изображения:

echo 'CLICK ME: ' .$row['id']. '';
Созданная коллекция ссылок (через foreach) отлично работает:

CLICK ME: 1
CLICK ME: 2
CLICK ME: 3
CLICK ME: 4
...
Этот плагин умеет выводить, например, результат работы какого-либо скрипта или просто html файла посредством AJAX:

echo 'CLICK ME'';

Но стоит сделать тоже самое, но в Monstra:

echo 'CLICK ME: ' .$row['id']. '';

Мы получим коллекцию ссылок, которые открывают всплывающее окно с... этим же сайтом. (Т.е. его шапка, тело, футер...)

Этот момент уже обсуждался на форуме и все сводилось к ковырянию в движке.
Так вот меня интересует - что-то поменялось? или мне и остальным также нужно ковырять в движке?

Поделиться

9 2013-11-25 07:20:49

Re: AJAX

razor, спс. Сейчас попробую разобраться во всем этом.

Поделиться

10

Re: AJAX

Вообще то обращаться напрямую в storage

xaoc пишет:

echo 'CLICK ME: ' .$row['id']. '';

запрещено (файл .htaccess). Этот каталог служит для хранения системных данных и обращаться к нему напрямую не является т.н. "хорошей практикой".

Поделиться

11 2013-11-25 09:27:57

Re: AJAX

Считаю изначально подход неверным. Вы пытаетесь вызывать info.txt определяя по $row['id'].  Проблема не в движке, а в подходе в виде костыля. Первое что Вам нужно определить - какой тип информации Вы хотите показывать в виде Ajax. Ваш же подход используется для сайтов без БД, на чистом php среднего уровня.

приемлемое решение - если это не весь сайт то взять плагин типа новости и использовать его как базу сделав плагин информация-аякс. Фактически, так можно сделать шорт коды вывода списка всех информация-аякс элементов, с назначенным пустым шаблоном (без шапки и футера, блоков) которые будут всплывать или открываться в определенном блоке на сайте (например в контенте) посредством Ajax с событием "нажатие". А все скрипты подключать непосредственно в этом измененном плагине.

Так что в плане поддержки Ajax у монстры проблем нет. Вопрос реализации.
Возникла идея сделать такой плагин, но обещать ничего не буду, потому как не знаю дойдут ли руки.

Ex ungue leonem

Поделиться

12 2013-11-27 05:33:30

Re: AJAX

razor пишет:

Вообще то обращаться напрямую в storage
запрещено (файл .htaccess). Этот каталог служит для хранения системных данных и обращаться к нему напрямую не является т.н. "хорошей практикой".

Ясно. Просто уже десятки способов перебрал.

Документация очень скудная, приходиться самому разбираться.

Поделиться

13 2013-11-27 05:36:52

Re: AJAX

Faust, понял вас очень поверхностно.
С примером от razor мне проще разобраться, но все равно без документации сложновато.

Поделиться

14 2013-11-27 08:30:32

Re: AJAX

razor, вы сами проверяли свой плагин-пример? У меня не работает. Открывает содержимое facebox.html на новой странице.

Поделиться

15 2013-11-27 10:45:19

Re: AJAX

xaoc пишет:

razor, вы сами проверяли свой плагин-пример? У меня не работает. Открывает содержимое facebox.html на новой странице.

Скорее всего вы забыли добавить скрипт, который привязывает facebox к ссылкам, либо у вас закэшировались старые файлы в . Для примера опишу последовательность действий для "чистой" инсталляции Monstra:

1. Инсталлируем "чистую" CMS, копируем в каталог файлы плагина ajax, заходим в админку и устанавливаем этот плагин в Монстру.

2. Распаковываем архив фейсбокса и кладем файлы из каталога архива по следующим адресам:

facebox.css" -> в каталог
loading.gif и closelabel.png - > в каталог
facebox.js -> в каталог

3. Теперь нужно в файле facebox.js подправить пути к картинкам, которые используются в интерфейсе окна фейсбокса. Прописываем пути относительно корневого каталога сервера в строках 88, 89 и 96 (например у меня монстра открывается по адресу http://localhost/monstra, значит путь от корня сервера будет выглядеть как /monstra):

      loadingImage : '/monstra/public/assets/img/loading.gif',
      closeImage   : '/monstra/public/assets/img/closelabel.png',
      

4. Теперь идем в каталог с дефолтной темой () и добавляем загрузку css и js скриптов:

4.1. В файл header.chunk.php добавляем перед строчкой

    

4.2. В файл footer.chunk.php добавляем следующие строчки перед :

    
    

5. В этом же каталоге () создаем подкаталог и создаем в нем файл с именем default.js и следующим содержимым (инициализация facebox'a по окончанию загрузки документа):

$(document).ready(function() 
{
  $('a[class="facebox"]').facebox();
});

6. Заходим в админку, редактируем страницу "Home", добавляем например в самый конец строчку:

и сохраняем страницу.

7. Кликаем сверху кнопку "Сайт", и кликаем по нашей свежедобавленной ссылке.

Поделиться

16 2013-11-27 10:57:11

Re: AJAX

ААА ладно.
Сделаю плагин меню ссылки с которого будут выводить контент в модальном окне посредством Ajax запроса.
К выходным сделаю. Возьму какой нибудь скрипт на основе jQuery. С недогруженным Jquery или отключенными на стороне клиента скриптами работать не будет.

Ex ungue leonem

Поделиться

17 2013-11-27 12:53:06

Re: AJAX

Хотя нет подождем новой версии монстра и на нее сделаю. Реально AJAX знаю плохо. Поэтому потребуется больше времени что бы разобраться.

Ex ungue leonem

Поделиться

18 2013-11-29 04:37:24

Re: AJAX

Повозился, теоретически сделать можно. Практически не удается передать link (slug) в php для выполнения скрипта загрузки нужной нас страницы без общего дизайна. В общем у меня знаний не хватает. Может кто сделать такое?

Ex ungue leonem

Поделиться

19 2013-11-29 10:53:09

Re: AJAX

Faust пишет:

Повозился, теоретически сделать можно. Практически не удается передать link (slug) в php для выполнения скрипта загрузки нужной нас страницы без общего дизайна. В общем у меня знаний не хватает. Может кто сделать такое?

Что именно?

Поделиться

20 2013-12-02 05:10:46

Re: AJAX

razor, все работает. А как мне провернуть тоже самое, только в админ-панели?

Поделиться

21 2013-12-04 01:54:23

Re: AJAX

Все. Подключил и к админке. RAZOR, еще раз спасибо!
Вот только жаль, что нельзя facebox подключить в плагине - у меня вышло только через подключение к шаблону

Поделиться

22 2013-12-05 06:30:36

Re: AJAX

Хм... сейчас я пытаюсь встроить подобное плагину от razor в свой плагин... Получается какая-то ерунда - facebox сработал, но запрос вернул 404... Вот скрин с firebug:

http://i60.fastpic.ru/big/2013/1205/2b/2e86d33a9472afc445c8e5289f555c2b.png

Поделиться

23 2014-02-26 18:58:19

Re: AJAX

Форум открылся вновь и поэтому новые вопросы для общего развития.

ajax.plugin.php

Что означает Строка 10
Plugin::Admin('ajax');

Строка 12
Action::add('frontend_pre_render','Ajax::handleRequest');

Строка 30
echo Filter::apply('content', Text::toHtml($block_contents));

Строка 40
Request::shutdown();

???

Поделиться

24 2014-02-26 22:16:44

Re: AJAX

Живой пример AJAX в Монстре - это плагин Pages
1 - https://github.com/Awilum/monstra-cms/b … min.php#L7
2 - https://github.com/Awilum/monstra-cms/b … hp#L24-L33
3 - https://github.com/Awilum/monstra-cms/b … s/pages.js

Follow me: Twitter | GitHub | Facebook | Вконтакте

Стань спонсором проекта!

Сайт Awilum

Поделиться

25

Re: AJAX

Awilum, я знаю что в данном плагине используется ajax. Только я пока не хотел туда лезть. Сложным показался на первый взгляд. Ну раз ты советуешь его "раскидать" - пожалуй займусь.

Поделиться