1301 字
7 min
リンクカードの例
リンクカードについて
リンクカードは、Starlight の <LinkCard> コンポーネントに似ており、リンクをカード形式で表示します。
使用方法
現時点で更新されており、呼び出し方法は以下の通りです。
カスタムタイトルと説明
::link-card{url="https://fuwari.oh1.top" title="yCENzh's Blog" description="Ciallo~"}yCENzh's Blog
Ciallo~
画像付き
::link-card{url="https://github.com" title="Github" description="Hello World!" icon="https://github.com/github.png"}Github
Hello World!
下記の記述方法は現在無効です。
Markdownの段落内に単一の「ベアリンク」(説明テキストのない純粋なURL)またはそれに類似する構造のみを含めると、自動的にリンクカードに変換されます。
**External Links**
https://astro.build/
<https://github.com/saicaca/fuwari/>
[https://fuwari.oh1.top/](https://fuwari.oh1.top/)
**Internal Links**
[/archive/](/archive/)
For more details, see the internalLink option section.
**IDN (Internationalized Domain Name)**
https://はじめよう.みんな/https://github.com/yCENzh/Fuwari-yCENzh/
NOTEカードが表示されたら、テーマカラーを変更したり、ダークモードを有効にしたりしてみてください!
オプション
astro.config.mjs ファイルでオプションを指定できます。
...import fuwariLinkCard from "./src/plugins/fuwari-link-card.ts"...export default defineConfig({ ... integrations: [ ... fuwariLinkCard(), // Plugin here ...プラグインの順序が複雑な場合は、それを remark プラグインとして指定することもできます。
...import remarkLinkCard from "./src/plugins/remark-link-card.ts"...export default defineConfig({ ... markdown: { ... remarkPlugins: [ ... remarkLinkCard, // Plugin here ...| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
devMode | boolean | import.meta.env.DEV | 開発モードを有効または無効にします。 |
excludedUrls | Array<string | RegExp> | [] | 特定のURLを処理から除外するための文字列または正規表現のリストです。これは他のプラグインとの競合を防ぐのにも役立ちます。 |
linkAttributes | Object | { target: '', rel: '' } | 外部リンクのターゲット属性とリレーションシップ属性を設定します。これらの属性を未設定のままにして、他のプラグインに処理を委譲することもできます。 |
rewriteRules | Array<Object> | [] | リンクから取得されるメタデータ属性(例:タイトルや説明)を書き換えます。 |
base | string | '/' | Astroと同じベースパスを指定します。詳細はこちらを参照してください。インテグレーションとして使用する場合、指定しないと自動的に決定されます。 |
defaultThumbnail | string | '' | メタデータに画像データが含まれない場合に使用するデフォルトのサムネイル画像のパスです。public ディレクトリからの相対パスである必要があります。例えば、画像が public/images/default-thumbnail.jpg にある場合、defaultThumbnail を 'images/default-thumbnail.jpg' に設定します。 |
internalLink | Object | { enabled: false, site: '' } | サイト内の内部リンク処理を有効または無効にします。 |
cache | Object | 下記の詳細オプションを参照してください。 | ビルドプロセス中に画像をダウンロードしてキャッシュします。 |
リンク属性設定
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
target | string | '' | リンクされたドキュメントを開く場所を指定します。デフォルト(空)では、リンクにターゲットは設定されません。 |
rel | string | '' | 現在のドキュメントとリンクされたドキュメントの関係を定義します。デフォルト(空)では、関係は設定されません。 |
リライトルール
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
url | RegExp | 特定のURLに一致するために使用される正規表現パターン。 | |
rewriteSteps | Array<Object> | 特定のメタデータ属性の書き換えルールを定義します。 |
以下は、GitHubリポジトリを指すリンクから取得したメタデータの「タイトル」と「説明」を書き換える方法を示す例です。
rewriteRules: [ { url: /^https:\/\/github\.com\/[^\/]+\/[^\/]+\/?$/, rewriteSteps: [ { key: "title", pattern: /:.*/, replacement: "" }, { key: "description", pattern: /(?: (?:\. )?Contribute to (?:.+\/.+) .+\.?)|(?: - (?:.+\/.+))$/, replacement: "", }, { key: "description", pattern: /^Contribute to (?:.+\/.+) .+\.?$/, replacement: "No description provided.", }, ], },],| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
key | string | 書き換えられるメタデータ属性のキー名。 | |
pattern | RegExp | メタデータ属性の現在の値に一致するために使用される正規表現パターン。このパターンに一致する値の部分が置換されます。 | |
replacement | string | メタデータ属性のパターンに一致する部分を置き換える文字列。 |
内部リンク設定
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | false | 内部リンク処理を有効または無効にします。 |
site | string | '' | Astroと同じデプロイURLを指定します。詳細はこちらを参照してください。インテグレーションとして使用する場合、指定しないと自動的に決定されます。 |
キャッシュ設定
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | false | キャッシュを有効または無効にします。 |
outDir | string | './dist/' | 出力ディレクトリパス。詳細はこちらを参照してください。Astroと連携することで、画像最適化などの機能を利用できます。 |
cacheDir | string | './link-card/' | キャッシュディレクトリパス。devMode が true に設定されている場合、キャッシュされた画像への最終URLは base + outDir + cacheDir となります。それ以外の場合は base + cacheDir となります。 |
maxFileSize | number | 0 | キャッシュする最大ファイルサイズ(バイト単位)。制限なしの場合は 0 を設定します。 |
maxCacheSize | number | 0 | キャッシュの最大合計サイズ(バイト単位)。制限なしの場合は 0 を設定します。 |
userAgent | string | 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36' | HTTPリクエストヘッダーに含まれる、クライアントを指定するための識別子。 |
快速配置选项
このプラグインは @fastify/deepmerge を使用してオプション設定を簡素化します。
スタイリングのためのHTML構造
スタイルは src/styles/link-card.css で指定され、HTMLは自動的に生成されます。スタイルをカスタマイズする際の参考として、以下の構造例を示します。
<div class="link-card__container"> <a href="https://astro.build/" class="link-card"> <div class="link-card__info"> <div class="link-card__title">Astro</div> <div class="link-card__description">Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.</div> <div class="link-card__metadata"> <div class="link-card__domain"> <img alt="favicon" class="link-card__favicon" src="https://www.google.com/s2/favicons?domain=astro.build"> <span class="link-card__domain-name">astro.build</span> </div> </div> </div> <div class="link-card__thumbnail"> <img alt="Astro - Build the web you want." class="link-card__image" src="https://astro.build/og/astro.jpg"> </div> </a></div>