Перейти к содержимому


Фотография
- - - - -

Category Submission подача категории

category submission категория

Сообщений в теме: 14

#1 Staff

Staff

Отправлено 02 February 2016 - 00:25

Подскажите пожалуйста, как во время подачи юзером материала с фронтенда можно было бы создать подкатегорию (в определенной заранее категории) с именем которое укажет пользователь, а не принудительно заставлять его выбирать из списка уже существующих категорий. И после этого отобразить категорию в Моих публикациях меню пользователя, доступную также для редактирования, желательно чтобы псевдоним категории также обрабатывался автоматически. (Использую JBZoo Advert)


Сообщение отредактировал Staff: 02 February 2016 - 00:27

  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 02 February 2016 - 00:32

здравствуйте Staff, к сожалению сам компонент Zoo не дает возможности создавать пользователям с фронта категории.


  • 0
Изображение
 

#3 Staff

Staff

Отправлено 02 February 2016 - 00:35

может это можно как-то засунуть в окошко выполнения PHP в JBZoo Advert, пусть хотя бы категория имеет какой-то сгенерированный id00012 и таким же псевдонимом. Очень нужна такая функция


  • 0

#4 SmetDenis

SmetDenis

Отправлено 02 February 2016 - 10:20

Могу только показать примеры для создания новой категории через API
 
Полный вариант выглядит так
$category = $this->app->object->create('Category');

$category->name = "Имя новой категории";

$category->alias = $this->app->string->sluggify($category->name);
$category->alias = $this->app->alias->category->getUniqueAlias($category->id, $this->app->string->sluggify($category->alias));

$category->getParams()->set('content.', 'Текст');

// Сохраняем в базу
$this->table->save($category);
$this->table->updateorder($this->application->id, $category->parent);
Пример можно найти тут
administrator\components\com_zoo\controllers\category.php save()

Сокращенный вариант
$category = JBModelCategory::model()->createEmpty($appId, 'Имя')

  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 Staff

Staff

Отправлено 02 February 2016 - 10:50

Спасибо. Буду пробовать.
  • 0

#6 Staff

Staff

Отправлено 05 February 2016 - 03:11

Не работает это через PHP вставку, вообще ничего не происходит.... Пытался также найти где element jbadvert.php сохраняет и вставить туда этот код, - но не нашел... 

Куда это можно вставить, чтобы оно работало?)). Может хук какой-то...

 

"Выполнить PHP" в JBAdvert  что-то вообще ничего не делает... 

Просил пояснить настройки тут http://forum.jbzoo.c...vert-nastrojka/но никто не отвечает((


  • 0

#7 Staff

Staff

Отправлено 05 February 2016 - 04:13

О! Получилось, забыл просто заменить $appId на реальный. Заработало, вставил в  jbadvert.php

Создает. Но с именем: Новая категория #new

Откуда берется в названии "Новая категория". Делал так:

$category = JBModelCategory::model()->createEmpty(1, 'new');

JBZOO_JBADVERT_ITEM_CATEGORY_VALUE - это единственная переменная которую я нашел, но при ее изменении все равно откуда-то берет "Новая категория" (wonder) . Более того, кроме как в jbadvert.xml я нигде больше не нашел признаков ее использования.

 

И второй момент, какой параметр добавить нужно, чтобы она была опубликована сразу?

 

И алиасы создаются типа: category-uid-56b40804dcd36  - в моем случае не принципиально на счет алиаса, но может есть решение?

 

А если сделать так: 

$category = JBModelCategory::model()->createEmpty(1, $item->name);

то как раз то что я хотел, новая категория с именем материала, который подается, но все равно не без "Новая категория#"  :(


Сообщение отредактировал Staff: 05 February 2016 - 04:34

  • 0

#8 Staff

Staff

Отправлено 05 February 2016 - 05:18

И нужно еще вбить автора, в этой же создающейся категории, полный код что я делаю:

$category = JBModelCategory::model()->createEmpty(1, $item->name);
$user = JFactory::getUser();
$authorname = $user->username;
$category->getParams()->set('metadata.author', $authorname);

вставил в конец function _getCartData()

категория создается, а автор нет


  • 0

#9 SmetDenis

SmetDenis

Отправлено 08 February 2016 - 14:29

Откуда берется в названии "Новая категория".


После создания объекта нужно указать ему свое имя и прочие данные. И сохранить.
$category->name = 'Имя';
$category->alias = 'cat-alias';
$category->setPublished(1); // публикация
$this->params->set('key', 'value'); // произвольные параметры
$category->save();

createEmpty функция в основном используется в импорте, при создании новых категорий из CSV. Затем категория меняется на основе CSV.

Вторым аргументом передается суффикс имени.
Реализацию можете посмотреть тут
media\zoo\applications\jbuniversal\framework\models\jbmodel.category.php createEmpty()


Совет. Сделайте отдельную функцию где-нибудь в PHP и потом вызывайте её в элементе.
Так будет проще править код, чем в самом элементе через админку.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 Staff

Staff

Отправлено 08 February 2016 - 14:45

Уже так и сделал. Чтобы добавить автора, создал дополнительную таблицу с ID автора, более того, даже умудрился туда записать id автора подающего item, но, весь этот код подставил в функцию getPrice в файл jbadvert.php и получилось, что категория создается уже на этапе оформления заказа, а не после его оплаты. Вопрос: куда нужно поместить этот код, чтобы категория создалась после проведения оплаты. Какой файл и какая функция за это отвечают? Спасибо за помощь.
  • 0




Click to return to top of page in style!