Вложенные типы контента в двойке (Связи типов контента)
Каталог со связанными типами контента
Насколько актуален для вас компонент Связи типов контента?
Способов реализации может быть много, меня устроил бы вариант предложенный Loadырь, в посте 164, с оговорками которые возможно в его варианте реализованы, просто не показаны, а именно:
Есть ли возможность многоуровневой вложенности?
Есть ли возможность привязки разных типов контента, к разным категориям одного вида контента?
При переходе к списку "прикреплённого" контента, наборы работают?
Ещё как вариант подобия вложенных типов контента — это сделать возможность привязки полей, к категориям, по тому же принципу как сделаны свойства.
Тоже интересно, в картинках наверное выглядит вот такпроизводительность в цифрах
в картинках наверное выглядит вот так
Надо вникать
Если речь идёт о связывании типов к типам один ко многим, как в варианте r2, то подвязывать их можно по id типов двумя вариантами:
1. Подчинённые типы в отдельной таблице связей: id строки, id основного типа, id подчинённых. Тогда добавляется один быстрый запрос с выборкой из неё по id основного. Даже при большом количестве связей, это меньше 1 мс.
2. Подчинённые типы в той же таблице `cms_content_types` в строке основного типа в отдельном поле в виде сериализованного массива. Тогда в нём же можно хранить и опции привязки (вкл/выкл, опции показа и доступа). Тут вообще всё быстро одним запросом и десериализацией этого поля.
А далее уже в подчинённом контенте в `cms_con_подчинённый` добавить поле id материала основного типа — к какой конкретно основной записи привязана эта подчинённая.
Можно использовать не id типов, а их системные названия. Возможно это будет удобнее для выборки, так как не нужно будет искать имя по id.
Можно добавлять в таблицу подчинённого контента не одно поле с конкретным названием, а несколько полей с составным названием — по одному на каждую связь с родителем. Например, если отзывы могут быть как по автопроизводителям firms, так и по их машинам cars, то добавлять два поля: parent_firms и parent_cars. Это позволит связывать подчинённые типы с несколькими основными. То есть, минимальными средствами и БЕЗ дополнительных тормозов получить связь многие ко многим. Я бы шёл именно таким путём.
Делать расширенную связь по другим полям, отличным от id я не вижу смысл. Это усложнит понимание и реализацию, прибавит тормозов и не добавит удобств.
Перебирать все подчинённые типы при выводе основной записи не нужно. Достаточно отобразить вкладки всех типов и загрузить всего один подчинённый контент — либо первый по списку для первой вкладки, либо другой открытой.
Вопрос с адресацией вкладок пока остаётся для меня открытым. Можно что-то типа site.ru/firms/bmv.html?tab=models и site.ru/firms/bmv.html?tab=comments. Лишь бы это "tab" можно было опционально менять на своё другое. Как крайний вариант, по основному адресу site.ru/firms/bmv.html заполнять первую вкладку (связанные записи первого типа контента в списке), а остальные подгружать аяксом. Но это не лучший вариант, так как для второй и далее вкладок не будет адреса, чтобы добавить в избранное или переслать.
Ещё важный момент, опционально отключать показ ярлыков вкладок или иметь возможность их стилизовать шаблоном.
Если нужно считать количество записей связанного контента, то придётся добавить ещё аналогичные поля с количеством в таблицах подчинённых типов. Если к примеру выше, то добавить поля count_firms и count_cars, например. Тогда в ярлычках вкладок подчинённого контента можно сразу отображать и количество. Это наглядно, удобно и не требует особых затрат по коду и скорости. Заодно по количеству записей для каждого подчинённого типа можно делать ярлык вкладки активным или неактивным, если это нужно.
и я.Я готов скинуться.
Откройте сбор средств как на аудит. И кто сколько может.
Поддерживаю.Откройте сбор средств
Описанные вами варианты вполне устраивают и меня.Эффективный, на мой взгляд, вариант реализации я описал.
Я тоже готов скинуться, но давайте подождем ответа разработчиков.Я готов скинуться.
Тут вопрос немного в другом, так как к кому обращаться уже известно — "От авторов InstantCMS"Вопрос, на чью работу конкретно и в каком виде/реализации?
Вот только с чем к ним обращаться — пока нет ясного представления.
Так как тема этого форума звучит многосложно — тут и "Вложенные типы контента" и "Связи типов контента" и оба вместе.
Вложенные типы контента — тип контента имеет в себе "как-бы вместо полей" другие типы контента.
Связанные типы контента — В типе контента выводятся записи из других типов контента которые связаны друг с другом неким идентификатором, типа тегов или авторов или другого чего.
Оба вместе — различные вариации.
Примеры:
Вложенные типы контента
Типы контента: "Автопроизводители"
Есть "вложенные" типы контента "Мазда", "Ваз", "Мерс". В каждый из них "вложены" "Отзывы Мазда" и "История Мазда", "Отзывы Ваз" и "История Ваз", "Отзывы Мерс" и "История Мерс"
Соответственно в "Отзывы Мазда" пишутся статейки только про Мазду, в "История Ваз" только про историю Ваза. И при выводе "Автопроизводители" выводятся записи из типов "Мазда", "Ваз", "Мерс", при выводе "Ваз" подтягиваются записи из "Отзывы Ваз" и "История Ваз".
Связанные типы контента
Типы контента: "Автопроизводители", "Мазда", "Ваз", "Мерс", "Отзывы", "История"
Записи в одном типе контента завязаны с записями в другом типе контента неким идентификатором (категория, тэги, авторы и т. п.). Поэтому в типе контента "Отзывы" пишут отзывы про все авто, в "История" также про всех пишут, и при выводе записи в типе контента "Мазда" выводятся все записи про мазду из "Отзывы" и "История" по отдельности. При выводе записей из "История" есть ссылки (связи) на записи в другие связанные типы контента. При выводе записей из "Автопроизводители", выводятся связи и с "Мазда", "Ваз", "Мерс" и с "Отзывы", "История"
Оба варианта вместе
Типы контента "Автопроизводители", "Мазда", "Ваз", "Мерс", "Отзывы", "История"
Тут сочетание обоих вариантов например при выводе записей "Автопроизводители", подтягиваются как вложенные "Мазда", "Ваз", "Мерс". А при выводе одного из "Мазда", "Ваз", "Мерс", подтягиваются как связанные записи из "Отзывы", "История".
Соответственно, вариантов реализаций вложенных и связанных типов контента большая масса, и каждый видит "связи" для себя по своему. Плюс ко всему некоторым нужно, чтобы поля и свойства одного связанного типа контента были доступны "как свои" поля и свойства в другом связанном типе контента. Также фильтрация кому-то нужна по связанным полям и свойствам. И это лишь малая часть возможных вариаций исполнения.
Кому-то достаточно при создании записи указать в спецполе связь с некоторой определённой записью в другом типе контента, и она там выведется. Кому-то нужны все варианты связей, чтобы "ни в чём себя не ограничивать".
Поэтому исполнитель известен, а вот с ТЗ пока никак. Или я ошибаюсь?
Есть тип контента "Автопроизводители", а есть тип контента "Отзывы".
Далее в типах контента уже будут КАТЕГОРИИ этого типа "ВАЗ, мазда и т.д.". Соответственно, связывать нужно категории типов контента?
То есть, категория ВАЗ в типе Автопроизодители будет связана с категорией ВАЗ в отзывах… Казалось бы, логично, но в тоже время реализация будет более сложной, наверное.
Еще пример:
Имеет тип контента АВТОПРОИЗВОДИТЕЛИ, в нем категории с марками авто. Ко всем записям в типе контента АВТОПРОИЗВОДИТЕЛИ будет привязана запись из типа контента ОТЗЫВЫ. Универсальнее было бы привязывать к записям из определенной категории из типа контента. Потому как отзывы могут быть и как в отношении автопроизводителей, так и в отношении марок авто или даже конкретных моделях или автосалонов. Различия полей для заполнения будут настраиваться свойствами категорий.
Не ошибаетесь. Просто нужно пригласить к обсуждению ТЗ Fuze и в идеале R2. На этапе ТЗ можно сильно накосматить. Важно не забывать об УНИВЕРСАЛЬНОСТИ решения.Поэтому исполнитель известен, а вот с ТЗ пока никак. Или я ошибаюсь?
связь товаров между собой и связь других типов контента к этому товару — видео, статья, обсуждение.