콘텐츠로 이동

SI-DATA 콘텐츠 공통요소 설계 문서

SI-DATA 문서

작성일: 2026-01-07
수정일: 2026-03-09
버전: 2.0


SI-DATA(서울연구데이터서비스)의 기존 5개 콘텐츠 타입에 동일한 8개 공통요소 필드를 추가합니다. 이 문서는 공통요소의 설계와 아이템 계층 구조 구현에 대해 설명합니다.

#콘텐츠 타입기존 CMS 머신명용도
1데이터로 본 서울(콘텐츠)data_seoul데이터로 본 서울 콘텐츠
2DXPR Layoutdrag_and_drop_pageDXPR 빌더 기반 콘텐츠
3인사이트리포트insight_report인사이트 리포트
4조사데이터si_survey설문조사 데이터
5서울의 근현대유산archi근현대 유산 데이터
콘텐츠 타입머신명상태
HTML 콘텐츠(미정)신규 생성 여부를 고객과 별도 협의 예정
사진 콘텐츠(기존 CMS)별도의 공통요소를 적용할 예정 — 이 문서에서 제외

5개 기존 콘텐츠 타입에 동일한 공통요소 필드를 추가합니다.

  • 공통요소: 모든 대상 콘텐츠 타입에 동일하게 적용되는 8개 필드
  • 개별요소/구조/관리: 콘텐츠 타입별로 기존 필드 구성을 유지

분류 및 메타데이터 관련 필드입니다. 5개 대상 콘텐츠 타입에 동일하게 적용됩니다.

#필드명머신명타입설명
1제목titleString콘텐츠 제목 (기본 필드)
2ITEM명field_serviceEntity Reference (Taxonomy)중간 분류 선택 (2단 셀렉트박스)
3주제분류field_topicEntity Reference (Taxonomy)주제별 분류 (중복선택 가능)
4시기분류field_decadeEntity Reference (Taxonomy)시기별 분류 (중복선택 가능)
5핵심 키워드field_keywordText (plain)검색용 키워드
6디스크립션field_descriptionText (formatted, long)상세 설명
7공공누리field_ggnuriList (text)저작권 유형
8종간콘텐츠 여부field_legacyBoolean종간 콘텐츠 여부

개별요소, 구조, 관리 필드는 기존 콘텐츠 타입의 필드 구성을 유지합니다. 각 콘텐츠 타입의 상세 필드 구성은 아래 문서를 참조하세요.

콘텐츠 타입문서
데이터로 본 서울(콘텐츠)data_seoul 필드 구성
DXPR Layoutdrag_and_drop_page 필드 구성
인사이트리포트insight_report 필드 구성
조사데이터si_survey 필드 구성
서울의 근현대유산archi 필드 구성

콘텐츠 분류를 위한 2단 AJAX 연동 셀렉트박스 구조입니다.

┌─────────────────────────────────────────────────────────────┐
│ ITEM명 — depth 0 셀렉트박스 (field_service) │
│ └─ ITEM 서비스 택소노미 (depth 0, 9개 term) │
│ 예: 데이터로 본 서울, 지도로 본 서울, 통계로 본 서울... │
└─────────────────────────────────────────────────────────────┘
▼ AJAX 연동
┌─────────────────────────────────────────────────────────────┐
│ ITEM명 — depth 1 셀렉트박스 (field_service) │
│ └─ ITEM 서비스 택소노미 (depth 1, 21개 term) │
│ 예: 지도로 본 서울 2000, 지도로 본 서울 2007... │
└─────────────────────────────────────────────────────────────┘
  1. depth 0 셀렉트박스에서 상위 분류 선택 (예: “지도로 본 서울”)
  2. AJAX 연동으로 depth 1 셀렉트박스가 갱신됨 (예: “지도로 본 서울 2000”, “2007”, “2013”)
  3. 자식이 1개인 경우 자동 선택

상세 구현 내용은 아이템 계층 구조 구현 문서를 참조하세요. (구현 문서는 마이그레이션 완료에 따라 제거되었습니다 → 마이그레이션 보고서)

ITEM 서비스 택소노미
├── 데이터로 본 서울 (TID: 342) ← depth 0
│ └── 데이터로 본 서울 (TID: 275) ← depth 1
├── 서울과 세계대도시 (TID: 343)
│ └── 서울과 세계대도시 (TID: 276)
├── 지도로 본 서울 (TID: 344)
│ ├── 지도로 본 서울 2000 (TID: 277)
│ ├── 지도로 본 서울 2007 (TID: 278)
│ └── 지도로 본 서울 2013 (TID: 279)
├── 지표로 본 서울 (TID: 345)
│ ├── 지표로 본 서울 2003 (TID: 280)
│ ├── 지표로 본 서울 2010 (TID: 281)
│ └── 지표로 본 서울 2015 (TID: 282)
├── 통계로 본 서울 (TID: 346)
│ ├── 통계로 본 서울 인구 (TID: 283)
│ ├── 통계로 본 서울 경제 (TID: 284)
│ ├── 통계로 본 서울 교통 (TID: 285)
│ ├── 통계로 본 서울 주거 (TID: 286)
│ └── Seoul Statistical Series (영문판) (TID: 287)
├── 서울도시기본계획 모니터링 (TID: 347)
│ ├── 서울도시기본계획 모니터링 2024 (TID: 288)
│ ├── 서울도시기본계획 모니터링 2023 (TID: 289)
│ ├── 서울도시기본계획 모니터링 2022 (TID: 290)
│ ├── 서울도시기본계획 모니터링 2021 (TID: 291)
│ └── 서울도시기본계획 모니터링 2015~2020 (TID: 292)
├── 조사데이터 (TID: 348)
│ └── 설문조사 (TID: 293)
└── 서울의 근현대유산 (TID: 349)
└── 서울의 근현대 유산 (TID: 294)

콘텐츠 분류 및 검색 필터링에 사용되는 필드입니다.

#분류명필드명타입용어 목록
1주제분류field_topicTaxonomy (category_topic)용어 목록
2시기분류field_decadeTaxonomy (category_decade)용어 목록
3공공누리field_ggnuriList (text)제1~4유형
4핵심키워드field_keywordText (plain)자유 입력

통합검색 (/si/search)에서 사용되는 패싯 필터입니다. 2026-03-05 기준 5개 패싯 그룹 구현 완료.

#패싯 (UI)ES 필드택소노미필터 파라미터상태
1ITEM 타입field_serviceitem_service (9개)itemType동작
2간행물service_title.keywordservice동작
3주제분류field_category_datacategory_data (17개)category동작
4시기분류field_seriescategory_period (4개)periodUI 완료 (ES 미인덱싱)
5형태분류field_formatcategory_format (4개)formatUI 완료 (ES 미인덱싱)

참고: 시기분류/형태분류는 UI에 전체 택소노미 용어가 표시되나, ES 인덱스에 해당 필드가 아직 추가되지 않아 count=0으로 표시됩니다.

상세 구현: 검색시스템 문서


필드명머신명타입설명
ITEM명field_serviceEntity Reference (Taxonomy)2단 셀렉트박스로 콘텐츠의 분류 선택 (depth 0 → depth 1 AJAX 연동)
주제분류field_topicEntity Reference (Taxonomy)콘텐츠의 주제별 분류 (중복선택 가능)
시기분류field_decadeEntity Reference (Taxonomy)콘텐츠의 시기별 분류 (중복선택 가능)
필드명머신명타입설명
핵심 키워드field_keywordText (plain)검색을 위한 핵심 키워드
데이터 연도field_data_yearText (plain)데이터의 기준 연도
발행일자field_dateText (plain)콘텐츠 발행 일자
디스크립션field_descriptionText (formatted, long)콘텐츠에 대한 상세 설명
필드명머신명타입설명
대표이미지field_thumbnailImage콘텐츠의 썸네일 이미지
첨부파일field_attached_fileFile다운로드 가능한 첨부 파일
필드명머신명타입설명
콘텐트field_contentParagraphs동적 콘텐츠 구성을 위한 Paragraphs 필드
연관 콘텐츠field_related_dataParagraphs관련 콘텐츠 연결을 위한 Paragraphs 필드
필드명머신명타입설명
공공누리field_ggnuriList (text)저작권 유형 선택
검색제외field_esBoolean검색 결과에서 제외할지 여부
종간콘텐츠 여부field_legacyBoolean종간 콘텐츠 여부 (기본값: 체크 해제)


노드 편집 폼의 사용자 경험 개선을 위한 UI 구현입니다.

주제분류, 시기분류 필드의 체크박스를 그리드 형태로 배치하여 공간을 효율적으로 사용합니다.

필드레이아웃설명
주제분류 (field_topic)5열 그리드18개 항목을 5열로 배치
시기분류 (field_decade)4열 그리드4개 항목을 한 줄에 배치

반응형 대응:

  • 태블릿 (992px 이하): 3열
  • 모바일 (768px 이하): 2열
  • 작은 모바일 (480px 이하): 1열

주제분류 체크박스 아래에 각 주제에 대한 설명을 아코디언 형태로 제공합니다.

UI 구조:

주제분류
☐ 인구가구 ☐ 주택 ☐ 토지이용 ☐ 도시계획 ☐ 산업경제
☐ 기업경영 ☐ 교통 ☐ 사회 ☐ 복지 ☐ 보건
...
콘텐츠의 주제를 선택합니다. 복수 선택 가능합니다.
▶ 주제 설명 보기 ← 클릭 시 펼침

펼쳤을 때:

▼ 주제 설명 보기
┌────────────┬────────────────────────────────────────┐
│ 인구가구 │ 인구구조, 가구유형, 이동, 인구변동 │
│ 주택 │ 주택현황, 주거환경, 주거비, 임대... │
│ ... │ ... │
└────────────┴────────────────────────────────────────┘

구현 방식:

  • HTML5 <details> + <summary> 태그 사용 (JavaScript 불필요)
  • 설명 데이터: category_topic 택소노미 term의 description 필드 활용
파일설명
web/modules/custom/si_data/si_data.modulesi_data_form_alter() - 폼에 아코디언 마크업 삽입
web/modules/custom/si_data/si_data.modulesi_data_build_topic_descriptions() - 주제 설명 마크업 생성
web/modules/custom/si_data/css/si-data.css체크박스 그리드, 아코디언 스타일
web/modules/custom/si_data/si_data.libraries.ymlCSS 라이브러리 정의

  1. 분류 택소노미 용어 정리

    • 주제분류(category_topic): 18개 용어 정의 완료
    • 관련 문서: 주제분류
  2. HTML 콘텐츠 타입 결정

    • 고객과 별도 협의 후 신규 생성 여부 확정 예정
  3. 사진 콘텐츠 공통요소

    • 별도의 공통요소 설계를 진행할 예정
  4. 브레드크럼 구현 (보류)

    • 목록 페이지 및 메뉴 변경 작업 시 함께 진행 예정
  5. 검색 연동

    • Elasticsearch 검색에서 신규 콘텐츠 타입의 분류 체계 반영
    • 통합검색 패싯 5개 구현 완료 (2026-03-05)
    • 남은 작업: ES 인덱스에 field_series, field_format, field_keyword 필드 추가
  6. 권한 설정

    • 콘텐츠 타입별 생성/편집/삭제 권한 설정


버전날짜변경 내용
1.02026-01-15초기 문서 작성
1.12026-01-29폼 UI 개선사항 섹션 추가, 문서 링크 경로 수정
1.22026-03-05검색 패싯 구현 현황 추가 (5개 패싯 그룹)
2.02026-03-09정책 변경 반영 — 7개 신규 콘텐츠 타입 → 기존 5개 콘텐츠 타입에 8개 공통요소 필드 추가 방식으로 전환. field_item_type, field_chapter 제거. AJAX 3단→2단 축소. html_content/photo_content 제외 처리