-
-
Notifications
You must be signed in to change notification settings - Fork 269
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: update injectContent function to return content object instead of string #228
Labels
enhancement
New feature or request
Comments
@brandonroberts just ran into the same issue working on my personal website! I can work on this if you want |
That would be great 👍 |
Awesome! What do you think we should do when no file is found for the current route?
export function injectContent<
Attributes extends Record<string, any> = Record<string, any>
>(
param = 'slug',
fallback = 'No Content Found'
): Observable<ContentFile<Attributes> | undefined> {
const route = inject(ActivatedRoute);
const contentFiles = injectContentFiles<Attributes>();
return route.paramMap.pipe(
map((params) => params.get(param)),
map((slug) => {
return contentFiles.find(
(file) => file.filename === `/src/content/${slug}.md`
);
})
);
}
export function injectContent<
Attributes extends Record<string, any> = Record<string, any>
>(
param = 'slug',
fallback = 'No Content Found'
): Observable<ContentFile<Attributes | Record<string, never>>> {
const route = inject(ActivatedRoute);
const contentFiles = injectContentFiles<Attributes | Record<string, never>>();
return route.paramMap.pipe(
map((params) => params.get(param)),
map((slug) => {
return (
contentFiles.find(
(file) => file.filename === `/src/content/${slug}.md`
) || {
attributes: {},
filename: '',
content: fallback,
}
);
})
);
} Let me know what you think 👍 |
Option 2 is good to me |
goetzrobin
added a commit
to goetzrobin/analog
that referenced
this issue
Jan 22, 2023
… instead of string instead of only extracting the content string from the front-matter results the full object is returned. closes analogjs#228
19 tasks
brandonroberts
pushed a commit
that referenced
this issue
Jan 22, 2023
#229) Closes #228 BREAKING CHANGES: The signature of the `injectContent` function has changed. BEFORE: injectContent now returns an observable of a string from the rendered markdown. AFTER: injectContent now ContentFile<Attributes | Record<string, never>> which is an object that includes the rendered markdown as the `content` property.
Villanuevand
pushed a commit
to Villanuevand/analog
that referenced
this issue
Sep 12, 2023
analogjs#229) Closes analogjs#228 BREAKING CHANGES: The signature of the `injectContent` function has changed. BEFORE: injectContent now returns an observable of a string from the rendered markdown. AFTER: injectContent now ContentFile<Attributes | Record<string, never>> which is an object that includes the rendered markdown as the `content` property.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Which scope/s are relevant/related to the feature request?
content
Information
Currently if you want to display a single post, you can use the
injectContent()
function to get the rendered markdown as a string. If you want to display the metadata from the content within the component, you basically have to reimplementinjectContent()
to return the content with metadata.The proposed change would return the content with metadata instead of the string itself
Describe any alternatives/workarounds you're currently using
No response
I would be willing to submit a PR to fix this issue
The text was updated successfully, but these errors were encountered: