4.3. マルチサービスへのサインアップ
4.3.1. サービスに関する情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
適切なサインアップリンクを構築する必要があるサービスについて、その情報をすべて取得するためには、サービスオブジェクトをループスルーしなければなりません。サービスは、モデルオブジェクトの一部です。
{% for service in provider.services %}
.
.
.
{% endfor %}
{% for service in provider.services %}
.
.
.
{% endfor %}
4.3.2. サインアップカラムの設定 リンクのコピーリンクがクリップボードにコピーされました!
すでにレイアウトとサービスオブジェクトにアクセスするループがあります。次に、サービスとサインアップリンクに関する情報の表示方法を決定します。たとえば、カラムに分けて、サービスの説明とサインアップリンク (カラム下部) を表示します。すべてのカラムは service-column クラスの div ボックスに対応し、ここに必要なすべての情報が収められます。
コンテナー内部はカスタムの説明フィールドとして機能します。service.name はサービスの名前で、ここではコンテナーの名前になります。
4.3.3. サブスクリプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
次は、カスタムのサービスサインアップの主要部分です。サインアップリンクを作成するため、サインアップ URL とサービス ID を抽出します。URL のオブジェクトからサインアップ URL を、ループで繰り返すサービスオブジェクトからサービス ID を、それぞれ取得します。最終的なリンクコードは以下のようになります。
<a href="{{ urls.signup }}?{{ service | toparam }}">Signup to {{ service.name }}</a>
<a href="{{ urls.signup }}?{{ service | toparam }}">Signup to {{ service.name }}</a>
いくつかのサービスについて、ユーザーがすでにサインアップ済みであることも考慮する必要があります。確認するための条件ブロックを作成します。
{% unless service.subscribed? %}
<a href="{{ urls.signup }}?{{ service | toparam }}">Signup to {{ service.name }}</a>
{% endunless %}
{% unless service.subscribed? %}
<a href="{{ urls.signup }}?{{ service | toparam }}">Signup to {{ service.name }}</a>
{% endunless %}
これを使用して、最終的なコードを生成できます。
4.3.4. スタイリング リンクのコピーリンクがクリップボードにコピーされました!
対象のサービスの数に応じて、生成したマークアップに最終的な仕上げを行います。この例ではサービスが 2 つあるため、service-column div の CSS コードは以下のようになります。
この例では、パーセントベースのレイアウトを使用して、含まれる div の大きさを元にカラムの幅を動的に割り当てています。
これで、正常に動作し、見た目の整った複数サービスのサブスクリプションページができたはずです。これですべての手順が終了しました。
カラムを特定の順序で表示する場合は、サービス名または利用可能なその他の値を条件とする条件式 (if/else/case) を使用してみてください。