Создавать разные страницы руля с одинаковым макетом - PullRequest
0 голосов
/ 21 января 2019

У меня возникли проблемы с моим шаблоном руля, и я надеялся, что вы поможете мне разобраться.Мне нужно было бы генерировать разные страницы, каждая из которых содержит разные партиалы.Однако они имеют одинаковую структуру hbs.Это функции, которые я использую, используя gulp.В качестве компилятора я использую 'gulp-compile-handlebars'

function createPages() {
    if (fs.existsSync(dir.pages)) {
        fileList = getFiles(dir.pages);
        let pages = []
        for(let i = 0; i < fileList.length; i++) {
            pages.push(
                gulp.src('src/pages/' + fileList[i])
                    .pipe(handlebars(contentData, {
                        ignorePartials: true,
                        helpers: helpers,
                        batch: ['src/partials']
                    }))
                    .pipe(rename(function(path){
                        path.extname = ".hbs"
                    }))
                    .pipe(gulp.dest('_tmp/' + i))
            )
        }
        return merge(pages)
    }
}

function createViews() {
    let views = []

    for(let j = 0; j < fileList.length; j++) {
        let fileName = fileList[j].split('.').slice(0,-1).join()
        let view = gulp.src('src/layouts/*.hbs')
            .pipe(handlebars(contentData, {
                partials: {
                    body: require('./_tmp/' + j + '/' + fileName + '.hbs')
                }
            }))
            .pipe(rename(fileName + ".html"))
            .pipe(gulp.dest('dist'))
        views.push(view)
    }
    return merge(views)
}

Первый - это тот, который для каждой страницы, он компилирует контент с помощниками и частями и перемещает их в _tmpпапка.Я могу гарантировать, что содержимое этих новых сгенерированных страниц отличается друг от друга (что я и хочу).

Второе, вместо этого, попытка получить файл макета и для каждой страницы, которую я имею,внедряет его частичку "body", которая будет самой страницей.Однако генерируются разные страницы с одинаковым содержимым.Я думаю, что проблема в этой части кода

.pipe(handlebars(contentData, {
                partials: {
                    body: require('./_tmp/' + j + '/' + fileName + '.hbs')
                }
            }))

, потому что мне кажется, что это не позволит мне иметь две разные партиалы с одинаковыми именами, даже если они создаются динамически.Любое предложение о том, как подойти к этому?

просто для справки, это layout.hbs

...
    <body>
        {{> body }}
    </body>
...