Изменить макет в соответствии с шаблоном WordPress страницы NuxtJs - PullRequest
0 голосов
/ 06 января 2020

Я хочу получить макет изменения в соответствии с шаблоном WordPress (я получаю данные с API остальных)

Данные API

{
  "id": 47, 
  "template": "test.php",    // need vue template according this 
}
export default { 
  validate ({ params }) {
    return !isNaN(+params.id)
  },
  async asyncData ({ params, error }) {
    return fetch('http://wordpress.local/wp-json/wp/v2/'+params.postType+'/'+params.id)
      .then(response => response.json())
      .then(res => {
          return { users: res } 
      })
  },
  layout () { 
    return 'blog' // Change here according to wordpress page template 
  },
}

1 Ответ

0 голосов
/ 15 января 2020

Я нашел способ передать что-то из промежуточного программного обеспечения в хранилище, которое можно использовать внутри функции макета. Вот базовый c пример, который я собрал.

middleware/get-layout.js Я имитирую асинхронный вызов c здесь, также может быть результатом ax ios .post (), например

export default async (ctx) => {
    return new Promise((resolve, reject) => {
        // you can also access ctx.params here
        ctx.store.commit('setLayout', 'new');
        resolve();
    });
}

store/index.js здесь нет ничего сумасшедшего

export const state = () => ({
    layout: ''
})

export const mutations = {
    setLayout(state, layout) {
        state.layout = layout;
    }
}

Промежуточное программное обеспечение может быть зарегистрировано глобально для каждого маршрута в nuxt.config.js или только для страниц, где вам нужен этот лог c.

Наконец, используя его в компоненте страницы * свойство 1014 *:

layout(ctx) {
  return ctx.store.state.layout;
}

Я протестировал его с new.vue в папке layout.

...