diff --git a/src/components/Books/Books.js b/src/components/Books/Books.js index 8e91cfe..48b3b29 100644 --- a/src/components/Books/Books.js +++ b/src/components/Books/Books.js @@ -1,28 +1,17 @@ import React from 'react'; +import slugify from '../../helpers/slugify' +import Img from "gatsby-image" import './Books.scss' -const Books = () => { +const Books = ({ data: { edges } }) => { return (
-

Lorem ipsum dolor sit amet, consectetur adipiscing.

-

- book -

-

- Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit. -

-

Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?

- купить на litres.ru -

Lorem ipsum dolor sit amet, consectetur adipiscing.

-

- book -

-

- Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit. -

-

Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?

- купить на litres.ru + {edges.map(({ node }, i) =>
+

{node.frontmatter.title} {node.frontmatter.title}

+ {node.frontmatter.title} +
+
)}
) diff --git a/src/components/Books/Books.scss b/src/components/Books/Books.scss index 08e24cb..ca95673 100644 --- a/src/components/Books/Books.scss +++ b/src/components/Books/Books.scss @@ -14,6 +14,9 @@ } & .books-inner { margin-bottom: 35px; + & .md { + margin-top: 15px; + } } } diff --git a/src/components/Offers/Books/BookItem.js b/src/components/Offers/Books/BookItem.js new file mode 100644 index 0000000..2ae0529 --- /dev/null +++ b/src/components/Offers/Books/BookItem.js @@ -0,0 +1,13 @@ +import React from 'react'; +import { Link } from 'gatsby' +import slugify from '../../../helpers/slugify' + +const BookItem = ({ title }) => { + return ( +
+ {title} +
+ ) +} + +export default BookItem \ No newline at end of file diff --git a/src/components/Offers/Books/Books.js b/src/components/Offers/Books/Books.js new file mode 100644 index 0000000..cb29190 --- /dev/null +++ b/src/components/Offers/Books/Books.js @@ -0,0 +1,19 @@ +import React from 'react'; + +import BooksIcon from '../../../images/books-icon.svg' + +const Books = ({ children }) => { + return ( +
+
+ + Что почитать +
+
+ {children} +
+
+ ) +} + +export default Books \ No newline at end of file diff --git a/src/components/Offers/Offers.js b/src/components/Offers/Offers.js index 42dffeb..f1002d0 100644 --- a/src/components/Offers/Offers.js +++ b/src/components/Offers/Offers.js @@ -1,19 +1,21 @@ import React from 'react'; import usePopularArticlesQuery from '../../hooks/usePopularArticlesQuery' import useTagsQuery from '../../hooks/useTagsQuery' +import useBooksQuery from '../../hooks/useBooksQuery' import './Offers.scss' import Popular from './Popular/Popular' import Tags from './Tags/Tags' +import Books from './Books/Books' import Subscription from './Subscription/Subscription' import PopularItem from './Popular/PopularItem' import TagItem from './Tags/TagItem' - -import BooksIcon from '../../images/books-icon.svg' +import BookItem from './Books/BookItem' const Offers = () => { const { articles } = usePopularArticlesQuery() const { tags } = useTagsQuery() + const { books } = useBooksQuery() return (
@@ -23,17 +25,9 @@ const Offers = () => { {tags.map(({ node }, i) => )} -
-
- - Что почитать -
-
- {[1,2,3,4,5].map(e =>
- Lorem ipsum dolor sit amet, consectetur. -
)} -
-
+ + {books.map(({ node }, i) => )} +
) diff --git a/src/hooks/useBooksQuery.js b/src/hooks/useBooksQuery.js new file mode 100644 index 0000000..919e617 --- /dev/null +++ b/src/hooks/useBooksQuery.js @@ -0,0 +1,20 @@ +import { useStaticQuery, graphql } from 'gatsby' + +const useBooksQuery = () => { + const { allMarkdownRemark: { edges } } = useStaticQuery(graphql` + { + allMarkdownRemark(filter: {frontmatter: {templateKey: {eq: "book"}}}) { + edges { + node { + frontmatter { + title + } + } + } + } + } + `) + return { books: edges } +} + +export default useBooksQuery \ No newline at end of file diff --git a/src/pages/books.js b/src/pages/books.js index d605510..cf02a59 100644 --- a/src/pages/books.js +++ b/src/pages/books.js @@ -1,4 +1,5 @@ import React from "react" +import { graphql } from 'gatsby' import SEO from '../components/SEO/SEO' import Layout from '../components/Layout/Layout' import Books from '../components/Books/Books' @@ -7,7 +8,7 @@ import Newsletter from '../components/Newsletter/Newsletter' import BooksIcon from '../images/books-icon__large.svg' -const BooksPage = () => { +const BooksPage = ({ data: { allMarkdownRemark: edges } }) => { return ( @@ -30,7 +31,7 @@ const BooksPage = () => {
- +
@@ -43,4 +44,26 @@ const BooksPage = () => { ) } +export const query = graphql` + { + allMarkdownRemark(filter: {frontmatter: {templateKey: {eq: "book"}}}) { + edges { + node { + frontmatter { + title + image { + childImageSharp { + fluid { + ...GatsbyImageSharpFluid + } + } + } + } + html + } + } + } + } +` + export default BooksPage diff --git a/src/styles/global.scss b/src/styles/global.scss index 582bd7f..37b8da9 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -45,6 +45,13 @@ } } +.anchor { + display: block; + position: relative; + top: -150px; + visibility: hidden; +} + .inner { border-bottom: 1px solid #EBEBEB; padding-bottom: 15px; diff --git a/static/admin/config.yml b/static/admin/config.yml index b833722..c32ab43 100644 --- a/static/admin/config.yml +++ b/static/admin/config.yml @@ -36,4 +36,14 @@ collections: slug: "{{year}}-{{month}}-{{day}}" fields: - {label: "Template key", name: "templateKey", widget: "hidden", default: "tag"} - - {label: "Название тэга", name: "title", widget: "string"} \ No newline at end of file + - {label: "Название тэга", name: "title", widget: "string"} + - name: 'books' + label: "Book" + folder: 'content/books' + create: true + slug: "{{year}}-{{month}}-{{day}}" + fields: + - {label: "Template key", name: "templateKey", widget: "hidden", default: "book"} + - {label: "Название книги", name: "title", widget: "string"} + - {label: "Обложка", name: "image", widget: "image"} + - {label: "Описание книги", name: "body", widget: "markdown"} \ No newline at end of file