NEXT craftinamerica.org. Base setup for headless wordpress https://www.craftinamerica.org
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.vue 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. // Homepage grid
  2. <template lang="pug">
  3. .page--index.f-row.between
  4. article.w-max
  5. section
  6. ul
  7. li.wide
  8. p 1 - 1
  9. li
  10. p 1 - 2
  11. li
  12. p 1 - 3
  13. li
  14. p 1 - 4
  15. li
  16. p 1 - 5
  17. section
  18. ul.max
  19. li
  20. p 2 - 1
  21. section
  22. ul.flipped
  23. li
  24. p 3 - 1
  25. li
  26. p 3 - 2
  27. li
  28. p 3 - 3
  29. li
  30. p 3 - 4
  31. li.wide
  32. p 3 - 5
  33. //- if sticky
  34. //- li.f-row.wrap.w-max
  35. //- h3(v-if="!allStickyLoaded") loading...
  36. //- section(v-else-if="allStickyLoaded").shadow
  37. //- h4.t-cap sticky
  38. //- ul
  39. //- li(v-for="sticky in allSticky")
  40. //- p {{ sticky.type }}: {{ sticky.title }}
  41. //- loading
  42. //- li.f-row.wrap.w-max
  43. //- h3(v-if="!allPagesLoaded") loading...
  44. //- .content(v-else-if="allPages['welcome']" v-html="allPages['welcome'].content")
  45. //- top section
  46. //- section(v-if="allEpisodesLoaded").shadow
  47. //- router-link(:to="`/episodes`")
  48. //- h3.t-up episodes
  49. //- router-link(:to="`/episodes/${Object.values(allEpisodes)[0]}`")
  50. //- img.index(src="https://i1.wp.com/www.craftinamerica.org/wp-content/uploads/2020/09/20200210_133120-e1599254267307.jpg")
  51. //- h2.t-up.t-cntr {{ Object.values(allEpisodes)[0] }}
  52. //- p episode excerpt, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl ligula, ullamcorper nec dapibus a, ullamcorper a elit. Integer mattis interdum mauris, sit amet feugiat dui consequat et. Curabitur cursus justo quis nunc euismod, nec ornare sem ornare. Mauris eget purus finibus, tempus tellus sed, maximus nisi. Fusce cursus placerat sodales...[&hellip;]
  53. //- section(v-if="allExhibitionsLoaded").shadow
  54. //- router-link(:to="`/exhibitions`")
  55. //- h3.t-up exhibitions
  56. //- router-link(:to="`/exhibitions/${Object.values(allExhibitions)[0]}`")
  57. //- img.index(src="https://i1.wp.com/www.craftinamerica.org/wp-content/uploads/2020/09/20200210_133120-e1599254267307.jpg")
  58. //- h2.t-up.t-cntr {{ Object.values(allExhibitions)[0] }}
  59. //- p episode excerpt, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl ligula, ullamcorper nec dapibus a, ullamcorper a elit. Integer mattis interdum mauris, sit amet feugiat dui consequat et. Curabitur cursus justo quis nunc euismod, nec ornare sem ornare. Mauris eget purus finibus, tempus tellus sed, maximus nisi. Fusce cursus placerat sodales...[&hellip;]
  60. //- section(v-if="allEventsLoaded").shadow
  61. //- router-link(:to="`/events`")
  62. //- h3.t-up events
  63. //- router-link(:to="`/events/${Object.values(allEvents)[0]}`")
  64. //- img.index(src="https://i1.wp.com/www.craftinamerica.org/wp-content/uploads/2020/09/20200210_133120-e1599254267307.jpg")
  65. //- h2.t-up.t-cntr {{ Object.values(allEvents)[0] }}
  66. //- p episode excerpt, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl ligula, ullamcorper nec dapibus a, ullamcorper a elit. Integer mattis interdum mauris, sit amet feugiat dui consequat et. Curabitur cursus justo quis nunc euismod, nec ornare sem ornare. Mauris eget purus finibus, tempus tellus sed, maximus nisi. Fusce cursus placerat sodales...[&hellip;]
  67. //- section(v-if="allPostsLoaded").shadow
  68. //- router-link(:to="`/posts`")
  69. //- h3.t-up shorts PLACEHOLDER
  70. //- router-link(:to="`/posts/${Object.values(allPosts)[0]}`")
  71. //- img.index(src="https://i1.wp.com/www.craftinamerica.org/wp-content/uploads/2020/09/20200210_133120-e1599254267307.jpg")
  72. //- h2.t-up.t-cntr {{ Object.values(allPosts)[0] }}
  73. //- p episode excerpt, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl ligula, ullamcorper nec dapibus a, ullamcorper a elit. Integer mattis interdum mauris, sit amet feugiat dui consequat et. Curabitur cursus justo quis nunc euismod, nec ornare sem ornare. Mauris eget purus finibus, tempus tellus sed, maximus nisi. Fusce cursus placerat sodales...[&hellip;]
  74. //- //- middle row
  75. //- section(v-if="allArtistsLoaded").shadow
  76. //- router-link(:to="`/artists`")
  77. //- h3.t-up artists
  78. //- router-link(:to="`/artists/${Object.values(allArtists)[0]}`")
  79. //- img.index(src="https://i1.wp.com/www.craftinamerica.org/wp-content/uploads/2020/09/20200210_133120-e1599254267307.jpg")
  80. //- h2.t-up.t-cntr {{ Object.values(allArtists)[0] }}
  81. //- p episode excerpt, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl ligula, ullamcorper nec dapibus a, ullamcorper a elit. Integer mattis interdum mauris, sit amet feugiat dui consequat et. Curabitur cursus justo quis nunc euismod, nec ornare sem ornare. Mauris eget purus finibus, tempus tellus sed, maximus nisi. Fusce cursus placerat sodales...[&hellip;]
  82. </template>
  83. <script>
  84. import { postTypeGetters, scrollTop } from './mixin-post-types'
  85. import { convertTitleCase, postTypes } from '@/utils/helpers'
  86. export default {
  87. mixins: [postTypeGetters, scrollTop],
  88. created() {
  89. // console.log(wp)
  90. postTypes.forEach(type => {
  91. const capitalizedType = convertTitleCase(type)
  92. this.$store.dispatch(`getAll${capitalizedType}`)
  93. })
  94. this.checkAndSetHero('welcome')
  95. },
  96. methods: {
  97. async checkAndSetHero(type) {
  98. if(!this['allPagesLoaded']) {
  99. await this.$store.dispatch('getAllPages')
  100. }
  101. const page = this.allPages[type]
  102. if(!page) return
  103. let json = { url: page.featured, heroType: 'image' }
  104. if(page.hero && JSON.parse(page.hero) && JSON.parse(page.hero).url) {
  105. json = JSON.parse(page.hero)
  106. json.heroType = 'video'
  107. }
  108. this.$store.commit('SET_HERO', json)
  109. },
  110. }
  111. }
  112. </script>
  113. <style lang="postcss">
  114. @import '../sss/variables.sss'
  115. @import '../sss/theme.sss'
  116. .page--index
  117. > article
  118. display: flex
  119. justify-content: space-around
  120. flex-direction: column
  121. align-items: stretch
  122. section
  123. border: 1px yellow solid
  124. ul
  125. list-style: none
  126. @media (min-width: $medium)
  127. .page--index > article > section
  128. &:nth-of-type(2)
  129. margin: 1em auto
  130. ul
  131. display: grid
  132. grid-template-columns:
  133. 50% 24% 24%
  134. grid-template-rows:
  135. 47% 47%
  136. gap: 4% 1%
  137. justify-items: strech
  138. align-items: stretch
  139. height: auto
  140. li
  141. min-height: 20em
  142. background-color: purple
  143. &.wide:nth-of-type(1)
  144. grid-column-start: 1
  145. grid-row-start: 1
  146. grid-row-end: end
  147. &:nth-of-type(2), &:nth-of-type(3)
  148. grid-row-start: 1
  149. grid-column-start: 2
  150. &:nth-of-type(3)
  151. grid-column-start: 3
  152. &:nth-of-type(4), &:nth-of-type(5)
  153. grid-column-start: 2
  154. grid-row-start: 2
  155. &:nth-of-type(5)
  156. grid-column-start: 3
  157. &.max
  158. grid-template-columns:
  159. auto
  160. grid-template-rows:
  161. auto
  162. &.flipped
  163. grid-template-columns:
  164. 24% 24% 50%
  165. li
  166. &:nth-of-type(3)
  167. grid-column-start: 1
  168. grid-row-start: 2
  169. &.wide:nth-of-type(5)
  170. grid-column-start: 3
  171. grid-row-start: 1
  172. grid-row-end: end
  173. </style>