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



 

Здравствуйте, гость (

| Вход | Регистрация )

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


Кратко, постановка вопроса: необходимо в своем 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


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


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

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

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


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


translit() на регулярках это, конечно, жёстко. старый добрый strtr() делает всё куда шустрее и проще
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
devuser
devuser
Topic Starter сообщение 19.4.2013, 16:36; Ответить: devuser
Сообщение #5


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

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

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


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


вы же ведь имеете ввиду вариант 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; # баба


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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Если статья не в индексе Google - она уникальна или нет?
5 uahomka 1432 3.4.2024, 23:56
автор: Liudmila
Горячая тема (нет новых ответов) Разработка сайтов Joomla Wordpress Opencart
Разработка, верстка, оптимизация веб сайтов.
77 WoWeb 40425 3.9.2023, 16:52
автор: Sawich
Открытая тема (нет новых ответов) [Продам] базы сайтов на CMS Wordpress/Joomla/Drupal/Magento/...
14 phosphoruss 13762 16.8.2023, 15:27
автор: SmmPanelUS
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыТехподдержка сайтов на движках Joomla, Netcat, Opencart
5 54web 4288 22.1.2023, 13:27
автор: kikimora17
Открытая тема (нет новых ответов) TrendCPA - Будь в тренде!
1 TrendCPA 2263 22.4.2021, 18:39
автор: TrendCPA


 



RSS Текстовая версия Сейчас: 18.4.2024, 9:31
Дизайн