YKAKO
1
「執筆者」に登録したメンバーの一覧ページを作成し、
そこでは、登録した「アバター」「ウェブサイトURL」を表示させたいと思っています。
以下のページを参考にしてみたのですが上手く取得できていない状態です。
恐らく、執筆者個別のページ作成の解説なんだろうと推していて、今回の要件には該当しないのでは、と感じています。
ブログ執筆者、タグ、シンプル リスト ページ
最終的には、「執筆者」では登録できない補足情報をHubDBで管理し、名前が一致したら該当HubDBのデータも取得する…という状態にしたいと思っています。
何か最適な方法があればご教示いただけますと幸いです。
@YKAKO さん、コミュニティーへの投稿ありがとうございます。
英語版Communityサイトからの情報ではありますが、HubDBとHubl(blog_recent_author_posts)を使ってブログ執筆者に関するダイナミックページを作成するというアドバイスが提供されていました。ご参考となるかわかりませんが、ご相談内容と関連しているかと思いますので以下にリンクします:
Author Pages for All Blogs
また、HubSpotカスタマーサポートでもある程度のトラブルシューティングができるかもしれません。よろしければサポートへも相談されてみてください。
@assi さん> こちらの質問なのですが、もし何かアドバイスがあればぜひお願いします!
assi
3
YKAKO
4
@assi さん、ありがとうございます!
`blog_authors` 関数は試してみたのですが、空「[]」で返ってきている状況です。
今回作成している執筆者一覧は、いわゆるブログ一覧ページとはデザインが異なるため別のテンプレとして作成していまして、構成としては最終的に以下のようなものを作りたいと思っております。
├執筆者一覧(テンプレ②)│ └各執筆者の記事一覧…(テンプレ①&執筆者スラッグで自動で生成されているものとして認識)└記事一覧(テンプレ①) └記事…
なお、執筆者一覧ページのテンプレートでは、「templateType: blog_listing」とするとエラーで保存できないため(恐らく1つのブログに対して1つのみ存在できるものと認識しています)、「templateType: page」としているのですが、`blog_authors` 関数は「 blog_listing」では出力されるので、通常のpageではHubDBを使うしかないのかなと思っていたところでした。
その場合の懸念点として、HubDBで執筆者画像を管理した場合、「執筆者」のほうでも登録できるアバター画像と2重管理(実質アバターが使用しない状態?)になってしまうので、できれば避けたい…という意図もあり今回模索している感じです。
▼①ブログ一覧:
<!--templateType: blog_listingisAvailableForNewContent: truelabel: ブログ一覧テンプレート-->{% if blog_author %}// 各執筆者記事の一覧用コード{% endif %}// 共通のコード{% unless blog_author %}// 各執筆者記事の一覧用コードでは出力したくないコード{% endunless %}
▼②執筆者一覧テンプレ:
<!--templateType: page ←「blog_listing」で保存するとエラーが出るため「page」にisAvailableForNewContent: truelabel: 執筆者一覧テンプレート-->↓↓↓ []で返ってくる ↓↓↓{{ blog_authors("default", 250) }}{% set my_authors = blog_authors("default", 250) %}<ul>{% for author in my_authors %}<li><a href="{{ blog_author_url(group.id, author.slug) }}">{{ author }}</a></li>{% endfor %}</ul>
assi
5
@YKAKO `blog_authors` 関数の第一引数の値がポイントになります!
ドキュメントには `{% set my_authors = blog_authors(“default”, 250) %}` と記されていますが、この「default」という部分が第一引数で、「どのブログからデータを持ってくるか?」を示しています。
「default」の場合は「いま表示しているブログ」となり、「templateType: blog_listing」の場合はテンプレートがブログのデータを元から保持しているため、「default」のままでも期待通りデータが取得できます。
ただし「templateType: page」の場合、これはウェブページに使われるテンプレートですのでテンプレートがブログのデータを保持していません。
そのため、「default」の部分に「どのブログか?」を教えるためブログIDを入れてあげると、ウェブページでもブログのデータが取得できるようになります。
具体的には次のような形になります。
```
{# ブログIDによる指定 #}
{% set my_authors = blog_authors(“167691573525”, 250) %}
```
この「167691573525」という数字は環境やブログごとに異なりますが、この数字はブログ設定画面から取得できます。
[設定(右上の歯車アイコン)] → [ツール] → [コンテンツ] → [ブログ] よりブログ設定画面を開き、対象のブログを選択している状態でURLからブログIDをコピーしてください(下記スクリーンショット参照)。
YKAKO
6
@assi さん、とても分かりやすい解説ありがとうございます!
ご指南いただいたように、「templateType: page」でもブログIDを指定することで執筆者を取得することができました。
重ねての質問すみません。「執筆者」として登録しているメンバーのうち、執筆記事がないメンバーのデータも含めて全員分を取得することは可能なのでしょうか。(ドキュメント通りですと執筆した記事があるメンバーのみのデータが取得される状態でした。)
assi
7
@YKAKO
> 「執筆者」として登録しているメンバーのうち、執筆記事がないメンバーのデータも含めて全員分を取得することは可能なのでしょうか。
こちらは出来ないですね…。執筆者自体はブログの中にあるデータではなく、ブログと同列のデータであり、またHubSpotはブログを複数持てることが前提になっています。
執筆者がブログ記事に指定されることで初めて「複数あるうち1つのブログの執筆者となった(= 関連を持った)」という見なし方なので、記事が無いとそのブログの執筆者とは見なされません。
また残念ながらブログを指定せず執筆者を一覧取得する関数は無いため、それを実現するにはご想定されていた通りHubDBも併用した若干二重管理的な運用になってしまうと思います。。
YKAKO
8
@assi さん、ご丁寧な解説ありがとうございます。仕様理解できました!
HubDB使いながら実装していこうと思います。
ありがとうございました😊