طريقة سهلة لدعم العلامات في جيكل بلوق
سؤال
أنا باستخدام معيار جيكل التثبيت للحفاظ على بلوق, كل شيء يسير على ما يرام.إلا أنني أود حقا أن الوسم مشاركاتي.
أنا يمكن الوسم وظيفة باستخدام YAML أمام هذه المسألة ، ولكن كيف يمكنني إنشاء صفحة لكل الوسم التي يمكن أن قائمة جميع المشاركات على الوسم?
المحلول
هذا جوهر سيتم إنشاء صفحة لكل فئة لك: https://gist.github.com/524748
ويستخدم جيكل مولد المساعد ، بالإضافة إلى صفحة فرعية.
نصائح أخرى
هنا هو الحل مع مرتبة أبجديا الكلمات على صفحة واحدة.
ويستخدم السائل فقط, مما يعني أنه يعمل على جيثب الصفحات:
{% capture tags %}
{% for tag in site.tags %}
{{ tag[0] }}
{% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}
{% for tag in sortedtags %}
<h3 id="{{ tag }}">{{ tag }}</h3>
<ul>
{% for post in site.tags[tag] %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
يمكنك أن ترى أنه في العمل هنا.
تحرير:
هناك أيضا طريقة إنشاء صفحة منفصلة لكل الوسم بدون الإضافات (والتي سوف تعمل على جيثب صفحات).
لدي شرح أكثر تفصيلا على بلدي بلوق:
صفحات منفصلة لكل بطاقة/الفئة مع جيكل (بدون الإضافات)
أولا, كنت بحاجة إلى تخطيط جديد الملف:
/_layouts/tagpage.html
:
---
layout: default
---
<h1>{{ page.tag }}</h1>
<ul>
{% for post in site.tags[page.tag] %}
<li>
{{ post.date | date: "%B %d, %Y" }}: <a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
مع هذا الملف التخطيط ، يمكنك إضافة علامة جديدة الصفحة عن طريق إضافة ملف جديد مع اثنين فقط من خطوط YAML الأمامي المسألة.
هنا مثال على jekyll
العلامة:
/tags/jekyll/index.html
:
---
layout: tagpage
tag: jekyll
---
العيب الوحيد في هذا النهج:في كل مرة كنت تستخدم علامة جديدة للمرة الأولى ، عليك أن تتذكر أن خلق جديد سطرين الملف لذلك.
لتوليد الجذر مؤشر الملف (أيقائمة العلامات التي تربط /tags/jekyll/index.html
.... الخ), يمكنك استخدام حل مماثل مثل واحد على أعلى من هذا الجواب حيث تولد صفحة واحدة مع alphebetically فرز الكلمات:
{% capture tags %}
{% for tag in site.tags %}
{{ tag[0] }}
{% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}
{% for tag in sortedtags %}
<a href="/tags/{{ tag }}/">{{ tag }}</a><br>
{% endfor %}
هذا سوف إنشاء قائمة من الروابط مثل هذا:
<ul>
<li><a href="/tags/.net/">.net</a></li>
<li><a href="/tags/authentication/">authentication</a></li>
<li><a href="/tags/backup/">backup</a></li>
</ul>
علما بأن هذا الحل يستخدم فارغة إلى تقسيم العلامات ، حتى أنها لا تعمل عند العلامات الخاصة بك تحتوي على الفراغات ، يفغيني Brikman تعليق ينطبق هنا أيضا.
وإلقاء نظرة على مواقع rel="noreferrer"> . هناك عدد قليل من الشوك مخصصة التي نفذت وظائف العلامات، ونأمل أيضا في بالطريقة التي تريدها: -)
كان لدي نفس السؤال و تعثرت على هذا: http://gist.github.com/143571.
إنه أشعل النار المهمة التي يولد الوسم قائمة.انا عدلت عليه قليلا و هو في:http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile.
في حين أن هذا لا يعطيك صفحة في الوسم ، يمكنك استخدام المراسي ، الذي هو نصف الطريق إلى هناك!
وأنا استخدم جيكل توصيف المساعد الكبير الذي يولد تلقائيا سحابة العلامات وصفحات العلامة. سهلة التركيب والاستخدام.
وهنا href="http://nicolas-hoizey.com/tags/photo.html" صفحة لل"صور" العلامة على بلدي بلوق (في الفرنسية )، ويمكنك ان ترى سحابة العلامات في القاع.
استنادا إلى المسيحية الجواب أعلاه قمت باش السيناريو الذي يفعل ما وصفت.
https://github.com/ObjectiveTruth/objectivetruth.github.io/blob/master/rebuild_tags.sh
تأكد من أن يكون المصاحبة 14 خط همة النصي في /non_website_resources/
الدليل
و
جعل /_layouts/tagpage.html
هو مبين في المسيحية الجواب أعلاه ولكن تسميته إلى /_layouts/tag_pages.html
بنية الملف يجب أن يكون مثل هذا:
.jekyll_website_root
├── _posts
├── _layout
│ ├── tag_pages.html
├── rebuild_tags.sh
تشغيل من الدليل الجذر ./rebuild_tags.sh
إذا كنت تحصل على إذن نفى الخطأ تأكد من تشغيل chmod 777 rebuild_tags.sh
إذا كنت تبحث في النصوص تعليقات لها بسيطة إلى حد ما:
يستخدم
sed
للعثور على جميع الكلمات في كل.md
الملف في_post
الدليليستخدم
sed
تدليك البيانات إلى تنسيق مناسبيأخذ كل فئة فريدة من نوعها و يجعل دليل ،
index.html
لكل
بهذه الطريقة, إذا كان لديك أي علامات جديدة, فقط قم بتشغيل البرنامج النصي إلى إعادة بناء صفحات قبل دفع إلى جيثب
لطيفة بسيطة غير المساعد طريقة للقيام به
تحرير
إزالة الاعتماد على الملفات الأخرى.فقط في حاجة إلى نص واحد!