CMS Development

NPeters
Mitwirkender/Mitwirkende

Unable to get Page field to pull in page data. Docs for content_by_id() not matching output

lösung

I have created a module that uses the Page field.

 

The aim is populate a block on a landing page that has the page title, and page link. Would be great to also pull in a cover image.

 

I have followed the docs here:

https://developers.hubspot.com/docs/cms/building-blocks/module-theme-fields#page

 

Tells me to expect an id to be returned. That is not true in my case. The output I get is some thing like:

{url={type=CONTENT,%20content_id=47075729930,%20href=http://19957450.hs-sites.com/-temporary-slug-cce86271-271e-4ab4-a1b4-60b8ce2dab52},%20open_in_new_tab=false,%20no_follow=false}

To access the id, it appears I need to do something like:

{% set my_content = content_by_id(article.page_link.url.content_id) %}

 Seems very verbose, but it is what it is. I move on.

 

The docs for content_by_id show that I should be able to access the keys 'absolute_url' and 'title'.

https://developers.hubspot.com/docs/cms/hubl/functions#content-by-id

 

None are avaliable when I try

<a href="{{ my_content.absolute_url }}">{{my_content.title}}</a>

When I try to inspect 'my_content' to see if anything will return, I get a string with the output:

Page 47075729930 Blog - Meet our new team members

  So im guessing its a page type + page id + page title.

 

Am I reading the docs wrong?

0 Upvotes
1 Akzeptierte Lösung
dennisedson
Lösung
HubSpot-Produktteam
HubSpot-Produktteam

Unable to get Page field to pull in page data. Docs for content_by_id() not matching output

lösung

@NPeters , when in doubt, pprint.

I believe this is what it should be {{ content_by_id(module.page_field).featuredImage }}

But you should try {{ content_by_id(module.page_field)|pprint }} and see what that spits out in your preview.  Should be a giant json object with everything available

Lösung in ursprünglichem Beitrag anzeigen

3 Antworten
NPeters
Mitwirkender/Mitwirkende

Unable to get Page field to pull in page data. Docs for content_by_id() not matching output

lösung

Hi had a facepalm moment.

 

And what I have realised  is I have been caught up in between the differences of a "Page" field and a "Link".

 

In my mind I had used a "Link" field because I wanted to link to a page within the CMS. So I can see the docs show what will be returned.

 

When I do use the "Page" field. Everything gets returned as expected.

 

I guess while I have you, I am keen to find a way to pull in a featured image for that page. Is this possible?

 

Thanks for your patience.

dennisedson
Lösung
HubSpot-Produktteam
HubSpot-Produktteam

Unable to get Page field to pull in page data. Docs for content_by_id() not matching output

lösung

@NPeters , when in doubt, pprint.

I believe this is what it should be {{ content_by_id(module.page_field).featuredImage }}

But you should try {{ content_by_id(module.page_field)|pprint }} and see what that spits out in your preview.  Should be a giant json object with everything available

dennisedson
HubSpot-Produktteam
HubSpot-Produktteam

Unable to get Page field to pull in page data. Docs for content_by_id() not matching output

lösung

Hey @NPeters 

Everything is working as expected in my portal...this is the code block I am using:

// below is to see what is output by the field alone
{{ content_by_id(module.page_field) }} 

// below is getting a li with the content title and url set by the field
{% set my_content = content_by_id(module.page_field) %}
<ul>
    <li>
        <a href="{{ my_content.absolute_url }}">{{my_content.title}}</a>
    </li>
</ul>

Could you add an example of your module html file?