Joomla Framework

Тема в разделе "Создание расширений для Joomla", создана пользователем tanyaromanyuk94, 08.10.2015.

  1. tanyaromanyuk94
    Offline

    tanyaromanyuk94 Пользователь

    Регистрация:
    02.09.2015
    Сообщения:
    42
    Симпатии:
    0
    История такова:
    Есть файл со скриптом, который должен при клике на кнопку выводитиь определенный пхп файл.
    Вот скрипт

    Код (javascript):
    1. jQuery(document).ready(function() {
    2.     jQuery('#class5').click(function() {
    3.         jQuery.ajax({
    4.             url:'/templates/at_conubia_free/filter.php',
    5.             type: 'POST',
    6.             success: function(data) {
    7.                 jQuery('#tables').text(data);
    8.             }
    9.         });
    10.     });
    11. });

    Код (PHP):
    1. <?php
    2. // Подключаемся к базе данных
    3. $db = JFactory::getDbo();
    4. // Создаем новый объект запроса
    5. $query = $db->getQuery(true);
    6. $query
    7.     ->select(array('b.introtext', 'b.metakey'))
    8.     ->from('#__content AS b')
    9.     ->where('b.metakey LIKE \'b%\'')
    10.     ->order('b.created DESC');
    11. // Устанавливаем запрос
    12. $db->setQuery($query);
    13. //Загружаем результаты как список stdClass объектов.
    14. $results = $db->loadObjectList();
    15. ?>
    16. <pre>
    17. <?php
    18. print_r($results);?>
    19. </pre>

    Скрипт работает.
    Но. После нажатия на кнопку выводилась ошибка
    Class 'JFactory' not found
    После чего гугл мне выдал, что мне нужно фреймворк подключить.
    Решение было перед пхп кодом вставить этот код

    Код (PHP):
    1. define('_JEXEC', 1);
    2. define('JPATH_BASE', dirname(__FILE__));
    3. define('DS', DIRECTORY_SEPARATOR);
    4.  
    5. /* Required files */
    6. require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
    7. require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';


    После чего выводит ошибку
    Код (html):
    1. 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
    2. 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
     
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    и будет такую ошибку выводить!
    разбираем последний код php:
    Код (PHP):
    1. define('JPATH_BASE', dirname(__FILE__));

    это определение переменной JPATH_BASE в которую вносится данное местоположение файла из которого была вызвана переменная __FILE__, а это /templates/at_conubia_free/filter.php (убираем имя файла и получаем путь)
    смотрим дальше (для наглядности распишу сразу с путями):
    Код (PHP):
    1. require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
    - /templates/at_conubia_free/includes/defines.php
    Код (PHP):
    1. require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';
    - /templates/at_conubia_free/includes/framework.php

    а на самом деле эти файлы файлы лежат в /includes/ начиная с корня сайта!

    прежде чем вставлять такого рода куски скриптов, надо хотя бы немного знать что у содержится в константах (define)
     
    shurikkan нравится это.
  4. tanyaromanyuk94
    Offline

    tanyaromanyuk94 Пользователь

    Регистрация:
    02.09.2015
    Сообщения:
    42
    Симпатии:
    0


    Еще один вопрос. /templates/at_conubia_free/includes/defines.php - это вместо чего?
    Если можна как вот оно должно в целом выглядеть
     
  5. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    поищи в своём шаблоне папку includes с файлом defines
    нету?!

    такое возможно только при вызове из корня сайта
    Код (PHP):
    1. define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT']);

    и возможно ещё слэш правый понадобится в конце ($_SERVER['DOCUMENT_ROOT'].DS)
    и что бы можно было DS использовать поставь его определение после JEXEC
     
  6. tanyaromanyuk94
    Offline

    tanyaromanyuk94 Пользователь

    Регистрация:
    02.09.2015
    Сообщения:
    42
    Симпатии:
    0
    Файл defines есть.

    Вопрос как прописать вот эти строчки
    1. require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
    2. require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';

      Изменила
    Код (PHP):
    1. define('JPATH_BASE',dirname(__FILE__));

    на
    Код (PHP):
    1. define('JPATH_BASE', dirname(__templates/at_conubia_free/filter.php__));


    Все остальное оставила без изменений.
    В итоге выглядит так:
    Код (PHP):
    1. <?php
    2. define('_JEXEC', 1);
    3. define('JPATH_BASE', dirname(__templates/at_conubia_free/filter.php__));
    4. define('DS', DIRECTORY_SEPARATOR);
    5.  
    6. /* Required files */
    7. require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
    8. require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';



    Ошибка:
    Код (html):
    1. <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
    Вопрос просто в том - как правильно прописать в моем случае этот фреймворк?
     
  7. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    @tanyaromanyuk94, "епонский городовой"|H|
    я ж прям дал 100% рабочий пример строки с определением константы JPATH_BASE
    не читается вообще что ли?
    --- добавлено: 08.10.2015, первое сообщение размещено: 08.10.2015 ---
    это файл шаблона, а не системы!
     
    Последнее редактирование: 08.10.2015
  8. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Назовите тему нормально, чтобы было понятно о чём написано внутри и соответствовало правилам форума.
     

Поделиться этой страницей

Загрузка...