Хранение типа контента в отдельной таблице

3 года 9 мес. назад #6487 от Борис
Необходимо создать новый тип контента Order1, в нем хранить поле Title1. По рекомендации Wedal лучше хранить данный тип контента с его полем в отдельной таблице.
Для этого предварительно создал в базе данных таблицу orders. Создаю через админку новый тип поля – Title1. Для него выбираю формат Standart, free, в parameters выбираю созданную мною таблицу orders, в поле хранения вписываю Title1, сохраняю.



В итоге поле создается таблице #_cck_store_item_orders, в ней создается поле Title1



Через админку создаю новый тип контента Order1, добавляю поле Title1 в Admin form, Site Form, Intro и Content. В Site Form добавляю “Button Save & View” для сохранения.
Создаю в пункте меню для сайта добавление данного контента. Через сайт добавляю контент Order1, выдает ошибку:
“JCckTable: :store failed
Duplicate entry '0' for key 'PRIMARY' SQL=INSERT INTO `aai03_cck_store_item_orders` (`Title1`) VALUES ('A')
Обнаружена ошибка.”



Могли бы подсказать, что делаю неправильно?
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

3 года 9 мес. назад #6488 от Wedal
Борис, в целом, вы правильно выбрали направление действий, но в таком способе есть некоторые детали:
1) При создании типа контента нужно не выбирать для него основу(skeleton) в виде материалов Joomla, а указать, что у него будет собственная основа. Это позволит избежать при создании элементов данного типа контента их добавление в материалы Joomla.
2) Таблицу пока можно создать только вручную через PhpMyAdmin. Что вы не сделали - не добавили поле первичного ключа. Каждая таблица должна иметь поле с порядковыми номерами записей. Грубо говоря ID ваших Order'ов. При чем это поле должно быть помечено флагом "AUTO_INCREMENT". Это означает, что при добавлении новой записи в данную таблиц ID автоматически будет увеличиваться на 1. В Seblod это поле создавать не нужно.
Всё остальное вы сделали правильно. А ошибка возникла как раз из-за того, что в таблице не было поля ID.

Вообще, давно собираюсь написать по этой теме отдельную статью, но ее задерживал баг, который не позволял полноценно управлять такими "свободными" данными через админку Joomla( www.seblod.com/resources/tracker/7511 ). Возможно, он уже исправлен. На днях проверю.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

3 года 9 мес. назад - 3 года 9 мес. назад #6489 от Борис
Wedal
в таблице _cck_store_item_orders уже было поле ID, но оно не auto_increment. После того, как сделал его auto_increment, действительно смог создавать материалы типа контента Order1. Спасибо.

Однако столкнулся с другими трудностями. На поле Title1 при создании типа поиска в Link указываю Form. Если на сайте открывает super admin, то при клике по ссылке Title1 он переходит в редактирование материала типа контента Order1. Если указать View, то значение поля Title1 НЕ ссылка. Что необходимо указать в Link при редактировании типа поиска, чтобы при клике на сайте по ссылке Title1 открывался материал для просмотра типа "Content"?

Также после создании материала типа контента Order1 на сайте выходит надпись, что материал успешно создать. Как сделать так, чтобы после создания материала открывался созданный материал для просмотра типа "Content"

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

3 года 9 мес. назад - 3 года 9 мес. назад #6491 от Wedal
Борис,

Если указать View, то значение поля Title1 НЕ ссылка.

Это точно так? Вообще, нужно указывать именно View. Если ссылка не появляется, то, возможно, это работает только тогда, когда объектом является материал Joomla. У вас объект собственный. Нажмите справа от View плюсик и попробуйте поэкспериментировать с настройками. Я так делать не пробовал, а потому не скажу точно, что именно там нужно поменять, но должно настраиваться.

Как сделать так, чтобы после создания материала открывался созданный материал для просмотра типа "Content"

В настройках кнопки submit есть опция "save & view".

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

3 года 9 мес. назад #6501 от Борис
Wedal,

Это точно так? Вообще, нужно указывать именно View. Если ссылка не появляется, то, возможно, это работает только тогда, когда объектом является материал Joomla. У вас объект собственный. Нажмите справа от View плюсик и попробуйте поэкспериментировать с настройками. Я так делать не пробовал, а потому не скажу точно, что именно там нужно поменять, но должно настраиваться.

Различные настройки пробовал, ссылка не появляется. Может необходимо заполнить раздел "Construction(Generic)" ?

В настройках кнопки submit есть опция "save & view".

Когда тип контента Article, при клике по "save & view" открывается просмотр для чтения созданный материал
Когда тип контента Order1, при клике по "save & view" пишет об успешности создания, сам созданный материал не показывается

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

3 года 8 мес. назад #6597 от Борис
Согласно видео
добавил в форму поле article id, сделал его скрытым. После этого решилась проблема 2 - после нажатия на кнопку "save & view" стал читаться материал. Однако первая проблема не решилась.
Вообще я понял лучше в storage указывать standart - article, в названии колонки вписывать само имя колонки.
Тогда информация о колонках и колонки появятся не в таблицах Джумлы, а в колонках Себлода cck_core_fields и cck_store_item_content. В этом случае обе вышеназванные проблемы решатся. Только при создании в типе контента добавлять любое поле из article, например article id, делая его скрытым.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.


Вверх