刚刚开始使用这项服务,文档有点令人困惑.我创建了一个Space使用照片库模板.在这个空间中,我有类型图像,作者和照片库的条目.我的问题是,如何检索图像以便在我的Android应用程序中显示?
为了与之交互Contentful Delivery API,我知道我必须使用一个CDAClient对象和CDAEntry对象来尝试获取.
我已经在onCreate()我的Fragment类的方法中定义了这个,如下所示:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getActivity();
client = CDAClient.builder()
.setSpace("id-of-the-space-am-accessing")
.setToken("the-access-token")
.build();
entry = client.fetch(CDAEntry.class).one("the id of the image I want to retrieve");
}
Run Code Online (Sandbox Code Playgroud)
在onCreateView()方法中,我试图像这样查看结果:
Log.e(TAG, "Result: " + entry.toString());
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我在Logcat中得到了这个:
E/NEWS ACTIVITY? Result: CDAEntry{id='2YhtjbebgscIwO2keYEa4O'}
Run Code Online (Sandbox Code Playgroud)
此id匹配我传递给的图像的id client.fetch(CDAEntry.class).one()
显然我正在获取图像,但我该如何显示它?
我不知道如何获取内容丰富的访问令牌。我尝试了很多搜索、复制/粘贴各种“解决方案”,但没有一个对我有用。请帮助我解决这个问题。
我正在使用Contentful并且拥有一个使用一系列相关字段的内容模型.我使用JS api在NodeJS中查询我的内容.如果我打电话获取条目,就像这样
contentfulClient.getEntries({
content_type: 'homePage'
})
Run Code Online (Sandbox Code Playgroud)
它获取homePage类型的所有内容,并包括每个相关字段的实际字段数据,如此
"subField": {
"sys": {
"space": {
"sys": {
"type": "Link",
"linkType": "Space",
"id": "#######"
}
},
"id": "#######",
"type": "Entry",
"createdAt": "2017-03-10T15:58:25.697Z",
"updatedAt": "2017-03-10T15:58:25.697Z",
"revision": 1,
"contentType": {
"sys": {
"type": "Link",
"linkType": "ContentType",
"id": "homeSubField"
}
},
"locale": "en-GB"
},
"fields": {
"category": {
"sys": {
"type": "Link",
"linkType": "Entry",
"id": "#######"
}
},
"subFieldContent": "Some field content"
}
},
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用ID调用特定条目,例如
contentfulClient.getEntry('1234567890')
Run Code Online (Sandbox Code Playgroud)
然后,每个链接的字段仅作为具有ID的引用返回,如
"subField": {
"sys": {
"type": "Link",
"linkType": "Entry",
"id": …Run Code Online (Sandbox Code Playgroud) 当我尝试将我的gatsby项目与自己创建的Contentful空间链接时,它始终显示此问题
但是,当我尝试将我的gatsby链接到我用其模板或示例创建的内容空间时,它运行良好
但是对于自己创建的空间,它将显示此错误。
有什么办法吗?
错误#85901 GRAPHQL
您的GraphQL查询中存在错误:
未知类型“ ContentfulSizes”。您是说“ ContentfulSecondTry”,“ ContentfulContentType”还是“ ContentfulSecondTryEdge”?
文件:node_modules \ gatsby-source-contentful \ src \ fragments.js:4:46
我正在使用 Contenful 作为我的 Gatsby 网站的 CMS。在其富文本反应渲染器的配置中,我尝试将富文本字段中的所有代码包装在标签中,<pre>以便维护所有格式并添加我自己的样式。
这是我尝试过的:
const Blog = (props) => {
const Code = ({children}) => <pre><code style={{backgroundColor: "red"}}>{children}</code></pre>
const options = {
renderMark: {
[MARKS.CODE]: code => <Code>{code}</Code>},
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我选择“普通文本”时,Contentful 会将每一行代码片段包装在段落标签内,这不是有效的 HTML(<pre>标签不能是<p>标签的直接后代),并且会弄乱我的所有格式。
有谁知道如何覆盖该行为或解决方法,以呈现来自 Contentful in Gatsby 的格式正确的代码片段?
我收到错误消息:
属性值必须是常量
为我的Space类定义Space注释时:
我看过Java中的问题为什么这个错误:'属性值必须是常数'?这是最接近我的问题,但它没有帮助.
我使用的是最新的Vault库:
compile 'com.contentful.vault:core:2.1.0'
Run Code Online (Sandbox Code Playgroud)
以前的版本不需要Locale属性.我该如何解决这个问题?
我一直在使用Contentful Management Javascript SDK更新Contentful空间中的条目,并且能够使用文本更新简单字段没有问题.
我的问题是我无法弄清楚如何在我的条目中更新图像 ; 我可以将图像上传到媒体部分,但我无法将任何图像分配给入口属性.
这是可能的还是Contentful的限制?
到目前为止,这是我的代码:
client.getSpace(CONTENTFUL_SPACE).then((space) => {
// retrieve my Contentful space
space.getEntry(CONTENTFUL_ENTRY).then(function (entry) {
// get a specific entry
// create a new asset in my Contentful media section
space.createAssetWithId(RANDOM_ID, {
fields: {
file: {
'en-GB': {
contentType: 'image/jpeg',
fileName: 'test.jpg',
upload: 'http://www.example.com/test.jpg'
}
}
}
})
.then(asset => asset.processForAllLocales())
.then(asset => asset.publish())
.then(function(asset) {
// assign uploaded image as an entry field
// (none of these work:)
entry.fields["image"]["en-GB"] …Run Code Online (Sandbox Code Playgroud) 这是我获取条目的方式:
func fetchAllEntriesByLocation(latitude:Double, longitude: Double, completion: @escaping (([Item]) ->Void)) {
var items:[Item] = []
let query = Query(where: "content_type", .equals("item")).where("fields.location", .isNear(Location(latitude: latitude, longitude: longitude)))
client.fetchEntries(with: query) { [weak self] result in
guard let strongSelf = self else { return }
DispatchQueue.main.async {
strongSelf.delegate?.finishedTask()
}
switch result {
case .success(let entries):
entries.items.forEach { entry in
items.append(Item(entry: entry))
}
DispatchQueue.main.async {
completion(items)
}
case .error(let error):
print(error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
以及我如何映射它们
final class Item: EntryModellable {
static let contentTypeId: String = "item" …Run Code Online (Sandbox Code Playgroud) 我有一个富文本编辑器字段,它接受一个嵌入块,其中内容类型包含指向另一种内容类型的引用链接。
像这样:
content (rich text field)
- group (embedded block)
- group-items (reference field)
- item 1 (referenced content)
- item 2 (referenced content)
Run Code Online (Sandbox Code Playgroud)
我怎样才能referenced content使用物品@contentful/rich-text-react-renderer?
我目前有这个:
import { MARKS, BLOCKS } from '@contentful/rich-text-types';
import { documentToReactComponents } from '@contentful/rich-text-react-renderer';
const options = {
renderNode: {
[BLOCKS.EMBEDDED_ENTRY]: (node) => {
console.log(node);
return true;
}
},
renderText: text => text.replace('!', '?'),
};
Run Code Online (Sandbox Code Playgroud)
这给了我一堆id,但不是我真正想要的条目的字段数据。
content: []
data:
target: {sys: {…}}
__proto__: Object
nodeType: "embedded-entry-block"
content: []
data:
target: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将内容数据中的图像获取到盖茨比网站。我可以检索文本内容。
我浏览了gatsby-image插件文档。看起来不错。
const getBlogList = graphql`
{
blogs: allContentfulBlog {
edges {
node {
id
title
image {
fluid(maxWidth:250) {
...GatsbyContentfulFluid_tracedSVG
}
}
}
}
}
}
`;
<StaticQuery
query={getBlogList}
render={ data => {
return({data.blogs.edges.map(({node})=>{
return(<div><Img fluid={node.image.fluid} /></div>)
})
}
)
}} />
Run Code Online (Sandbox Code Playgroud)
我找不到我哪里出错了。我收到一个错误
类型错误:无法读取 null 的属性“流体”。
我正在contentful我的 React Hooks 网站中显示博客内容。现在博客的完整描述已收到post.description。我想将code snippets, json datapost.description 中收到的内容显示为code block。还想将标题行添加到 h1 或 h2 标签。我们如何从描述字段中识别代码块?现在它只显示页面中的文本(请参阅添加的屏幕截图)
import React from "react";
import { Link, useParams } from "react-router-dom";
import MD from "react-markdown";
import { useSinglePost } from "../custom-hooks";
import Moment from 'moment';
export default function SinglePost() {
const { id } = useParams();
const [post, isLoading] = useSinglePost(id);
const renderPost = () => {
if (isLoading) return ( <div> <p className="noSearchData">Loading...</p> </div>);
return (
<React.Fragment>
<div …Run Code Online (Sandbox Code Playgroud) 我想添加一个资产和一个条目。我正在使用表单输入一些数据并上传图像,所有这些都在一个 API 调用中完成。我使用 cloudinary 来存储图像,但 Contentful-Management 给了我 409 状态代码和“版本不匹配”错误。
这些是我在下面采取的步骤(如果您看到我忽略的步骤,请添加任何步骤,非常感谢)
#1. Get space by space id
#2. Get environment
#3. Create Entry
#4. Create a new asset
#5. Assign uploaded image as an entry field
Run Code Online (Sandbox Code Playgroud)
“ data ”是我发布帖子所需的所有数据,uploadHref 是来自 Cloudinary 的单个图像的链接。
#1. Get space by space id
#2. Get environment
#3. Create Entry
#4. Create a new asset
#5. Assign uploaded image as an entry field
Run Code Online (Sandbox Code Playgroud) contentful contentful-management next.js contentful-api headless-cms
contentful ×13
gatsby ×5
javascript ×4
graphql ×2
android ×1
headless-cms ×1
ios ×1
java ×1
next.js ×1
node.js ×1
react-hooks ×1
reactjs ×1
swift ×1