X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Вопросы по Joomla, будь она неладна, Именно про кодинг, не плагины, компоненты и прочее
devuser
devuser
Topic Starter сообщение 18.4.2013, 0:02; Ответить: devuser
Сообщение #1


Все будет тип-топ
*****

Группа: Active User
Сообщений: 713
Регистрация: 5.12.2012
Из: Online
Поблагодарили: 342 раза
Репутация:   52  


Кратко, постановка вопроса: необходимо в своем PHP-скрипте иметь возможность получать категории сайта и постить материал в нужную категорию.
У кого есть вопросы "зачем" - могут посмотреть подпись. Пишу драйвер.

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

Сейчас действия провожу напрямую с БД, но хочу использовать (если они есть) встроенные функции фреймворка. Так как работа с БД напрямую, это
а. неудобно и избыточно
б. если поменяется структура БД, то поменяются и функции фреймворка, а мой скрипт отвалится.

На текущий момент конструктор класса выглядит так:
        define('_JEXEC', 1);
        define('DS', DIRECTORY_SEPARATOR);

        if (file_exists(__DIR__ . '/defines.php')) {
              include_once __DIR__ . '/defines.php';
        }

        if (!defined('_JDEFINES')) {
               define('JPATH_BASE', __DIR__);
               require_once JPATH_BASE . '/includes/defines.php';
        }

        require_once JPATH_BASE . '/includes/framework.php';

        $this->db = & JFactory::getDBO();


Функция получение категорий выглядит так:
        $this->db->setQuery("SELECT * FROM #__categories WHERE `extension` = 'com_content'");

        foreach ($this->db->loadAssocList() as $row)
            $this->categories[$row['id']] = $row;


Но хочется загрузить какую-то модельку в жумле, которая имеет функцию getCategories, например. Или addArticle для добавления статьи в нужную категорию.

Как так сделать? Как подключить этот фреймворк без лишнего, но со всем необходимым?
Приведенный пример под жумлу 3.03. Актуальны, в принципе, все основные ее версии, но хотелось бы пока остановиться на этой.

Всем заранее спасибо


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tszyan
tszyan
сообщение 18.4.2013, 2:38; Ответить: tszyan
Сообщение #2


Участник
***

Группа: User
Сообщений: 207
Регистрация: 28.1.2013
Из: Москва
Поблагодарили: 110 раз
Репутация:   27  


devuser,

Используйте класс JCategories.

Получаем корневую категорию:
$root = JCategories::getInstance('Content')->get('root');

Возвращаемый объект - класса JCategoryNode.
С помощью него можно получить дочерние категории и соответственно рекурсивно обойти все дерево.

В версии 3 файл с этими классами:
libraries\legacy\categories\categories.php
В версии 2.5:
libraries\joomla\application\categories.php

Подробности Вам станут ясны из кода этих файлов.

К сожалению, по установке окружения перед использованием данных классов не подскажу - никогда не заморачивался доступом к ним извне.
Вам может оказаться полезным этот запрос (гугл)

Сообщение отредактировал tszyan - 18.4.2013, 2:48


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
devuser
devuser
Topic Starter сообщение 19.4.2013, 16:27; Ответить: devuser
Сообщение #3


Все будет тип-топ
*****

Группа: Active User
Сообщений: 713
Регистрация: 5.12.2012
Из: Online
Поблагодарили: 342 раза
Репутация:   52  


Более не актуально. Сделал все напрямую через БД.

Будущим поколениям оставлю созданный класс. Материала по подобной теме не много, поэтому может кому и пригодится.
Смотрите во вложении.

Сообщение отредактировал devuser - 19.4.2013, 16:30
Прикрепленные файлы
Прикрепленный файл  JoomlaManual.zip ( 3,48 килобайт ) Кол-во скачиваний: 13
 


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 19.4.2013, 16:32; Ответить: x64
Сообщение #4


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3432
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2750 раз
Репутация:   289  


translit() на регулярках это, конечно, жёстко. старый добрый strtr() делает всё куда шустрее и проще


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
devuser
devuser
Topic Starter сообщение 19.4.2013, 16:36; Ответить: devuser
Сообщение #5


Все будет тип-топ
*****

Группа: Active User
Сообщений: 713
Регистрация: 5.12.2012
Из: Online
Поблагодарили: 342 раза
Репутация:   52  


x64, этой функции сто лет в обед. Работает - не тронь pardon.gif

Кстати, я не проверял, как работает старый добрый strtr на UTF-8 у хостеров, где не установлена локаль ( а таких встречал, поверьте ). Нет данных?

Сообщение отредактировал devuser - 19.4.2013, 16:41


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 19.4.2013, 17:16; Ответить: x64
Сообщение #6


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3432
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2750 раз
Репутация:   289  


вы же ведь имеете ввиду вариант 2 использования, а не 1? (:
strtr(string, string, string); # var 1
strtr(string, array); # var 2


в данном случае нет нужды заниматься такой фигнёй, как работа с локалью. код на utf-8, соответственно, функция и будет находить заданные вхождения (2 символьные) и заменять их на требуемое.

$arr1 = array(
    'А' => 'а',
    'Б' => 'б',
);
$str = 'БабА';
$str = strtr($str, $arr);
echo $str; # баба


если скрипт и обрабатываемая строка будут в одной кодировке, всё будет ок


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Услуги по CMS Wordpress, DLE, Joomla!. Правки, ремонт, настройка.
Редактирование и правки. Низкие цены.
143 contex1 65225 Вчера, 9:07
автор: contex1
Открытая тема (нет новых ответов) Не получается зайти в Joomla от имени админа
8 Bel_Ami 477 16.12.2017, 0:56
автор: anchous
Открытая тема (нет новых ответов) Адаптивная вёрстка и натяжка на Wordpress, DLE, Joomla и др. Создание мобильных версий.
Хороший код с оптимизацией по скорости. Сайты и лендинги "под ключ
15 Nell 1177 13.12.2017, 23:36
автор: Nell
Горячая тема (нет новых ответов) Вёрстка, натяжка на WordPress, Joomla, качественно, доступно
53 WhiteIce 23831 12.12.2017, 19:41
автор: WhiteIce
Горячая тема (нет новых ответов) Разработка сайтов Joomla Wordpress Opencart
Разработка, верстка, оптимизация веб сайтов.
48 WoWeb 7406 12.12.2017, 13:37
автор: serg5777


 



RSS Текстовая версия Сейчас: 18.12.2017, 7:12
Дизайн