Code Monkey home page Code Monkey logo

portfolio-astro's Introduction

Portfolio Site powered by WordPress/GraphQL/Astro

Requirements

Add a variable to your .env and then hit npm run dev:

WORDPRESS_API_URL = https://yoursitename.com/graphql

Routing and Templates

This starter project leans into the WordPress CMS routing capabilities and uses a getNodeByUri query in WPGraphQL to handle any route path that WordPress knows about. This allows you to handle all WordPress content types using the [...uri].astro component. From there, Astro parses the uri and uses that to call getNodeByURI from api.js to fetch data about that resource from the CMS. Once data is returned, we look at the content type and then dynamically resolve a content template from the templates directory.

Adding Content Types

This project comes with built in support for Post, Page, Tag, and Category types, but could easily be extended for custom post types or other native content types. To add support for a custom post type you would do the following:

  1. Add a GraphQL fragment for your post type to getNodeByURI from api.js
  2. Add an Astro component as a template
  3. Add a case to the switch statement in [...uri].astro to catch the content type and resolve the template

Overriding Default Routing

Since routes using rest parameters in Astro come last in the route priority order, you can easily override this catch-all routing pattern by creating a more specific route to handle a given path.

For example, if you want the path /category/food-trucks to be handled by a different Astro component, you can add a corresponding file to the pages directory to override the default ...uri route.

Menus

By default, the menu assigned to the Primary menu location will be used for your header menu.

portfolio-astro's People

Contributors

slurve avatar

Stargazers

Scott Rod avatar $hibaKing avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.