Django+Wagtail+CodeRedCMS에서 Location 페이지 타입(지도)을 유효하게 해본 건 비망록

CodeRedCMS



CodeRedCMS는 Django/Wagtail의 구조 위에 만들어진 CMS 환경입니다.
이전의 투고로 조금 만져 보면 꽤 좋은 느낌이라고 생각했습니다만,
이번에 본가 문서를 읽고 있고 설치 후의 디폴트에서는 유효하게 되어 있지 않은 몇개의 페이지 타입이 있는 것을 알았습니다.

요약



1.CodeRedCMS 설치 등
2. 비활성화된 pagetype 정보
3.model에 사용 불가능한 pagetype 추가
4.사용법
5. 덤

1.CodeRedCMS 설치 등



설치등에 대해서는 이전 투고한 이쪽을 참조해 주시면 좋겠습니다.
nginx+Django+CodeRedCMS를 세운 건 비망록

2. 비활성화된 pagetype 정보



몇 가지 의문도 있고 CodeRedCMS의 문서 사이트를 잡고 있었습니다만,
아래의 링크처에 “디폴트에서는 무효화되어 있으므로 사용한다면 유효하게 해 주세요”라고 쓰여져 있는 Page Type가 있는 것을 깨달았습니다.
htps : // / cs. 쓰레기 d코 rp. 이 m/cms/s타 bぇ/훗아트레 s/파게_tyぺs/어서 x. HTML
대략 보고 다음은 default에서 유효하지 않습니다.
  • Event Landing Page/Event Page
  • Location Landing Page/Location Page
  • Stream Forms

  • "add the following to your website/models.py"라고 하고, 자신의 사이트의 디렉토리내의 models.py 에 기술을 추가하는 것으로 유효하게 할 수 있는 것 같습니다.
    이 중에서도 "Location Landing Page/Location Page"는 google 맵을 표시하는 페이지 유형임에 관심이있었습니다.
    그래서, 해봤다.

    3.model에 사용 불가능한 pagetype 추가



    CodeRedCMS로 만든 프로젝트에는 website라는 디렉토리가 있습니다.
    models.py에 다음 설명을 추가합니다.
    from coderedcms.models import CoderedLocationIndexPage, CoderedLocationPage
    
    class LocationPage(CoderedLocationPage):
        """ 
        A page that holds a location.  This could be a store, a restaurant, etc.
        """ 
        class Meta:
            verbose_name = 'Location Page'
    
        template = 'coderedcms/pages/location_page.html'
    
        # Only allow LocationIndexPages above this page.
        parent_page_types = ['website.LocationIndexPage']
    
    class LocationIndexPage(CoderedLocationIndexPage):
        """ 
        A page that holds a list of locations and displays them with a Google Map.
        This does require a Google Maps API Key that can be defined in Settings > Google API Settings
        """ 
        class Meta:
            verbose_name = 'Location Landing Page'
    
        # Override to specify custom index ordering choice/default.
        index_query_pagemodel = 'website.LocationPage'
    
        # Only allow LocationPages beneath this page.
        subpage_types = ['website.LocationPage']
    
        template = 'coderedcms/pages/location_index_page.html'
    

    기존의 PageType의 클래스도 벌써 쓰여져 있으므로 import는 정리한다.
    from coderedcms.models import (
        CoderedArticlePage,
        CoderedArticleIndexPage,
        CoderedEmail,
        CoderedFormPage,
        CoderedWebPage,
        CoderedLocationIndexPage, 
        CoderedLocationPage
    )
    

    추가한 후 다음을 실행하여 migration을 수행합니다.
    $ python manage.py makemigrations website
       <中略>
        - Create model LocationIndexPage ←これらが出力されていることを確認する。
        - Create model LocationPage    ←これらが出力されていることを確認する。
    
    $ python manage.py migrate
    

    두 종류의 페이지 유형이 추가되었습니다. 한 종류가 아니야.

    그리고는 Django/Wagtail를 재기동.

    4.사용법



    구현 코드의 실태와 UI상의 명칭이 다소 착綜하고 있는 곳을 볼 수 있지만,
    다음과 같은 사용법이 예상되는 것 같습니다.
  • Location Landing Page
    이것은 LocationIndexPage라고 하는 표기도 있으므로 우선 이 페이지를 작성해, 그 아래에 실제의 지도 표시의 페이지로서 Location Page를 몇 개나 매달릴 수 있다고 하는 구조가 되어 있습니다.
    새로 페이지를 만드는 경우 "ADD CHILD PADE"하면 아래와 같이 Location Landing Page를 선택할 수 있지만 여기에서는 Location Page를 선택할 수 없습니다.
  • 페이지의 설정에서는, 표시하는 타이틀명칭과 url의 일부로서 사용되는 명칭 slug의 2개소에 이름을 붙일 필요가 있습니다. 디폴트의 ​​동작으로 타이틀의 이름이 slug 쪽에도 들어가므로, 주의할 필요가 있습니다. Wagtail 전체에 공통되는 함정입니다.

  • Location Page
    완성된 Location Landing Page에서 「ADD CHILD PADE」하면 「Location Page」의 설정이 됩니다.

    여기에서도 CONTENT 탭의 TITLE 이름과 SEO 탭의 slug에 주의입니다.
    ADDLESS의 곳에는 본래라면 주소의 종류를 입력하는 것이라고 생각합니다만, 문자를 넣어 두면 google 맵측에서 검색한 결과를 표시하는 것 같습니다.



  • 5. 덤



    Wagtail/CodeRedCMS에 조금 익숙해져 왔습니다만, 자신의 sandbox적인 서버로 잠시라도 이것 시도해 보려고 생각합니다.

    가상 상점 사이트
    내용은 예고 없이 바뀌고, 다운하고 있는 일도 있을까 생각합니다.
    참고까지.

    좋은 웹페이지 즐겨찾기