Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 2214 Просмотров
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Всем привет, подскажите как создать свой компонент в Joomla, для добавления функционала, чтобы не хакать ядро?
На примере JoomShopping - в папке controllers создаешь свой файл с классом, и к нему уже можно обратиться по ссылке..
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Свой компонент или контроллер?
« Ответ #2 : 26.09.2014, 19:42:26 »
http://joomlablog.ru/dokumentatsiya/dlya-razrabotchika
Да, я читал уже все там, но именно такого варианта там нет..

т.е. мне надо просто добавить файл, чтобы можно было обращаться по ссылке типа:
print SEFLink('index.php?option=com_jshopping&controller=мойфайл&task=мояфункциявфайле');
Так нельзя никак?

Вот эта статья вообще в закладках - http://joomlablog.ru/dokumentatsiya/dlya-razrabotchika/rabota-s-bazoj-dannykh/505-jdatabasedriver-vyborka-dannykh-i-poluchenie-rezultata - я из нее понял что оказывается бывают разные результаты, строка, массив, один результат и пр..))
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Свой компонент или контроллер?
« Ответ #3 : 26.09.2014, 20:09:12 »
А что Вы хотите получить в итоге? Что должно стать результатом такого обращения? Вызов url должен возвращать фронт-результат.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Свой компонент или контроллер?
« Ответ #4 : 26.09.2014, 20:12:03 »
Так в чем проблема?
Создаете файл с "мойКонтроллер.php"
В нем создаете класс:
class jshoppingControllerМойКонтроллер extends JControllerLegacy{
   publick function myTask(){
     echo '234';
   }
}

А дальше JRoute::_('index.php?option=com_jshopping&task=мойКонтроллер.myTask')

и не понятна задача.. если вам например просто что то вывести из базы надо, то вам нужен вид и модель, если что то сделать (например удалить что то из корзины то контроллер)
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Свой компонент или контроллер?
« Ответ #5 : 26.09.2014, 23:33:34 »
Так в чем проблема?
Создаете файл с "мойКонтроллер.php"
В нем создаете класс:
class jshoppingControllerМойКонтроллер extends JControllerLegacy{
   publick function myTask(){
     echo '234';
   }
}
А дальше JRoute::_('index.php?option=com_jshopping&task=мойКонтроллер.myTask')
и не понятна задача.. если вам например просто что то вывести из базы надо, то вам нужен вид и модель, если что то сделать (например удалить что то из корзины то контроллер)

Во, спасибо..)
Задача - добавление какого нибудь функционала, пока незнаю какого, в админке что нить добавить, тот же поиск или проч..

Так, а куда его ложить то?
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Свой компонент или контроллер?
« Ответ #6 : 27.09.2014, 00:36:37 »
Задача - добавление какого нибудь функционала, пока незнаю какого, в админке что нить добавить, тот же поиск или проч..
Вы бы тогда сначала с функционалом бы определились.

Так, а куда его ложить то?
В зависимости от того, где функционал требуется:
в админке: /administrator/components/com_jshopping/controllers/
фронт: /components/com_jshopping/controllers/

Файл только назовите как-нибудь изощреннее, чтобы у разработчиков jshopping и в мыслях не было придумать такое, а то они, в свою очередь, при очередном расширении функционала могут что-то одноименное добавить ))
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Свой компонент или контроллер?
« Ответ #7 : 27.09.2014, 00:48:04 »
А блин, нет, я не внимательно ответ прочел, горячка сделала свое.. Мне тоже самое надо, но только именно для самой Joomla, т.е. не для JoomShopping, там сделал так давно уже.. ))

Его использую для AJAX поиска, чтобы ядро не хакать, и смену раскладки тоже там прописал..

Файл только назовите как-нибудь изощреннее
У меня popa.php называется..)
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Свой компонент или контроллер?
« Ответ #8 : 27.09.2014, 01:16:39 »
У меня popa.php называется..)
Ага, как только пользователь на сайте что-то не то сделал, туда его и пошлете ))

Мне тоже самое надо, но только именно для самой Joomla
Тогда к основному шаблону привязываться, иначе это будет уже хак ядра, имхо.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Свой компонент или контроллер?
« Ответ #9 : 27.09.2014, 01:35:50 »
Тогда к основному шаблону привязываться, иначе это будет уже хак ядра, имхо.
Кстати да, я видал как то, где то в шаблонах файл functions.php, как сделать чтобы он работал с $db = JFactory::getDbo(); ?
Я вначале думал в папку куда нибудь, в libraries или в includes такой файл поместить чтобы он работал с $db = JFactory::getDbo() и прочими штуками Joomla..

А то я все делаю прям в файлах где нужно...)
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Свой компонент или контроллер?
« Ответ #10 : 27.09.2014, 14:44:21 »
Так подключите фреймворк внутри вашего .php
Код: php
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');
JFactory::getApplication('site')->initialise();
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Свой компонент или контроллер?
« Ответ #11 : 27.09.2014, 23:32:53 »
Так подключите фреймворк внутри вашего .php
Код: php
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');
JFactory::getApplication('site')->initialise();
Такое не сработает. JPATH_BASE не определена. Поэтому после
Код: php
define('DS', DIRECTORY_SEPARATOR);
надо добавить
Код: php
define('JPATH_BASE', __DIR__);

Это случай, когда сторонний файл находится в корне. Если же он там не находится, то необходимо внести изменение в:
Код: php
define('JPATH_BASE', __DIR__);
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Свой компонент или контроллер?
« Ответ #12 : 27.09.2014, 23:58:55 »
добавлю у меня JFactory::getApplication('site')->initialise(); цепочка вызовов было не работало
и в плагине выглядело так
Код: php-brief
<?php
/* Защита от дурака с помощью [url=http://ru.wikipedia.org/wiki/CURL]cURL[/url] легко обойтию Данные принимаются аяксом*/
(isset($_SERVER['HTTP_X_REQUESTED_WITH'])
    && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') or die;
define('_JEXEC', 1);
// это плагин соответственно множественное dirname дает путь к корню
define('JPATH_BASE', dirname(dirname(dirname(dirname(__FILE__)))));
define('DS', DIRECTORY_SEPARATOR);
$path = JPATH_BASE . DS . 'includes' . DS;
// once использовать необязательно, не думаю, что вы подключите файлы фреймворка дважды
require($path . 'defines.php');
require($path . 'framework.php');
$app = JFactory::getApplication('site');
$app->initialise();
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Свой компонент или контроллер?
« Ответ #13 : 28.09.2014, 06:32:38 »
А какой тип расширения делает AJAX запросы? Имхо мы тут костыли выдумываем когда все есть готовое.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Свой компонент или контроллер?
« Ответ #14 : 28.09.2014, 13:23:11 »
Про какие костыли ты здесь пишешь. Если про новый компонент AJAX, то пожалуйста хочешь использовать используй его (на 2 шага больше)
То же подключение фреймворка, а затем контроллер, контроллер компонента AJAX, и уже твое приложение.
Это самый быстрый способ получить точку входа.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Свой компонент или контроллер?
« Ответ #15 : 28.09.2014, 14:32:06 »
Например с AJAX запросом обратиться к файлу, чтобы чтото получить из базы, ну или добавить, например проверка логина при регистрации и пр, функцию окончаний там прописать (статья, статей, статьи)..

Может еще че, просто вышло уже два обновления, а я не обновлялся..
Похоже пока что нибудь доделаю, уже Joomla 4 выйдет..))
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Свой компонент или контроллер?
« Ответ #16 : 28.09.2014, 17:58:24 »
Например с AJAX запросом обратиться к файлу, чтобы чтото получить из базы, ну или добавить, например проверка логина при регистрации и пр, функцию окончаний там прописать (статья, статей, статьи)..

Может еще че, просто вышло уже два обновления, а я не обновлялся..
Похоже пока что нибудь доделаю, уже Joomla 4 выйдет..))
Я не зря про тип расширения спрашивал, из компонентов можно обратиться к контроллеру этого-же компонента, который сам написал, из модулей и плагинов - через com_ajax.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Свой компонент или контроллер?
« Ответ #17 : 28.09.2014, 18:33:57 »
Такое не сработает. JPATH_BASE не определена. Поэтому после
Код: php
define('DS', DIRECTORY_SEPARATOR);
надо добавить
Код: php
define('JPATH_BASE', __DIR__);
Да, упустил момент с определением JPATH_BASE

Это случай, когда сторонний файл находится в корне. Если же он там не находится, то необходимо внести изменение в:
Код: php
define('JPATH_BASE', __DIR__);
Так именно корень и надо получить. Здесь, имхо, надо тогда жестко знать самому файлу, где именно он располагается, и соответственно получать корень:
Код: php
define('JPATH_CURRENT', __DIR__);
define('JPATH_BASE', JPATH_CURRENT.DS.'..'.DS.'..'.DS.'..'); // for front
define('JPATH_BASE', JPATH_CURRENT.DS.'..'.DS.'..'.DS.'..'.DS.'..'); // for admin
(конкретно пример под случай ТС)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Добавление нового типа пункта меню в ваш компонент Joomla

Автор RexNebular

Ответов: 3
Просмотров: 1076
Последний ответ 02.10.2017, 19:04:16
от Septdir
Как добавить в меню ссылку на компонент ?

Автор антигерой

Ответов: 36
Просмотров: 3103
Последний ответ 31.01.2017, 13:05:13
от dmitry_stas
Новым компонент для Joomla 3.6

Автор phpCoder

Ответов: 16
Просмотров: 1546
Последний ответ 06.10.2016, 23:35:44
от vipiusss
Страничка на PHP ( html) в компонент

Автор Yomoto

Ответов: 1
Просмотров: 898
Последний ответ 17.05.2016, 01:45:18
от Septdir
Как подключить к админке модуля свой CSS?

Автор zeus07

Ответов: 14
Просмотров: 2445
Последний ответ 22.03.2016, 00:51:36
от zeus07