Как сделать файл частью Joomla?

Этот вопрос может показаться немного глупым, но я новичок в Joomla!

И я редактирую текущий компонент, который я хочу в какой-то момент вызвать небольшим файлом php, который выводит данные. Теперь в этом файле я хочу использовать классы и функции joomla для базы данных, такие как setQuery и т. д.

и я хочу, чтобы он читал префикс joomla ( #__ ). и файл создан мной, поэтому я задавался вопросом, что мне нужно включить и как.

Кто-нибудь может сказать мне, как это сделать?

Заранее спасибо, Эрик


person eric.itzhak    schedule 20.11.2011    source источник


Ответы (4)


Лучше не включать "внешние" php файлы, я имею в виду файлы вне структуры Joomla. Но если вы все еще хотите это сделать, вы можете просто подключить этот php-файл из любого места, где он вам нужен, и у вас будут доступны все классы и функции Joomla, если вы включите этот файл из другого тайла Joomla (возможно, точка входа вашего компонента, контроллер, модель, представление и т. д.). Кроме того, если ваш файл выводит данные, лучшим местом для их включения будет шаблон внутри вашего компонента. Если вы используете его в любом другом месте, вы должны получить вывод для этого файла (например, с помощью методов ob_start(), ob_get_contents()) и сохранить их в какую-то переменную для вывода из шаблона. Я думаю, вы, вероятно, уже знаете, как включить этот файл, но если, например, ваш файл находится в папке «mylibs» внутри корня joomla, вы должны включить его следующим образом:

include JPATH_ROOT . DS . 'mylibs' . DS . 'myfile.php';

Почему вам нужно включить этот файл, и его невозможно отобразить как шаблон?

Я надеюсь, что это помогло.

person alghimo    schedule 20.11.2011
comment
Я не хочу включать его, я хочу вызвать его с помощью вызова XmlHtppRequest - person eric.itzhak; 01.12.2011

Что ж, ответ альгимо привел меня к написанию этого:

    define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

/* Create the Application */
$mainframe =& JFactory::getApplication('site');

Но как указано. не рекомендуется это делать.

person eric.itzhak    schedule 05.01.2012

Лучше всего использовать расширение, такое как Sourcer или Jumi.

http://extensions.joomla.org/extensions/edition/custom-code-in-content

Хорошо для начала, прежде чем писать «настоящие» устанавливаемые компоненты Joomla, модули, плагины и т. д.

person idea34    schedule 20.11.2011
comment
Привет, idea34, мне не нужно вставлять код в контент. у меня есть компонент, я просто хочу добавить небольшой файл php, который вызывается XmlHttpRequest. - person eric.itzhak; 30.11.2011

Я думаю, что лучшим способом будет переопределение вывода. Просмотрите документацию. Таким образом, вам не нужно редактировать основное расширение joomla (конечно, теперь, когда я присмотрюсь немного ближе, вы не говорите, что редактируете основное расширение). В любом случае, переопределение вывода — это довольно круто, вы используете функциональность расширения, но вам нужно выполнить окончательную модификацию.

В вашей текущей папке шаблона создайте папку с именем «html», затем взгляните на ссылку (или другой шаблон, например beez), чтобы определить структуру папки для конкретного расширения, которое вы переопределяете. Затем вы можете вызвать скрипт из этого переопределения со всеми функциями joomla и без взлома ядра.

person john    schedule 29.11.2011