目次
キーテイクアウト
どのように機能しますか?
名前
他のプログラミング言語でJekyllを使用できますか?プラグインと統合を使用して、他のプログラミング言語とともに使用します。たとえば、JavaScriptを使用してJekyllを使用してサイトに動的な機能を追加したり、SASSのようなCSSプリプロセッサを使用してスタイリングプロセスを合理化できます。 > Jekyllは、SEOのサイトを最適化するのに役立ついくつかの機能を提供しています。これには、カスタムURL構造、メタタグのサポート、XMLサイトマップを生成する機能が含まれます。さらに、Jekyllは静的サイトを生成するため、非常に高速で、サイトの検索エンジンのランキングを改善できます。
ホームページ テクノロジー周辺機器 IT業界 ジキルのルーティングコンポーネントをハッキングします

ジキルのルーティングコンポーネントをハッキングします

Feb 20, 2025 am 09:10 AM

Hacking a Routing Component in Jekyll

ジキルのルーティングコンポーネントをハッキングします

キーテイクアウト

  • Jekyllには組み込みのルーティングコンポーネントがありません。これは、URLを変更する必要があり、古いURLへのすべてのリンクを手動で更新する必要がある場合に問題がある場合があります。液体とマークダウンを使用して回避策ソリューションを作成できます。これは、プラグインとカスタムルビーコードを使用できないGitHubページでホストされているサイトに最適です。
  • _DATAフォルダーに保存されているYAMLファイルにURLをマッピング(ルート)にマッピングすることにより、Jekyllでルーターを作成できます。これにより、リンクはURLパスではなくルート名を参照するため、古いURLを指すすべてのリンクを更新することなくURLを変更できます。
  • ルーターをよりユーザーフレンドリーにするために、マークダウンリンクの参照をルーターから自動生成して、任意のファイルの参照としてルートを使用できます。これは、すべてのルートをループする液体部分を作成し、それぞれのマークダウンリファレンスを作成することによって行われます。
  • このソリューションはJekyllで機能的なルーターを提供しますが、いくつかの制限があります。マークダウンでのみ機能し、単純なHTMLではなく、アンカーをリンクに追加することはできません。さらに、HTML部分をすべてのページに含める必要がありますが、これは退屈です。これらの欠点にもかかわらず、この回避策は、Jekyllにルーティングコンポーネントがないことに対する実行可能なソリューションを提供します。
  • 最初は、Markdown、Liquid、Yaml
  • を使用してGithubページでホストされたときに、Jekyllのルーティングコンポーネントをハッキングするこの記事にタイトルを付けようとしていました。明らかに、それは少し長いので、私はそれを短くしなければなりませんでした。とにかく、ポイントは変わりません:Jekyllには何らかのルーターが欠けています。私は、1つを模倣するためのを見つけたと思います。
最初のこと:私はsymfonyの背景から来ているので、

router によって、URLをマッピングするコンポーネントを意味します。コードベースをクロールして、時代遅れの場所に向かうすべてのリンクを更新する必要はありません。 なぜそんなことが必要なのでしょうか? 私は現在、Sassdoc V2のドキュメントに懸命に取り組んでいます(この執筆時点ではまだリリースされていません)。かなりのコンテンツがあります。多くのコードの例と相互参照を含む4つの異なるセクションに分割された20ページ以上。

書き換え中に数回、私はURLを変更したいと思っていました。問題は、URLを変更すると、このURLに向かうすべてのリンクを壊したくない場合に更新する必要があります。すべてのURLが大丈夫であることを確認するために20ページ以上をrawっています…

これが、ルーティングコンポーネントが必要な理由です。次に、名前を完全に有効に保ちながらパスを変更することができるように、そのパスではなく名前でURLを参照します。

どのように機能しますか?

では、この作業を行うには何が必要ですか? Jekyllを実行しているが、セーフモードに制限されていない場合(残念ながらホスティングにGithubページを使用する場合はそうです)、これを行うためにRubyプラグインを確実に見つけ/構築できます。これは通常、サーバー側の言語で処理されるものであるため、これは最良の解決策です。

さあ、Jekyllの場合よりも頻繁にそうであるGithubページでサイトをホストする場合、プラグインを使用することも、JekyllのコアをカスタムRubyコードで拡張することもできないため、利用可能なものを使用してソリューションをハッキングすることになります。液体とマークダウン。

主なアイデアは、実際のURLにマッピングされたすべてのルートを含むファイルを持つことです。ありがたいことに、Jekyllでは、_Dataフォルダーに保存されているYAML/JSON/CSVファイルを介してカスタムグローバル変数を定義することができます。したがって、これらのURLには、その名前からページに直接アクセスできます。

上に少し構文砂糖を追加するには、友好的な構文を可能にするマークダウンリンク参照を作成しますが、あまり速すぎないでください。

ルーターの作成

ルーターのポイントは、URL(1対1)にマッピングされたルート(a.k.a.

名前

)を公開することです。 Jekyllプロジェクトの_DATAフォルダーにYAML/JSON/CSVファイルを作成することができるので、routes.yml:

という名前のyamlファイルを使用してみましょう。 もちろん、私たちは内部リンクに限定されていないことに注意したかもしれません。外部URLのルートを完全に定義して、定期的に表示する傾向がある場合は、何度も何度も入力しないようにすることができます。同じ線に沿って、例として4つのルートで停止しましたが、ルーターには何百ものルートが含まれている可能性があります。

ファイルは_dataにあるため、site.data。を使用して、ほとんどどこでもコンテンツにアクセスできます。次のコードを含むページがあるとしましょう。
home: "/"
about: "/about-us/"
faq: "/frequently-asked-questions/"
repository: "https://github.com/user/repository"
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、URLを参照するのではなく、代わりにルーティングします。これは魔法ではなく、特定のパスに保存されているグローバル変数にアクセスするようにJekyllに指示するだけです(例:Site.Data.Routes.FAQ)。

さあ、リポジトリがGitHubでホストされなくなった場合、または「About Us」ページのURLが今 /about /arbout /aboutである場合、心配しません!ルーターを更新することにより、リンクを更新するためにページに戻ることなく動作させます。

構文砂糖の追加

この時点で、壊れたリンクを修正するためにサイトをクロールする必要なく、URLを変更できる機能的なルーターがあります。だからあなたはそれがすでにかなりクールだと言うことができます。ただし、site.data.routes.faqを入力する必要があることはあまり便利ではありません。確かにもう少しエレガントにすることができます!--- layout: default title: "About us" --- <span><!-- Content about us --> </span> Go to our [GitHub repository]({{ site.data.routes.repository }}). Or read the section dedicated to [Frequently Asked Questions]({{ site.data.routes.faq }}).はい、いいえ。最初は、キー名を受け入れ、Site.data.routes。に保存されている値を返す小さなルート()関数を構築することを考えました。問題は、Jekyllをセーフモードで実行しているため、Rubyコードで拡張することはできません。運はありません。

それから、これまで使用したことのないマークダウン機能について考えました:リンク参照。これは、マークダウンでリンクが表現される方法です:

home: "/"
about: "/about-us/"
faq: "/frequently-asked-questions/"
repository: "https://github.com/user/repository"
ログイン後にコピー
ログイン後にコピー

リンクを設定してリファレンスに移動することもできます。これは、ページのどこにでも定義されているところで完全に見えません。

---
layout: default
title: "About us"
---

<span><!-- Content about us -->
</span>
Go to our [GitHub repository]({{ site.data.routes.repository }}).
Or read the section dedicated to [Frequently Asked Questions]({{ site.data.routes.faq }}).
ログイン後にコピー

注:urlではなく参照を使用すると、括弧はブラケットに置き換えられます。 これにより、ドキュメント全体ではなく、同じ場所(たとえば一番下)にすべてのリンクを定義することができます。私はこの機能をあまり使用していないと言わなければなりませんが、この場合は便利です。 アイデアは、ルーターからのリンク参照を自動誘導して、任意のファイルの参照としてルートを使用できるようにすることです。液体でこれを行うのは驚くほど簡単であることが判明しました:

これをページのどこにでも追加することにより、これはJekyllにこれを液体コードとして処理するように指示します。これはマークダウン参照として処理されます。たとえば、前の例に戻ると、

[I am a link](http://link.url/)
ログイン後にコピー
今話しているよね?唯一の問題は、このループを任意のページに含める必要があることです。最初は、レイアウトに追加することを考えたため、関連するレイアウトを使用して任意のページに自動的に追加されます。問題は、レイアウトがJekyllのマークダウンとして処理されていないため、実際にはDOMの下部に参照が表示されることです。さらに悪いことに、彼らはマークダウンとして処理されていないので、私たちのページでは使用できません...あまりにも悪いです。

しかし、私たちはまだそれを少し良くするために何かをすることができます。このループを液体の部分に入れて、ループをコピーするのではなく、すべてのページに部分的なものを含めることができます。 _includesフォルダーでroutes.html部分を作成するとしましょう:

[I am a link][id_reference]

​[id_reference]: http://link.url
ログイン後にコピー

そして、私たちのページで:

# _includes/route.html
{% for route in site.data.routes %}
[{{ route[0] }}]: {{ route[1] }}
{% endfor %}
ログイン後にコピー
注:上部だけでなく、ページ内の部分的な場所を含めることができます。ファイルの最後の行として完全にそれを置くことができます。

最終的な考え

---
layout: default
title: "About us"
---

<span><!-- Content about us -->
</span>
Go to our [GitHub repository][repository].
Or read the section dedicated to [Frequently Asked Questions][faq].

{% for route in site.data.routes %}
[{{ route[0] }}]: {{ route[1] }}
{% endfor %}
ログイン後にコピー
それは人々です、私たちはJekyllセーフモードで小さなルーティングコンポーネントをハッキングしました。さて、これの欠点は何ですか?いくつかのマイナーなものがあります:

マークダウンで動作します。プレーンHTMLにリンクがある場合は、{{site.data.routes。}}に戻る必要があります。これは、URLの更新からリンクを安全に保つため、それほど悪くはありません。

リンクにアンカーを追加することはできません。必要な場合は、{{site.data.routes。}}#anchor(繰り返しますが、それほど悪くない)に戻ります。

すべてのページにHTML部分を含める必要がありますが、これは退屈な場合があります(これをとにかく書かなければならないYAMLフロントマターの延長と考えても)。

これらの欠点は別として、それはすべて良くて光沢があります。どう思いますか?

Jekyllのルーティングコンポーネントのハッキングに関するよくある質問(FAQ) Jekyllのルーティングコンポーネントの重要性は何ですか? ​​

Jekyllのルーティングコンポーネントは、サイトのURLの構造を決定するため重要です。各ページを特定のURLにマッピングする責任があります。これは、サイトナビゲーションとSEOに不可欠です。ルーティングコンポーネントをハッキングすることにより、特定のニーズに合わせてサイトのURL構造をカスタマイズし、ユーザーエクスペリエンスと検索エンジンの可視性を向上させることができます。パーマリンクを使用してURL構造をカスタマイズできます。投稿のフロントマターでカスタムパーマリンクを指定できます。これにより、デフォルトのURL構造がオーバーライドされます。これにより、より記述的でユーザーフレンドリーなURLを作成できます。これにより、サイトのSEOとユーザーエクスペリエンスを向上させることができます。 、個人、プロジェクト、または組織サイトに最適なブログ認識の静的サイトジェネレーター。信じられないほど柔軟で、カスタムURL構造、テーマ、プラグインなどをサポートしています。さらに、静的サイトを生成するため、従来のCMSプラットフォームと比較して非常に高速で安全です。 GitHubページ、Netlifyなどを含むサードパーティの展開プラットフォーム。サイトを展開するには、ローカルで構築し、生成された静的ファイルを選択したプラットフォームにプッシュする必要があります。各プラットフォームには独自の特定の展開プロセスがあるため、詳細な手順についてはドキュメントを必ず確認してください。Jekyllで構築されたWebサイトの例は何ですか? 、個人的なブログから大規模な組織サイトに至るまで。いくつかの例には、Jekyllの公式Webサイト、Githubページなどが含まれます。 Jekyll Webサイトのショーケースを公式JekyllのWebサイトで見つけることができます。Jekyllサイトにプラグインを追加するにはどうすればよいですか?

Jekyllは、サイトに新しい機能と機能を追加できる幅広いプラグインをサポートしています。プラグインを追加するには、インストールしてから、サイトの_config.ymlファイルに追加する必要があります。一部のプラグインも追加の構成が必要になる場合があるため、詳細な指示についてはプラグインのドキュメントを確認してください。

他のプログラミング言語でJekyllを使用できますか?プラグインと統合を使用して、他のプログラミング言語とともに使用します。たとえば、JavaScriptを使用してJekyllを使用してサイトに動的な機能を追加したり、SASSのようなCSSプリプロセッサを使用してスタイリングプロセスを合理化できます。 > Jekyllは、SEOのサイトを最適化するのに役立ついくつかの機能を提供しています。これには、カスタムURL構造、メタタグのサポート、XMLサイトマップを生成する機能が含まれます。さらに、Jekyllは静的サイトを生成するため、非常に高速で、サイトの検索エンジンのランキングを改善できます。

以上がジキルのルーティングコンポーネントをハッキングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CNCF ARM64パイロット:インパクトと洞察 CNCF ARM64パイロット:インパクトと洞察 Apr 15, 2025 am 08:27 AM

このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します

AWS ECSとLambdaを備えたサーバーレス画像処理パイプライン AWS ECSとLambdaを備えたサーバーレス画像処理パイプライン Apr 18, 2025 am 08:28 AM

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

2025年に購読する上位21の開発者ニュースレター 2025年に購読する上位21の開発者ニュースレター Apr 24, 2025 am 08:28 AM

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください

CNCFは、ARM64およびx86のプラットフォームパリティブレークスルーをトリガーします CNCFは、ARM64およびx86のプラットフォームパリティブレークスルーをトリガーします May 11, 2025 am 08:27 AM

ARM64アーキテクチャのオープンソースソフトウェアのCI/CDパズルとソリューション ARM64アーキテクチャにオープンソースソフトウェアを展開するには、強力なCI/CD環境が必要です。ただし、ARM64のサポートレベルと従来のX86プロセッサアーキテクチャには違いがありますが、これはしばしば不利な点にあります。複数のアーキテクチャのインフラストラクチャコンポーネント開発者は、職場環境に一定の期待を持っています。 一貫性:プラットフォーム間で使用されるツールとメソッドは一貫しており、人気の少ないプラットフォームの採用により開発プロセスを変更する必要性を回避します。 パフォーマンス:プラットフォームとサポートメカニズムは、複数のプラットフォームをサポートする際に展開シナリオが不十分な速度によって影響を受けることを保証するための優れたパフォーマンスを備えています。 テストカバレッジ:効率、コンプライアンス、および

カスタム電気通信ソフトウェアの利点 カスタム電気通信ソフトウェアの利点 May 11, 2025 am 08:28 AM

カスタマイズされた通信ソフトウェア開発は、間違いなくかなりの投資です。ただし、長期的には、このようなプロジェクトは、市場で既製のソリューションのように生産性を向上させる可能性があるため、より費用対効果が高い可能性があることに気付くかもしれません。カスタマイズされた通信システムを構築することの最も重要な利点を理解してください。 必要な正確な機能を取得します あなたが購入できる既製の通信ソフトウェアには2つの潜在的な問題があります。生産性を大幅に向上させることができる有用な機能が欠けているものもあります。いくつかの外部統合でそれらを強化することができることもありますが、それは常にそれらを素晴らしいものにするのに十分ではありません。 他のソフトウェアには機能が多すぎて、使用できないほど複雑すぎます。おそらくこれらのいくつかを使用しないでしょう(決して!)。通常、多くの機能が価格に追加されます。 あなたのニーズに基づいています

See all articles