Biblioteka queries
Biblioteka queriesZastąp elementy tekstowe na stronie Bricks wstrzykniętą zawartością

Zastąp elementy tekstowe na stronie Bricks wstrzykniętą zawartością

Ta query zastępuje elementy text na stronie Bricks danymi wstrzykniętymi za pomocą zmiennych.

Ta query wymaga, aby rozszerzenie Bricks było włączone.

Query wymaga następujących zmiennych:

  • $customPostId: ID niestandardowego wpisu Bricks do zaktualizowania
  • $descriptions: Tablica ciągów znaków zastępujących elementy text
query InitializeGlobalVariables
  @configureWarningsOnExportingDuplicateVariable(enabled: false)
{
  emptyArray: _echo(value: [])
    @export(as: "elementToUpdateIDs")
}
 
query ExportData($customPostId: ID!)
  @depends(on: "InitializeGlobalVariables")
{
  customPost(by:{ id: $customPostId }, status: any) {
    id
    title
    bricksData(filterBy: { include: ["text"] })
      @underEachArrayItem
        @underJSONObjectProperty(by: { key: "id" })
          @export(as: "elementToUpdateIDs")
  }
}
 
query ProcessData($descriptions: [String!]!)
  @depends(on: "ExportData")
{  # Make sure the number of descriptions is the same as the number of elements to update
  numberOfDescriptions: _arrayLength(array: $elementToUpdateIDs)
  descriptions: _arrayPad(array: $descriptions, length: $__numberOfDescriptions, value: "")
    @export(as: "adaptedDescriptions")
}
 
query AdaptData
  @depends(on: "ProcessData")
{
  elementToUpdateIDs: _echo(value: $elementToUpdateIDs)
  elementToUpdateTexts: _echo(value: $adaptedDescriptions)
  elementToUpdateMergeInputElements: _echo(value: $elementToUpdateIDs)
    @underEachArrayItem(
      passIndexOnwardsAs: "index",
      passValueOnwardsAs: "elementToUpdateID"
      affectDirectivesUnderPos: [1, 2]
    )
      @applyField(
        name: "_arrayItem",
        arguments: {
          array: $adaptedDescriptions,
          position: $index
        },
        passOnwardsAs: "elementToUpdateText"
      )
      @applyField(
        name: "_echo",
        arguments: {
          value: {
            id: $elementToUpdateID,
            settings: {
              text: $elementToUpdateText
            }
          }
        }
        setResultInResponse: true
      )
    @export(as: "elementToUpdateMergeInputElements")
}
 
mutation UpdateData($customPostId: ID!)
  @depends(on: "AdaptData")
{
  bricksMergeCustomPostElementDataItem(input: {
    customPostID: $customPostId
    elements: $elementToUpdateMergeInputElements
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
          @passOnwards(as: "message")
          @fail(
            message: $message
            condition: ALWAYS
          )
      }
    }
    customPost {
      __typename
      ...on CustomPost {
        id
        bricksData
      }
    }
  }
}