Arborescence des pages

Paramétrage


Le connecteur est programmé pour fonctionner avec deux CMD Headless différents : WordPress et Directus. Pour configurer le CMS qui sera utilisé par le connecteur, il y a deux fichiers à modifier.

Environnement


Pour utiliser le connecteur, il faut renseigner les informations du CMS qui sera utilisé comme dans l'exemple ci-dessous. Il est possible de supprimer les éléments du CMS qui n'est pas utilisé.

fichier .env
# DIRECTUS
DIRECTUS_URL=http://localhost:8055
DIRECTUS_KEY=key
DIRECTUS_SOCIAL_NETWORK_PATH=/items/social_networks
DIRECTUS_PAGE_PATH=/items/pages
DIRECTUS_LANGUAGE_PATH=/items/languages
DIRECTUS_CHANNEL_PATH=/items/channels
DIRECTUS_FEATURE_PATH=/items/features
DIRECTUS_ASSETS_PATH=/assets
DIRECTUS_IMPORTANT_NEWS_PATH=/items/important_news
DIRECTUS_CONTACT_US_PATH=/items/contact_us
DIRECTUS_LOGIN_PATH=/items/login
DIRECTUS_WIDGET_PATH=/items/widgets
DIRECTUS_FIELDS=?fields[]=*
DIRECTUS_FIELDS_TRANSLATIONS=,translations.*
DIRECTUS_FIELDS_AUTHORIZATION=,authorization.*

# WORDPRESS
WORDPRESS_URL=http://localhost:9090/wp-json/wp/v2
WORDPRESS_ASSETS_PATH=http://localhost:9090/wp-content/uploads/
WORDPRESS_OPTIONS=?acf_format=standard&_fields=acf,id&per_page=100
WORDPRESS_SOCIAL_NETWORK_PATH=/social-network
WORDPRESS_FEATURE_PATH=/features
WORDPRESS_PAGE_PATH=/page-api
WORDPRESS_IMPORTANT_NEWS_PATH=/important-news
WORDPRESS_CONTACT_US_PATH=/contact-us
WORDPRESS_LOGIN_PATH=/login
WORDPRESS_CHANNEL_PATH=/channels
WORDPRESS_WIDGET_PATH=/widgets
WORDPRESS_LANGUAGE_PATH=/language


Modules


Dans le fichier module, il faut importer le module que l'on souhaite utiliser et le renseigner dans la partie imports comme ci-dessous indiqué par les chevrons. Il faudra également modifier le module qui s'occupe des assets.

fichier app.module.ts
@Module({
  imports: [
    GraphQLModule.forRoot<ApolloDriverConfig>({
      driver: ApolloDriver,
      autoSchemaFile: join(process.cwd(), 'src/schema.gpl'),
      sortSchema: true,
    }),
    ConfigModule.forRoot({ envFilePath: '.env' }),
    <<WordpressModule>>,
  ],
})
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(<<WordpressImageMiddleware>>).forRoutes('assets');
  }
}



Paramètres d'appels

URL en méthode POST

<host>/graphql
  • host : adresse du serveur


Header de la requête :

{
  "Content-Type": application/json
}


Body des requêtes :


Channels
query {
	channels{
        id
        code
        routerLink
        icon
        color
        filterable
        translations{
            languagesCode
            label
        }
    }
}


Contact Us
query {
	contactUs{
        id
        to
        icon
        translations{
            languagesCode
            content
            title
        }
    }
}


Features
query {
	features(status: "published") {
        id
        description
        icon
        iconSvgDark
        iconSvgLight
        link
        menu
        position
        routerLink
        ssoService
        status
        type
        translations{
            languagesCode
            searchKeywords
            shortTitle
            title
        }
        authorization {
            roles
            authorization
        }
        settingsByRole{
            position
            role
        }
    }
}


Pages
query {
	pages(status: "published") {
        id
        status
        icon
        iconSvgDark
        iconSvgLight
        position
        statisticName
        translations {
            languagesCode
            content
            title
        }
    }
}


Widgets
query {
	widgets(status: "published") {
        id
		status
        description
        widget
        iconSvgDark
        iconSvgLight
        icon
        link
        position
        ssoService
		statisticName
        routerLink
        color
        type
        translations{
            languagesCode
            content
            title
        }
        authorization {
            roles
            authorization
        }
        settingsByRole{
            position
            role
        }
    }
}


Social Networks
query {
	socialNetworks{
        id
        icon
        link
        title
    }
}


Login
query {
	login{
        id
        translations {
            languagesCode
            connexionText
            notAuthenticatedText
        }
    }
}


Languages
query {
	languages{
        code
        direction
        name
    }
}


Important News
query {
	importantNews(status: "published"){
        id
        status
        image
        link
        color
        position
        statisticName
        translations{
            languagesCode
            content
            buttonLabel
            title
        }
        authorization {
            roles
            authorization
        }
    }
}


URL en méthode GET 

<host>/assets/<image-name>
  • host : adresse du serveur
  • image-name : nom de l'image 

Format de retour

Format attendu

  • Code HTTP 200 : si tout s'est bien passé

Cas d'erreur

  • Erreur HTTP 4xx ou 5xx : En cas de problème ou erreur

Exemple


URL en méthode POST
<host>/graphql


Body de la requête
query {
	languages{
        code
        direction
        name
    }
}


Réponse
{
    "data": {
        "languages": [
            {
                "code": "fr",
                "direction": "ltr",
                "name": "Français"
            },
            {
                "code": "en",
                "direction": "ltr",
                "name": "English"
            }
        ]
    }
}



  • Aucune étiquette