Donnerstag, April 9, 2020

Wie kann ich Jekyll dazu bringen, ein Layout zu verwenden, ohne es zu spezifizieren?

In Ordnung zu halten, einige meiner Jekyll Websites einfach, ich bin immer mit dem gleichen layout. Das heißt, ich bin immer etwas zu schreiben wie. . .

---
layout: default
title: Here's my Title
---

. . . als die YAML Front-Matter am oberen Rand meiner Seiten.

Was ich lieber schreiben, jedoch ist nur. . .

---
title: Here's my Title
---

. . . und Jekyll davon ausgehen, dass es sollten Sie ein bestimmtes layout, als hätte ich explizit geschrieben „layout: default“ (oder was auch immer), wie oben.

Ich nicht sehen, eine Möglichkeit zu geben, dieses Verhalten in _config.yml. Vielleicht könnte ich schreiben, ein Jekyll-plugin , würde dies erlauben. . . irgendwelche Ideen?

Kommentare dem Thema
Wenn Sie am Ende zu schreiben (oder zu finden) ein plugin, das dies tut, poste bitte wieder hier. Ich denke, das wäre eine nette Verbesserung. Vorausgesetzt es ist nicht irgendein Weg, ich weiß nicht, was zu tun es bereits. (Wenn man „layout: Standard“ in der _config.yml nicht funktioniert, leider.) Kommentarautor: Alan W. Smith
@AlanW.Smith ich Stimme zu, es wäre eine schöne Ergänzung, ich habe Sie nur geöffnet Ausgabe #453: die Option „layout: Standard“ in der _config.yml: github.com/mojombo/jekyll/issues/453 Kommentarautor: Philip Durbin

InformationsquelleAutor der Frage Philip Durbin | 2011-12-13

4 Kommentare

  1. 5

    Kürzer und ohne monkey-patching:

    # _plugins/implicit_layout.rb
    module ImplicitLayout
      def read_yaml(*args)
        super
        self.data['layout'] ||= 'post'
      end
    end
    
    Jekyll::Post.send(:include, ImplicitLayout)

    Einschränkung: GH Seiten nicht laufen deine plugins.

    InformationsquelleAutor der Antwort Hakan Ensari

  2. 0

    Hier ein Jekyll-plugin Sie können die drop-in als _plugins/implicit-layout.rb zum Beispiel:

    # By specifying an implicit layout here, you do not need to
    # write, for example "layout: default" at the top of each of
    # your posts and pages (i.e. in the "YAML Front Matter")
    #
    # Please note that you should only use this plugin if you
    # plan to use the same layout for all your posts and pages.
    # To use the plugin, just drop this file in _plugins, calling it
    # _plugins/implicit-layout.rb, for example
    IMPLICIT_LAYOUT = 'default'
    
    module Jekyll
      module Convertible
    
        def read_yaml(base, name)
          self.content = File.read(File.join(base, name))
    
          if self.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
            self.content = $POSTMATCH
    
            begin
              self.data = YAML.load($1)
              self.data["layout"] = IMPLICIT_LAYOUT
            rescue => e
              puts "YAML Exception reading #{name}: #{e.message}"
            end
          end
    
          self.data ||= {}
        end
    
      end
    end

    Hängt sich auf #jekyll auf freenode, ich bin zu verstehen gegeben, dies ist ein Affe patch.

    Als Alan W. Smith kommentiert, in der Lage zu „layout: default“ in _config.yml wäre eine schöne Verbesserung für dieses plugin.

    Im Idealfall (aus meiner Sicht), diese Funktionalität kann integriert werden in Jekyll selbst so ein plugin wäre nicht notwendig.

    InformationsquelleAutor der Antwort Philip Durbin

  3. 0

    Standardmäßig, Sie können das nicht tun. Jekyll muss die YAML zu layout angeben, damit er weiß, wo fallen Sie an.

    InformationsquelleAutor der Antwort Brett Hardin

Kostenlose Online-Tests