Возможно ли связать тип контента с самим собой?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 12 октября 2018 в 17:53
Есть тип контента Материалы.
Есть материал — древесина, а так же есть материал уголь. Нужно в материале уголь, в связях, вывести материал древесина и наоборот, в материале древесина в связях вывести уголь.
#2 12 октября 2018 в 19:37
Денис Михайлович, из коробки нельзя. Там текущий тип контента отфильтровывается и его нельзя привязать.

НО, есть два варианта
1. привести код в файле /system/controllers/content/hooks/ctype_relation_childs.php к виду (закомментировать одну строку)

  1.  
  2. class onContentCtypeRelationChilds extends cmsAction {
  3.  
  4. public function run($ctype_id){
  5.  
  6. $types = array();
  7.  
  8. $ctypes = $this->model->getContentTypes();
  9.  
  10. if ($ctypes) {
  11. foreach ($ctypes as $ctype) {
  12. // if ($ctype['id'] == $ctype_id) { continue; }
  13. $types["content:{$ctype['id']}"] = sprintf(LANG_CP_SETTINGS_FP_SHOW_CONTENT, $ctype['title']);
  14. }
  15. }
  16.  
  17. return array(
  18. 'name' => $this->name,
  19. 'types' => $types
  20. );
  21.  
  22. }
  23.  
  24. }
  25.  
2. Написать свой хук ctype_relation_childs, в котором добавить текущий тип контента в список для привязки.

Первый вариант проще реализовать (два символа всего дописать), второй вариант лучше в плане обновлений, чтобы не затерлось при обновлении движка.
#3 12 октября 2018 в 21:09
@SmartControl, попробую запилить с помощью хуков, чтобы при обновлениях с бубном не прыгать.
Спасибо за совет. 🖒
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.