つのコラム柱レイアウト
この記事では、2つの列レイアウトを作成するオプションを探索します.
これは、Markdownは私たちが任意のスタイリングを持つことを許可していないので、かなりの課題です.
あなたが私のデザインを見るならば、あなたは明らかにイメージが一方と他方の側の内容であるのを見ることができます.
このユースケースでは、マークダウンファイルのファイル名に基づいて画像を解析するカスタムJavaScriptメソッドを使用します.
前述のように、私たちは別々のファイル構造で我々のイメージを主催しています.
フォルダを作成する
このフォルダの中で、あなたのポストファイルの正確な同じ名前でサブフォルダを作成する必要があります.
この例では、投稿は
これがあれば、必要なすべてのイメージフォルダを追加できます.
次に、このフォルダを我々の出力ウェブサイトに渡すために、ElethEventに伝える必要があります.
開放する
一旦我々のイメージセットアップがあるならば、我々は我々のポストで彼らを利用するためにこれらのイメージを読むことができるスクリプトを構築し始めることができます.
は、それがデータを読むことができる涼しい特徴を持ちます
それで、これをつくりましょう
内部でファイルを作成する
このファイルは私たちのファイルシステムを読んで、画像を見つけて、それらを使用するためにオブジェクトに加える機能です.
この関数は、オブジェクトを返すことができるノードスクリプトです.と呼ばれる変数になる
まず、ファイルシステムを使用して構造を定義します.
その後、我々はそれを返すようにエクスポート
これで
我々はすべてのディレクトリをループしたので、我々は我々が見つけたイメージで何かをする必要があります.
それは
このファイルの拡張子を取得します.
次のステップでは、ファイルが
もしそうならば、我々は安全にそれがイメージであると言うことができます、そして、我々は我々の出力にそれを加えなければなりません.
次に、ローカルパスをstring.replace method .
これは以下のようになります.
今、我々はこれらのイメージを我々のオブジェクトに配列として加える必要があります.
現在、我々は我々のポストでこれらのイメージを得る必要があります.
前述のように、変数
この変数を私たちのポストに呼び出すことでアクセスできます.
変更する
それはこの記事のためのイメージの配列を返します.
私たちがTailwindに変換されたので、ここでは、Tailwindクラスを使用している2つのコラムレイアウトの私のバージョンです.
では、
そこに行くと、我々はちょうど2つの列のレイアウトを使用して、Historandとマークダウンファイルを使用します.
かなりクールな解決策.私は、あなたがこのメソッドを使用する他の方法を考えることさえできます.
今日のコードを見つけることができますGitHub .
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
これは、Markdownは私たちが任意のスタイリングを持つことを許可していないので、かなりの課題です.
あなたが私のデザインを見るならば、あなたは明らかにイメージが一方と他方の側の内容であるのを見ることができます.
このユースケースでは、マークダウンファイルのファイル名に基づいて画像を解析するカスタムJavaScriptメソッドを使用します.
イメージリポジトリ
前述のように、私たちは別々のファイル構造で我々のイメージを主催しています.
フォルダを作成する
images
インサイドsrc
フォルダ.このフォルダの中で、あなたのポストファイルの正確な同じ名前でサブフォルダを作成する必要があります.
この例では、投稿は
article-6.md
, それで、私たちはarticle-6
.これがあれば、必要なすべてのイメージフォルダを追加できます.
次に、このフォルダを我々の出力ウェブサイトに渡すために、ElethEventに伝える必要があります.
開放する
.eleventy.js
ファイルをエクスポートし、次の行を追加します.module.exports = function (config) {
config.addPassthroughCopy("src/images");
// All your other config stuff
});
これにより、私たちはビルドした画像をフォルダに出力します.イメージフィルタを作成する
一旦我々のイメージセットアップがあるならば、我々は我々のポストで彼らを利用するためにこれらのイメージを読むことができるスクリプトを構築し始めることができます.
は、それがデータを読むことができる涼しい特徴を持ちます
_data
フォルダ.それで、これをつくりましょう
_data
フォルダ内のsrc
ディレクトリ.内部でファイルを作成する
postImages.js
.このファイルは私たちのファイルシステムを読んで、画像を見つけて、それらを使用するためにオブジェクトに加える機能です.
この関数は、オブジェクトを返すことができるノードスクリプトです.と呼ばれる変数になる
postImages
我々が中で帰る何でも.Note: This function was adapted from Chris his journal project.
まず、ファイルシステムを使用して構造を定義します.
const fs = require('fs'),
path = require('path');
const walkSync = (dir, filelist) => {
const files = fs.readdirSync(dir);
filelist = filelist || {};
// Do our magic here
return filelist;
};
module.exports = walkSync(process.env.PWD + '/src/images/');
ここでは、関数walkSync
. 特定のディレクトリを読み込み、いくつかのマジックを行い、filelistオブジェクトを返します.その後、我々はそれを返すようにエクスポート
filelist
変数として.これで
walkSync
関数は、ディレクトリをループしてサブディレクトリを見つける必要があります.files.forEach(function(file) {
if (fs.statSync(dir + file).isDirectory()) {
filelist = walkSync(dir + file + '/', filelist);
} else {
// Create our output
}
});
我々はディレクトリ内の各ファイルをループし、その特定のファイルがディレクトリそのものであれば、現在の関数を呼び出しますfilelist
入力として.我々はすべてのディレクトリをループしたので、我々は我々が見つけたイメージで何かをする必要があります.
それは
else
文.const imageURL = dir + file;
const ext = path.extname(imageURL).toUpperCase();
if (['.JPG', '.JPEG', '.PNG'].includes(ext)) {
const usePath = imageURL.replace(process.env.PWD + '/src/images/', '');
const fullPath = usePath.split('/');
const directory = fullPath[0],
file = fullPath[1];
if (!filelist[directory]) filelist[directory] = [];
filelist[directory].push(file);
}
ImageURLを完全なdirで定義することから始めます.このファイルの拡張子を取得します.
次のステップでは、ファイルが
.JPG
, .JPEG
, .PNG
.もしそうならば、我々は安全にそれがイメージであると言うことができます、そして、我々は我々の出力にそれを加えなければなりません.
次に、ローカルパスをstring.replace method .
これは以下のようになります.
// article-6/1.jpg
// article-6/2.jpg
// article-6/3.jpg
我々は今スラッシュでこれらの文字列を爆発させたいので、我々はポスト名とそれのためのすべてのイメージを得ます.const fullPath = usePath.split('/');
これには配列があります.// [ 'article-6', '1.jpg' ]
// [ 'article-6', '2.jpg' ]
// [ 'article-6', '3.jpg' ]
だからキー0はarticle-6
, 記事名を表す、そして、第2のキーはイメージ名です.今、我々はこれらのイメージを我々のオブジェクトに配列として加える必要があります.
const directory = fullPath[0],
file = fullPath[1];
if (!filelist[directory]) filelist[directory] = [];
filelist[directory].push(file);
これにより次の出力が得られる.{ 'article-6': [ '1.jpg', '2.jpg', '3.jpg' ] }
だから今postImages
変数はこのオブジェクトを含みます.我々のポストにイメージをリンクしてください
現在、我々は我々のポストでこれらのイメージを得る必要があります.
前述のように、変数
postImages
すべてのオブジェクトデータを含む.この変数を私たちのポストに呼び出すことでアクセスできます.
変更する
src/_includes/layouts/post.njk
ファイルを追加し、次のコードを追加します{% for image in postImages[page.fileSlug] %}
<img src="/images/{{page.fileSlug}}/{{ image }}" />
{% endfor %}
我々はPostimagesオブジェクトにアクセスし、ページを渡します.ファイル名( 6 ).それはこの記事のためのイメージの配列を返します.
つのコラムポストレイアウト
私たちがTailwindに変換されたので、ここでは、Tailwindクラスを使用している2つのコラムレイアウトの私のバージョンです.
{% extends 'layouts/base.njk' %} {% block content %}
<main class="flex flex-col-reverse md:flex-row">
<div class="w-full p-4 py-24 md:w-1/2">
<h1 class="mb-8 text-4xl font-bold">{{ title }}</h1>
{% for image in postImages[page.fileSlug] %}
<img src="/images/{{page.fileSlug}}/{{ image }}" class="w-full mb-6 shadow-xs" />
{% endfor %}
</div>
<div class="w-full min-h-screen p-4 py-24 text-white md:w-1/2 bg-purple">
{{ content | safe }}
</div>
</main>
{% endblock %}
これは、左と右側のコンテンツのタイトルと画像を2つの列のデスクトップレイアウトを与えます.では、
flex-col-reverse
モバイル上でこれらを切り替えるには、コンテンツがトップにあります.そこに行くと、我々はちょうど2つの列のレイアウトを使用して、Historandとマークダウンファイルを使用します.
かなりクールな解決策.私は、あなたがこのメソッドを使用する他の方法を考えることさえできます.
今日のコードを見つけることができますGitHub .
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
Reference
この問題について(つのコラム柱レイアウト), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/eleventy-two-column-post-layout-60nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol