1

header.html を指定する layout.html を使用するグローバル ルートがあります。次の方法を知りたいです。

1) ヘッダーなしで、適​​切なフォーマットでログイン/サインアップ用のメイン ランディング ページを用意します。(Atmosphere の UserAccounts を使用していますが、フォーマットが異なります。理由はわかりません)。また、layout.js のヘッダーは削除できません。

2) ログイン/サインインすると、メイン ページに移動する必要があります。

誰かがどのようにアドバイスできますか?

Router.configure({
      layoutTemplate: 'layout', //This is where header is specified globally
      waitOn: function() { 
        return [Meteor.subscribe('notifications')]
      }
    });

Router.route('/', {
  name: 'auth'
}); //added this new line

Router.route('/posts', {
  name: 'home',
  controller: NewPostsController
});

var requireLogin = function() {
  if (! Meteor.user()) {
    if (Meteor.loggingIn()) {
      this.render(this.loadingTemplate);
    } else {
      this.render('accessDenied');
    }
  } else {
    this.next();
  }
}

Router.onBeforeAction('dataNotFound', {only: 'postPage'});
Router.onBeforeAction(requireLogin, {only: 'postSubmit'});


これは、グローバルに定義された layout.html です。

<template name="layout">
  <div class="container">
    {{> header}}
    {{> errors}}

    <div id="main">
      {{> yield}}
    </div>
  </div>
</template>

@Chase の提案後に更新します。- ルーティングで機能し、ヘッダーがなくなりました。- ただし、フォーマットは Web サイトとは異なります。

http://useraccounts.meteor.com/のように見えるはずですが、私が持っているものを以下に示します ここに画像の説明を入力

4

2 に答える 2

2

異なる設定で 2 つの異なるレイアウト テンプレートを作成できます。

Javascript

Router.configure({
      layoutTemplate: 'adminLayout', //layout without header
   });

Router.route('/', { //main page, different layout
     layout:layout,
     name: 'auth'
  });

HTML

<template name="adminLayout">
  <div class="container">
    {{> errors}}
    <div id="main">
      {{> yield}}
    </div>
  </div>
</template>

これにより、さまざまなレイアウト、さまざまなルートが得られます。

于 2015-04-22T15:58:00.603 に答える
2

この設定を使用すると、ルートごとにヘッダー付きのレイアウトを設定する必要がなくなります。

ユーザー アカウント パッケージには、Iron Router プラグインが含まれており、ユーザーがサインインしていることを確認します (詳細)。また、ユーザー アカウント パッケージ (詳細) によって提供されるルートを構成して、ユーザー アカウントのサインアップ ページに直接ルーティングできるようにします。

Javascript

Router.configure({
    layoutTemplate: 'layout' //main layout with header
});

//Iron router plugin to ensure user is signed in
AccountsTemplates.configureRoute('ensureSignedIn', {
    template: 'atTemplate', //template shown if user is not signed in
    layoutTemplate: 'atLayout' //template for login, registration, etc
});

//Don't require user to be logged in for these routes
Router.plugin('ensureSignedIn', {
    except: ['login', 'register']
});

//Configure route for login
AccountsTemplates.configureRoute('signIn', {
    name: 'login',
    path: '/login',
    template: 'atTemplate',
    layoutTemplate: 'atLayout',
    redirect: '/'
});

//Configure route for registration
AccountsTemplates.configureRoute('signUp', {
    name: 'register',
    path: '/register',
    template: 'atTemplate',
    layoutTemplate: 'atLayout',
    redirect: '/'
});

//Home page to show once logged in
Router.route('/', {
    name: 'home',
    action: function(){
        this.render('home');
    }
});

HTML

<template name="layout">
    <div class="container">
        {{> header}}
        {{> errors}}

        <div id="main">
            {{> yield}}
        </div>
    </div>
</template>

<template name="atLayout">
    <div class="at-container">
        {{> yield}}
    </div>
</template>

<template name="atTemplate">
    {{> atForm}}
</template>
于 2015-04-23T02:51:06.050 に答える