Discourse에서 CSS로 'SVG 아이콘'과 '이모지'를 쉽게 사용하기

안녕하세요 :wave:

이 주제에는 두 가지 테마 구성 요소가 포함되어 있습니다.

Discourse Easy SVG Icon CSS

:warning: 이 테마 구성 요소는 템플릿으로 기능하므로, Github에서 포크하거나 코드를 프로젝트에 사용해 주세요. SCSS에서 사용하지 않는 아이콘 SVG 코드를 삭제하고 실제로 사용하는 것만 유지할 수 있습니다… mixin 파일을 common.scss 파일에 가져왔으므로, 해당 줄 아래에 코드를 추가하거나 데스크톱 또는 모바일 섹션에 별도로 추가할 수 있습니다.

이 테마 구성 요소는 CSS에서 SVG 아이콘을 유지보수하고 쉽게 편집할 수 있는 기능을 추가합니다. 이 구성 요소에는 다음에서 찾을 수 있는 모든 SVG 아이콘이 포함되어 있습니다: discourse/vendor/assets/svg-icons/fontawesome at main · discourse/discourse · GitHub



사용 방법

고정 매개변수:

$icon-set: brands, regular, solid
$icon-name: 아이콘 이름
$icon-color: 아이콘 색상 (currentColor, hex 또는 색상 변수)
$width and $height: 추가된 아이콘의 크기

다음과 같이 보입니다:

@include svg-icon($icon-set, $icon-name, $icon-color, $width, $height);

currentColor 사용
Latest 내비게이션 바 항목 앞에 solid 로켓 아이콘을 추가하는 예시입니다.

#navigation-bar {
  li.nav-item {
    &_latest {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include svg-icon(solid, rocket, currentColor, 1em, 1em);
        }
      }
    }
  }
}

add-icon-to-latest


var(--gold) 색상 변수 사용
Top 내비게이션 바 앞에 regular 금성 아이콘을 추가하는 예시입니다.

#navigation-bar {
  li.nav-item {
    &_top {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include svg-icon(regular, star, var(--gold), 1em, 1em);
        }
      }
    }
  }
}

add-star-to-top


호버 시 아이콘 세트, 색상 또는 아이콘 자체를 쉽게 변경할 수 있습니다… 확인해 봅시다!

이제 버튼을 호버할 때 regular 아이콘을 solid로 변경합니다.

#navigation-bar {
  li.nav-item {
    &_top {
      a {      
        gap: 0.5em;
        &:hover,
        &:focus,
        &.active {
          &:before {
            @include svg-icon(solid, star, currentColor, 1em, 1em);
          }
        }
        &:before {
          content: "";
          @include svg-icon(regular, star, currentColor, 1em, 1em);
        }
      }
    }
  }
}

change-icon-set


Discourse Easy Emoji CSS

:warning: 이 테마 구성 요소는 템플릿으로 기능하므로, Github에서 포크하거나 코드를 프로젝트에 사용해 주세요. mixin 파일을 common.scss 파일에 가져왔으므로, 해당 줄 아래에 코드를 추가하거나 데스크톱 또는 모바일 섹션에 별도로 추가할 수 있습니다.

사용 방법

사용법은 SVG 버전과 유사합니다.

고정 매개변수:

$emoji-set: apple, google, twitter, win10, google_classic, facebook_messenger
$emoji-name: 이모지 이름
$width and $height: 추가된 이모지의 크기

@include emoji($emoji-set, $emoji-name, $width, $height);

Latest 앞에 facebook_messenger rocket 이모지와 Top 앞에 twitter star 이모지를 추가하는 예시입니다.

#navigation-bar {
  li.nav-item {
    &_latest {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include emoji(facebook_messenger, rocket, 1em, 1em);
        }
      }
    }
    &_top {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include emoji(twitter, star, 1em, 1em);
        }
      }
    }
  }
}

Screenshot 2024-03-25 at 5.26.26

@Don님, 안녕하세요.

여러분의 작업을 진심으로 관심 있게 지켜보고 있으며, 제가 만든 모든 창작물을 제 포럼에 적용했다고 생각합니다. 다만 이 특정 항목에 대해서는 확신이 서지 않습니다. Discourse를 업그레이드한 이후로 머리가 혼란스러워져서 이 CSS 코드를 어디에 구현해야 하는지 기억이 나지 않습니다. GitHub 코드를 테마에 통합했는데도 아무것도 표시되지 않습니다.

테마는 사용자가 작업할 수 있는 편집 가능한 기반이 되어야 한다고 생각합니다:

이는 설치했을 때 아무것도 표시되지 않은 이유를 설명해 줄 수 있습니다. 템플릿은 단독으로 거의 아무것도 하지 않을 가능성이 크기 때문입니다.

이것은 우리에게 보여져야 하지 않나요?

또는

아니요, 원격 테마이기 때문에 GitHub에서 다운로드하여 인스턴스에 zip 파일로 업로드하거나, GitHub 저장소를 포크하여 해당 저장소에서 변경 사항을 적용해야 합니다.

사실 이 개념은 나에게 완전히 새로운 것입니다. 하지만 말씀하신 뜻을 이해합니다. 매일이 배움의 기회이며, 빠른 답변에 감사드립니다.

Hey @Aaron_Walsh :waving_hand: 결국 성공하셨나요? 이 기능을 사용하고 싶은 구체적인 사용 사례가 있나요? 세부 정보를 공유해 주시면, 설정으로 쉽게 수정할 수 있도록 해당 기능을 기반으로 별도의 테마 컴포넌트를 만들어드릴 수 있습니다.

좋은 아침입니다.

그 노력은 성공적이었을 것입니다. 하지만 현재 편집을 위해 사용할 수 있는 Windows 노트북이 더 이상 없습니다. 대신 삼성 갤럭시 S9 울트라를 사용하기로 했는데, 이 결정은 약간 후회스럽습니다 :sweat_smile:.

호스팅 서버(cPanel)를 통해 업로드하고 편집하여 이 작업을 수행할 수 있는 방법이 있습니다. 다만, 죄송한 말씀이지만 여러분이 만든 작업물은 일부 사람들에게는 다소 복잡하게 느껴질 수 있습니다.

따라서 동의해 주신다면,

9e9f0a12fb60537533c141e18e145f7d98eecb9c

이 디자인이 제가 가장 감탄하고 특히 끌리는 디자인입니다!

네, 그래서 Development 카테고리에 올린 건데요, 걱정 마세요. 이 용도를 위해 #customization:theme-component를 만들어드릴게요. :slightly_smiling_face:

죄송합니다, 제 실수였어요! 앞으로는 이 부분에 대해 더 잘 알고 있겠습니다.

안녕하세요 :waving_hand: 이 Customization > Theme component 작업이 완료되었습니다. :white_check_mark:

정말 멋져요! 감사합니다!