Я робив багато публікацій на drupal.org на цю тему, але, на жаль, у неправильному контексті.
- Вкладений вміст не додає потрібних JS та CSS (форум)
- Вкладений вміст не додає потрібні JS та CSS (випуск)
Я думаю, що це не проблема, тому я спробую це з іншим підходом, і, можливо, це може бути рішенням. Завантаження всієї сторінки PHP та витягнення певного дива з ajax не спрацювало правильним чином. Тож я подумав, що я можу дозволити друпалу завантажувати лише вміст і вводити його в Ajax у діві. Я зробив запит за допомогою гачки_preprocess_page та kuke_preprocess_node, яка шукає "ajax = 1" у запитуваній URL-адресі, а потім видає лише вміст без усієї сторінки. І тепер, за допомогою певних файлів tpl.php, теоретично я міг обмежити вихід drupal лише на $ вміст. І ось проблема. Мій підхід працює навіть тоді, коли я залишаю файли tpl.php оригінальним способом, але видаляючи "$ content" з node-ajax.tpl.php. "Працюючи правильно", я маю на увазі, що drupal не перезавантажує всю сторінку, але звичайно не зміст. Але я не можу пояснити це самому, викликати в змінній $ content, так що я думав, це лише html створеного контенту. Отже, моє запитання полягає в тому, як я можу обмежити випуск drupal лише вмістом, чи я роблю неправильні кроки, щоб це працювати. Ось модуль та js-файл, який я використовую: my_ajax.module:
<?php
function my_ajax_init()
{
drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js');
}
function my_ajax_preprocess_page(&$vars, $hook)
{
if (isset($_GET['ajax']) && $_GET['ajax'] == 1)
{
$vars['template_file'] = 'page-ajax';
}
}
function my_ajax_preprocess_node(&$vars, $hook)
{
if (isset($_GET['ajax']) && $_GET['ajax'] == 1)
{
$vars['template_file'] = 'node-ajax';
}
}
my_ajax.js:
Drupal.behaviors.my_ajax = function (context) {
$('#content-group-inner .node a').live('click', function (e) {
var url = $(this).attr('href');
//$('#content-region-inner').slideUp('slow');
$('#content-region-inner').empty().html('<img src="ajax-loader.gif" style="margin-left:50%;"/>');
xhr = $.ajax({
data: 'ajax=1',
type: 'GET',
url: url,
success: function (data) {
$('#content-region-inner').html(data);
Drupal.attachBehaviors(context);
}
});
return false;
});
};
Будь ласка, допоможіть мені в цьому. Кожна пропозиція цінується.