diff --git a/_config.yml b/_config.yml index fbe1973..651d41e 100644 --- a/_config.yml +++ b/_config.yml @@ -1,5 +1,6 @@ plugins: - jekyll-locales +- jekyll-ignore-layouts - jekyll-relative-urls - jekyll-dotenv - jekyll-include-cache @@ -55,3 +56,9 @@ images: - 1140 locales: - es +ignored_layouts: +- menu +linked_fields: +- post +- item +- items diff --git a/_data/en.yml b/_data/en.yml index 66b7e83..fbaaf96 100644 --- a/_data/en.yml +++ b/_data/en.yml @@ -49,6 +49,7 @@ time: pm: pm layouts: post: Article + menu: Menu menu: title: Menu items: diff --git a/_data/es.yml b/_data/es.yml index 57f9efa..b4e309e 100644 --- a/_data/es.yml +++ b/_data/es.yml @@ -49,6 +49,7 @@ time: pm: pm layouts: post: Artículo + menu: Menú menu: title: Menú items: diff --git a/_data/layouts/menu.yml b/_data/layouts/menu.yml new file mode 100644 index 0000000..279f4eb --- /dev/null +++ b/_data/layouts/menu.yml @@ -0,0 +1,73 @@ +--- +title: + type: 'string' + required: true + label: + en: '' + es: 'Nombre del ítem' + help: + en: '' + es: 'Tal como aparece en el menú' +post: + type: 'belongs_to' + label: + en: '' + es: 'Artículo' + help: + en: '' + es: 'Si el ítem lleva a un artículo fijo, asociarlo aquí' +item: + type: 'belongs_to' + inverse: items + filter: + layout: menu + label: + en: '' + es: 'Ítem anterior' + help: + en: '' + es: 'Si es un sub ítem, asociar el ítem superior aquí' +items: + type: 'has_many' + inverse: item + filter: + layout: menu + label: + en: '' + es: 'Sub ítemes' + help: + en: '' + es: 'Si el ítem tiene sub ítems, asociarlos aquí' +link: + type: 'string' + label: + en: '' + es: 'Vínculo' + help: + en: '' + es: 'Si el ítem lleva a una página o sección especial, asociarla aquí' +categories: + type: 'array' + label: + en: '' + es: 'Categorías' + help: + en: '' + es: 'Si el ítem lleva un sub menú de categorías, agregarlas aquí' +draft: + type: 'boolean' + label: + es: 'Borrador' + en: 'Draft' + help: + es: 'Este artículo aun no está listo para publicar' + en: "This post isn't ready to be published yet" +order: + type: 'order' + required: true + label: + es: 'Orden' + en: 'Order' + help: + es: 'La posición del artículo en la lista de artículos' + en: 'The post position in the posts list' diff --git a/_includes/item.html b/_includes/item.html new file mode 100644 index 0000000..35d823d --- /dev/null +++ b/_includes/item.html @@ -0,0 +1,38 @@ +{%- comment -%} +El ítem tiene un dropdown si tiene sub ítems o si tiene categorías. +{%- endcomment -%} +{%- assign dropdown = include.item.items | present -%} +{%- unless dropdown -%} +{%- assign dropdown = include.item.categories | present -%} +{%- endunless -%} + + diff --git a/_includes/menu.html b/_includes/menu.html new file mode 100644 index 0000000..ff32e0c --- /dev/null +++ b/_includes/menu.html @@ -0,0 +1,27 @@ +{%- comment -%} +Empezamos con los ítems que no dependen de otros e implementamos +recursivamente. +{%- endcomment -%} +{%- assign items = site.posts | where: 'layout', 'menu' | where: 'item', nil -%} + + diff --git a/_includes/search.html b/_includes/search.html new file mode 100644 index 0000000..9a033ce --- /dev/null +++ b/_includes/search.html @@ -0,0 +1,25 @@ +{%- assign param = include.param | default: 'search' -%} + +
+
+ + +
+
+ +
+ + +
+
+ + +
diff --git a/_sass/menu.scss b/_sass/menu.scss new file mode 100644 index 0000000..60b1080 --- /dev/null +++ b/_sass/menu.scss @@ -0,0 +1,20 @@ +.navbar { + &:focus-within { + .navbar-collapse { + @extend .d-block; + } + } + + .dropdown { + .dropdown-menu { + @extend .d-none; + } + + &:hover, + &:focus-within { + .dropdown-menu { + @extend .d-block; + } + } + } +} diff --git a/assets/css/styles.scss b/assets/css/styles.scss index f70bffc..87a3374 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -38,6 +38,7 @@ $opacities: ( @import "embed"; @import "snap"; @import "editor"; +@import "menu"; @if $debug { /* diff --git a/sutty-base-jekyll-theme.gemspec b/sutty-base-jekyll-theme.gemspec index a80872a..11f23b0 100644 --- a/sutty-base-jekyll-theme.gemspec +++ b/sutty-base-jekyll-theme.gemspec @@ -68,6 +68,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'jekyll-commonmark', '~> 1.3' spec.add_runtime_dependency 'jekyll-dotenv', '>= 0.2' spec.add_runtime_dependency 'jekyll-feed', '~> 0.15' + spec.add_runtime_dependency 'jekyll-ignore-layouts', '~> 0' # Dependencias de desarrollo spec.add_development_dependency 'bundler', '~> 2.1'