Ниже приведен самый общий пример использования Ajax.
<?php # Подключение файла blox.ajax.js в заголовке страницы Blox::addToHead(Blox::info('cms','url').'/assets/blox.ajax.js'); # Кнопка управления echo "<span onclick='Blox.ajax(\"templates/src.htm\", \"dst\");'>Заменить</span>"; ?>dst.tpl
<?php . . . # Контейнер назначения echo "<div id='dst'>Содержимое по умолчанию</div>"; . . . ?>src.htm (источник контента)
Этот html-код будет вставлен<br /> в элемент <i>dst</i><br /> блока с шаблоном <i>dst.tpl</i>.
В данном примере источник выдает статичный контент. На практике для генерации контента лучше использовать php-файлы. Однако, если в этом php-файле нужно обращаться к базе данных или сессии, то придется писать скрипты для подключения базы данных и сессии, а также учесть другие мелочи (в частности, учесть особенности кодировки UTF-8).
В таких случаях в качестве источника контента лучше использовать обычный блок, о чем читайте ниже.
Обратиться можно к любому блоку сайта, даже к блокам на других страницах (кроме скрытых).
<?php Blox::addToHead(Blox::info('cms','url').'/assets/blox.ajax.js'); echo "<span onclick='Blox.ajax(\"?block=2\", \"dst\");'>Заменить</span>"; ?>dst.tpl
<?php
. . .
echo "<div id='dst'>Содержимое по умолчанию</div>";
. . .
?>
Как использовать блок в качестве источника, читайте в статье Вывод отдельного блока.
В приведенном ниже примере содержимое блока 24 заменяется блоком 25.
<?php echo "<span onclick='Blox.ajax(\"?block=25\", \"24\");'>Заменить</span>"; ?>
dst.tpl | dst.tdd |
<?php
# Это блок 24
echo "Содержимое по умолчанию";
?>
|
<?php
$params['dst'] = true;
?>
|
Когда в дескрипторе шаблона объявлен параметр $params['dst'], блок при выводе автоматически помещается в контейнер вида <div id='blox-dst-24'>...</div>
, где, 24 - номер блока.
То есть, специально создавать элемент назначения не требуется.
Параметр $params['dst'] можно использовать для создания контейнера и при работе с ajax из других библиотек, например jQuery.ajax().
Дело в том, что, если в качестве назначения применять не специальный контейнер, а самый верхний div шаблона, то при обновлении, блок окажется вложенным два раза в один и тот же div.
Можно обойтись и без параметр $params['dst'], если в качестве назначения применять div из родительского блока.
При объявлении параметра $params['dst'], не требуется специально инициализировать функцию Blox.ajax(), это будет сделано автоматически.
Наиболее простой и одновременно наиболее полезный пример применения Ajax в системе Blox CMS демонстрирует следующий код:
<?php echo " <span onclick='Blox.ajax(\"?block=$block&sort[1]\");'>Сортировать</span> "; ?>test.tdd
<?php
$types[1] = 'varchar(255)';
$params['dst'] = true;
?>
Как Вы, наверное, заменили, у функции Blox.ajax() здесь используется только один параметр, который является обычным запросом к блоку.
$params['dst'] = true;
Blox.ajax('?block=...')
. В качестве параметра этой функции используйте обычный запрос* к блоку, который должен обновляться.
<?php echo " <span onclick='Blox.ajax(\"?block=2&sort[1]=asc\"); Blox.ajax(\"?block=3&pick[1]=Иванов\")' >Кликни</span> "; ?>
test1.tdd | test2.tdd |
<?php
$types[1] = 'varchar(255)';
$params['dst'] = true;
?>
|
<?php
$types[1] = 'varchar(255)';
$params['dst'] = true;
?>
|
<span>
, в стиль которого необходимо добавить свойства курсора.
Впрочем, на практике используется другой код, приведенный в следующей статье – там используется тег <a>
.