Кто-нибудь знает, как правильно вставлять новые категории контента в БД программно? Для каждого сообщения в таблице категорий также сохраняется сообщение, сохраненное в таблице активов с набором lft и rgt. Есть ли какой-либо родной класс Joomla, который я могу использовать для этого вместо простого SQL?Как добавить категории в Joomla 2.5
ответ
Возможно, вы используете save() в категории.php. расположение
Файл: root\administrator\components\com_categories\models\category.php
Он сохраняет данные формы, подаваемые на него!
Таблица JOS_assets предназначена для хранения ACL для каждого созданного актива.
Если вы не обновляете эту таблицу при программном создании категории, применяется ACL по умолчанию. И когда вы откроете и сохраните категорию на административной панели, ACL будет обновляться, как и должно было бы быть с помощью ядра Joomla !.
Вы можете легко создать запрос SQL и обновить таблицу активов. Его легко понять, как только вы откроете содержимое таблицы в phpmyadmin.
Пожалуйста, используйте только родные классы, категории которых будут обрабатывать для вас без проблем. Как только вы добавите категории, все будет обработано автоматически. Просто посмотрите на какой-либо основной компонент, чтобы увидеть, как это сделать.
Непросто обновить таблицу активов с помощью sql, все это очень конкретно управляется и является частью сложной серии внешних таблиц с ключами.
Расширьте JTable или JTableContent, чтобы справиться с этим.
Вот функция, которую я создал именно для этой цели, после некоторого рытья & экспериментов.
Он использует основные классы, поэтому ему необходим доступ к ним (для меня это в основном часть компонента Joomla).
Ум, это для Joomla 3, для Joomla 2.5 и прежде, вы должны изменить JModelLegacy к JModel.
function createCategory($name, $parent_id, $note)
{
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_categories/tables');
$cat_model = JModelLegacy::getInstance('Category', 'CategoriesModel');
$data = array (
'id' => 0,
'parent_id' => $parent_id,
'extension' => 'com_content',
'title' => $name,
'alias' => '',
'note' => $note,
'description' => '',
'published' => '1',
'access' => '1',
'metadesc' => '',
'metakey' => '',
'created_user_id' => '0',
'language' => '*',
'rules' => array(
'core.create' => array(),
'core.delete' => array(),
'core.edit' => array(),
'core.edit.state' => array(),
'core.edit.own' => array(),
),
'params' => array(
'category_layout' => '',
'image' => '',
),
'metadata' => array(
'author' => '',
'robots' => '',
),
);
if(!$cat_model->save($data))
{
return NULL;
}
$categories = JCategories::getInstance('Content');
$subcategory = $categories->get($cat_model->getState("category.id"));
return $subcategory;
}
Вот код, я просто взбитыми вместе, что просто использует JTableCategory
класс, поэтому он может быть использован только на передней или админ стороне Joomla
$table = JTable::getInstance('category');
$data = array();
// name the category
$data['title'] = $title;
// set the parent category for the new category
$data['parent_id'] = $parent_id;
// set what extension the category is for
$data['extension'] = $extension;
// Set the category to be published by default
$data['published'] = 1;
// setLocation uses the parent_id and updates the nesting columns correctly
$table->setLocation($data['parent_id'], 'last-child');
// push our data into the table object
$table->bind($data);
// some data checks including setting the alias based on the name
if ($table->check()) {
// and store it!
$table->store();
// Success
} else {
// Error
}
Естественно, вы хотели бы получить части данных установлены правильно, но они являются основными для набора.
- 1. joomla 2.5 категории сбой
- 2. Joomla 2.5 Отображение категории Virtuemart как меню
- 3. Как добавить раздвижной баннер в Joomla 2.5
- 4. Joomla 2.5 - Как скрыть избранные статьи в макете категории блога?
- 5. Joomla 2.5 mod_banners как добавить дополнительные шаблоны?
- 6. Как добавить несколько форм Компонент Joomla 2.5
- 7. Joomla 2.5 Добавить группы вариантов в статью
- 8. Добавить пользовательский токен в joomla 2.5
- 9. Добавить JS в Joomla 2.5 плагин
- 10. Как создать группу joomla в joomla 2.5
- 11. Показать дату создания статей в определенной категории (Joomla 2.5)
- 12. Joomla 2.5 + Как отобразить категорию в адресе
- 13. название не изменяется, когда в категории Joomla 2.5
- 14. FancyBox в Joomla 2.5
- 15. Joomla 2.5 & sigPlus & BoxPlus: Добавить анимацию
- 16. Добавить значение для формы входа joomla 2.5
- 17. Joomla/Добавить категорию в категории Категория модулей
- 18. Joomla 2.5 Назначение меню статьи
- 19. Joomla 2.5 joomshopping category template
- 20. Joomla 2.5 Сколько возможных категорий
- 21. Как добавить собственные поля в пункт меню в Joomla 2.5
- 22. Как добавить скрипт в начало списка скриптов в Joomla 2.5
- 23. Список контактов в категории Joomla
- 24. Virtuemart в joomla 1.5 до joomla 2.5
- 25. Как настроить подтверждение регистрации в Joomla 2.5
- 26. Как сделать повторяемое поле в joomla 2.5?
- 27. Как управлять языками в моем компоненте Joomla 2.5?
- 28. Joomla 2.5 pagination
- 29. Как добавить примечание для пользователя programmaticaly в joomla 2.5?
- 30. Как добавить дополнительное поле в joomla 3 и 2.5?
Пожалуйста, не делайте этого. Таблицу активов никогда нельзя трогать напрямую, а изменять ее можно только с помощью таблицы с полем активов. Совсем не просто управлять вложенными наборами. – Elin