Ruby ERB에서 테마 설정에 액세스하기

안녕하세요,

ERB 파일에서 테마 설정에 접근할 수 있는지 궁금합니다.

제 사용 사례는 다음과 같습니다:

Discourse Easy Footer(GitHub - discourse/Discourse-easy-footer · GitHub)에서 설정한 푸터 링크를 가져와서 ERB 파일의 푸터에 추가하여, 크롤러도 푸터 링크를 볼 수 있도록 하고 싶습니다.

도와주셔서 감사합니다.

기술적으로는 가능합니다… 테마의 id가 5라면 다음과 같은 코드를 사용할 수 있습니다.

<%= Theme.find(5).cached_settings["my_setting_name"] %>

하지만 코어 또는 플러그인이 특정 테마에 의존하도록 만드는 것은 강력히 권장하지 않습니다. 테마가 수정되거나 삭제되면 서버 오류가 발생하여 사이트가 완전히 깨질 수 있습니다.

어떤 크롤러를 대상으로 하고 있나요? Google이라면, Google은 크롤링 시 JavaScript를 실행하며 테마의 JavaScript도 크롤러 뷰에 포함됩니다. 핵심은 <script type="text/discourse-plugin"> 대신 단순한 <script> 태그를 사용해야 한다는 것입니다.

따라서 크롤러 뷰에서 작동하도록 다음과 같은 코드가 사용될 수 있습니다:

<script>
  document.body.append(`<a href="${settings.my_link}">footer link</a>`)
</script>