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
Сообщений: 3544
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2881 раз
Репутация:   294  


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
Сообщений: 3544
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2881 раз
Репутация:   294  


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыВопросы по Региональности сайта
регион, региональность, местоположение
2 Alexey_kzn 717 18.5.2018, 11:37
автор: Alexey_kzn
Открытая тема (нет новых ответов) Нарисовать и сверстать дизайн под joomla
0 arad 311 15.5.2018, 9:53
автор: arad
Открытая тема (нет новых ответов) Вопросы обо всем: AMP, Турбостраницы и мобильная оптимизация
и вконтакте с его Прометеем и советом использовать amp
4 coremission 1274 5.5.2018, 15:24
автор: VadymO
Горячая тема (нет новых ответов) Разработка сайтов Joomla Wordpress Opencart
Разработка, верстка, оптимизация веб сайтов.
54 WoWeb 9778 3.5.2018, 21:59
автор: _fan_
Горячая тема (нет новых ответов) Услуги по CMS Wordpress, DLE, Joomla!. Правки, ремонт, настройка.
Редактирование и правки. Низкие цены.
155 contex1 70721 26.4.2018, 14:59
автор: contex1


 



RSS Текстовая версия Сейчас: 21.5.2018, 21:41
Дизайн