Hi,
I’m using Discourse API for get the latest topics for specific category(works great!):
http://haxe.org.il/c/15/l/latest.json?
but I want to get excerpt for all topics not just topics…
How can I do that?
Thanks,
Michael
Get excerpt for regular topics
The discussion revolves around getting excerpts for all topics, not just pinned ones, using the Discourse API. michael_solomon initially asked about this feature, and riking responded that there isn’t a get parameter to request excerpts.
Fast forward a few years, Canapin inquired about the status of this feature. sam suggested installing the Discourse tooltips plugin, which includes a controller for previewing topic contents. However, codinghorror opposed rolling in this functionality, citing concerns about non-touch behaviors.
Canapin installed the plugin but still couldn’t get excerpts from non-pinned topics. Falco suggested making another request for excerpts, while Carlo asked about the reason behind the absence of post descriptions in the JSON feed.
zcuric shared a solution by fetching the topic again to get the needed data using Ember.PromiseProxyMixin. However, this approach makes an extra request for each topic, which can impact performance.
Falco later revealed that there’s a hidden setting to include excerpts in the API response, but it’s not enabled by default to avoid heavier payloads. This setting will soon be accessible through theme modifiers.
Hi,
I’m using Discourse API for get the latest topics for specific category(works great!):
http://haxe.org.il/c/15/l/latest.json?
but I want to get excerpt for all topics not just topics…
How can I do that?
Thanks,
Michael
There currently isn’t a get parameter to request excerpts, but it’s on the list of feature requests.
Hi.
It has been a few years, is it still impossible to do? I’m looking to display my lastest Discourse posts on a WP site and that would be an excellent feature.
Yeah this exists if you install this plugin:
Per:
@codinghorror I wonder should we just roll in the functionality of discourse tooltip, it will help keep it more stable over time and helps a tiny bit in some desktop situations.
I am fairly strongly opposed, because hover means nothing on touch and we should not be relying on non-touch behaviors at all. And given that the world will be 99.9% smartphone usage soon.. it’s backwards thinking.
Hi,
I’ve installed and enabled this plugin. It works but I still don’t have the excerpts from other topics than pinned in top.json data.
I believe you need to do another request for the excerpts, like:
Hi, I know this is an old topic, but I am having the same issue.
My rss feed is working fine, but I rather use the Json one as it is more flexible.
So I have a php plugin that pulls discourse json feed ( latest, top, etc), everything works fine… expect the excerpt
Is there is reason why there is no post description on the Json feed? How can I fix this ?
Thanks.
Hi, I had the same problem and managed to do it by fetching topic again to get needed data. I did that in topic-list-item.js component, by using Ember.PromiseProxyMixin. How to use it, read here: Use Ember.PromiseProxyMixin in a theme
Code looks like something like this:
// I've used custom memoize function, to lower the number of requests
const getTopic = memoize(id => ajax(`/t/${id}.json`).then(data => data));
// ...
// Inside of component
@discourseComputed("topic")
topicPromise(topic) {
return getTopic(topic.id);
},
@discourseComputed("topicPromise")
topicProxy() {
const promise = this.get("topicPromise");
return promise && PromiseObject.create({ promise });
},
postStream: reads("topicProxy.content.post_stream"),
@discourseComputed("postStream")
excerpt(postStream) {
if (!this.get("postStream")) return false;
return `${stripHtml(postStream.posts[0].cooked).slice(0, 150)}...`;
},
stripHtml is custom function to remove html from first post.
In topic-list-item.hbs you would have
{{#if topicProxy.isFulfilled}}
<div class="excerpt">
{{#if excerpt}}
{{html-safe excerpt}}
{{/if}}
</div>
{{/if}}
Are you making an extra request for each topic in the list to fetch the excerpt?
Unfortunately, yes. I know that’s hit on performance, but I don’t make the decisions, if you know what I mean.
You gonna love this
OMG! Why is that hidden?! ![]()
Because there is a lot of support topics from admins who go and click on all the settings without reading. That means lots of instances would have a heavier payload without ever using the extra data coming from the API.
Soon, themes will be able to declaratively enable those serializer changes.