我目前正在自学如何将无头CMS(CrafterCMS)与Next.js一起使用.

我在CrafterCMS工作室中有以下简单的内容类型(只有一个标题和一个文本):

和各自的代码:

export default async function TestPage() {
    const model = await getModel('/site/website/test/index.xml');
    return (
        <TestComponent model={model} />
    );
}
export default function TestComponent(props) {
    const { isAuthoring } = useCrafterAppContext();
    const { model } = props;

    return (
        <ExperienceBuilder path={model.craftercms.path} isAuthoring={isAuthoring}>
            <Model model={model} >
                <div className="space-y-4">
                    <RenderField
                        model={model}
                        fieldId="title_s"
                        className="text-xl text-gray-800"
                    />

                    <RenderField
                        model={model}
                        fieldId="text_t"
                        className="text-xl text-gray-800"
                    />
                </div>
            </Model>
        </ExperienceBuilder>
    );
}

是否可以使用Studio功能来拖动和更改我的两个字段的位置?例如,我希望将文本拖到第一个元素.我似乎只有更改内容的选项,不能拖动:

推荐答案

在CrafterCMS上,您主要可以拖放3件东西:

  • 重复组项目
  • 来自具有"Components"数据源的项 Select 器控件的组件项引用
  • 媒体项放入媒体控件(图像或视频)

要达到您所描述的效果,最简单的方法是更改您的模型,通过拖放将您想要重新排序的字段包含在一个重复组中(例如,创建一个重复组并在其中添加"标题"输入控件;如果为1,则丢弃另一个).一旦你做到了这一点,你将需要更新你的TestComponent代码使用<RenderRepeat ... />,你应该能够通过拖放,通过上下上下文菜单按钮,或通过内容形式重新排序.

使用标题字段呈现的Repeat大致看起来像something like this:

<RenderRepeat
  model={model}
  fieldId="yourRepeatGroupId_o"
  componentProps={{ className: "space-y-4" }}
  renderItem={(item, index) => (
    <RenderField
      model={model}
      fieldId="yourRepeatGroupId_o.title_s"
      index={index}
      className="text-xl text-gray-800"
    />
  )}
/>

正如我提到的,您可以通过组件(项 Select 器控件、组件数据源)来实现它,但对于这种情况,重复组是最简单的;特别是为了开始和学习.

Reactjs相关问答推荐

我想将状态设置为true,直到每一张卡片都生成并在多姆中呈现

如何在react 流中使用文本区域和改变 node 的输入大小?

REACTJS:在Reaction中根据路由路径更改加载器API URL

在Reaction中单击并显示子组件延迟/动画

react ';S使用状态不设置新状态

如何在MUI x图表条形图上放置圆角?

React,当我调用handleSubmit()函数时,我正在将application/json和multiform/data中的数据发送到后端,但student_image中没有数据:null

点击页脚链接时,如何更改ReactJS导航栏中的活动菜单项(样式为Tailwind CSS)?

显示我是否加入聊天应用程序时出现问题

在react的useEffect钩子中,我的函数被调用,但只有第一个函数能够改变状态,第二个函数无法改变状态.

React Router v6 路径中的符号

卸载 React 组件时未清除本地存储项目

如何在不使用 Axios 的情况下将图像文件从 React.js 发送到 Spring Boot Rest API?

react - 警告:列表中的每个子元素都应该有一个独特的 keys props ,即使我已经设置了 keys

响应式媒体 React Tailwind

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

Storybook - 无法解析generated-stories-entry.cjs/字段browser不包含有效的别名配置

如何用实际的br标签替换axios响应中的br标签?

ClearInterval 在 React 中的 useRef 没有按预期工作

react / firebase 基地.如何在我的项目中保存更新的数据?