История такова: Есть файл со скриптом, который должен при клике на кнопку выводитиь определенный пхп файл. Вот скрипт Спойлер: Скрипт Код (javascript): jQuery(document).ready(function() { jQuery('#class5').click(function() { jQuery.ajax({ url:'/templates/at_conubia_free/filter.php', type: 'POST', success: function(data) { jQuery('#tables').text(data); } }); }); }); Спойлер: Код пхп файла Код (PHP): <?php // Подключаемся к базе данных $db = JFactory::getDbo(); // Создаем новый объект запроса $query = $db->getQuery(true); $query ->select(array('b.introtext', 'b.metakey')) ->from('#__content AS b') ->where('b.metakey LIKE \'b%\'') ->order('b.created DESC'); // Устанавливаем запрос $db->setQuery($query); //Загружаем результаты как список stdClass объектов. $results = $db->loadObjectList(); ?> <pre> <?php print_r($results);?> </pre> Скрипт работает. Но. После нажатия на кнопку выводилась ошибка Class 'JFactory' not found После чего гугл мне выдал, что мне нужно фреймворк подключить. Решение было перед пхп кодом вставить этот код Код (PHP): define('_JEXEC', 1); define('JPATH_BASE', dirname(__FILE__)); define('DS', DIRECTORY_SEPARATOR); /* Required files */ require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php'; require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php'; После чего выводит ошибку Код (html): Warning: require_once(H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\includes\defines.php): failed to open stream: No such file or directory in <b>H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\filter.php on line8 Fatal error: require_once(): Failed opening required 'H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\includes\defines.php' (include_path='.;c:\php55\includes;c:\php55\pear') in H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\filter.php on line 8
и будет такую ошибку выводить! разбираем последний код php: Код (PHP): define('JPATH_BASE', dirname(__FILE__)); это определение переменной JPATH_BASE в которую вносится данное местоположение файла из которого была вызвана переменная __FILE__, а это /templates/at_conubia_free/filter.php (убираем имя файла и получаем путь) смотрим дальше (для наглядности распишу сразу с путями): Код (PHP): require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php'; - /templates/at_conubia_free/includes/defines.php Код (PHP): require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php'; - /templates/at_conubia_free/includes/framework.php а на самом деле эти файлы файлы лежат в /includes/ начиная с корня сайта! прежде чем вставлять такого рода куски скриптов, надо хотя бы немного знать что у содержится в константах (define)
Еще один вопрос. /templates/at_conubia_free/includes/defines.php - это вместо чего? Если можна как вот оно должно в целом выглядеть
поищи в своём шаблоне папку includes с файлом defines нету?! такое возможно только при вызове из корня сайта Код (PHP): define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT']); и возможно ещё слэш правый понадобится в конце ($_SERVER['DOCUMENT_ROOT'].DS) и что бы можно было DS использовать поставь его определение после JEXEC
Файл defines есть. Вопрос как прописать вот эти строчки require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php'; require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php'; Изменила Код (PHP): define('JPATH_BASE',dirname(__FILE__)); на Код (PHP): define('JPATH_BASE', dirname(__templates/at_conubia_free/filter.php__)); Все остальное оставила без изменений. В итоге выглядит так: Код (PHP): <?php define('_JEXEC', 1); define('JPATH_BASE', dirname(__templates/at_conubia_free/filter.php__)); define('DS', DIRECTORY_SEPARATOR); /* Required files */ require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php'; require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php'; Ошибка: Код (html): <br /> <b>Warning</b>: Division by zero in <b>H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\filter.php</b> on line <b>3</b><br /> <br /> <b>Warning</b>: Division by zero in <b>H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\filter.php</b> on line <b>3</b><br /> <br /> <b>Warning</b>: require_once(.\includes\defines.php): failed to open stream: No such file or directory in <b>H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\filter.php</b> on line <b>7</b><br /> <br /> <b>Fatal error</b>: require_once(): Failed opening required '.\includes\defines.php' (include_path='.;c:\php55\includes;c:\php55\pear') in <b>H:\root\home\deltaunion2-001\www\site1\templates\at_conubia_free\filter.php</b> on line <b>7</b><br /> --- добавлено: 08.10.2015, первое сообщение размещено: 08.10.2015 --- @woojin Вопрос просто в том - как правильно прописать в моем случае этот фреймворк?
@tanyaromanyuk94, "епонский городовой" я ж прям дал 100% рабочий пример строки с определением константы JPATH_BASE не читается вообще что ли? --- добавлено: 08.10.2015, первое сообщение размещено: 08.10.2015 --- это файл шаблона, а не системы!
и возможно ещё слэш правый понадобится в конце ($_SERVER['DOCUMENT_ROOT'].DS) и что бы можно было DS использовать поставь его определение после JEXEC Ссылки удалил. М.