You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在自定义网站展示并预览Storyblok内容?附PHP调用示例

Storyblok故事的JavaScript展示与自定义网站预览方案

一、使用JavaScript展示Storyblok故事内容

方案1:前端直接调用Content Delivery API

通过Storyblok JavaScript SDK(或原生fetch)直接获取并渲染内容:

// 初始化SDK
const storyblok = new StoryblokClient({
  accessToken: '你的公开访问令牌',
  cache: { type: 'memory', clear: 'auto' }
});

// 获取指定slug的故事
storyblok.get('cdn/stories/tomandjerry')
  .then(res => {
    const story = res.data.story;
    renderStory(story.content);
  })
  .catch(err => console.error('获取内容失败:', err));

// 自定义渲染函数,根据你的内容结构调整
function renderStory(content) {
  const container = document.getElementById('story-container');
  // 示例:假设内容包含title和body字段
  container.innerHTML = `
    <h1>${content.title}</h1>
    <div class="story-body">${content.body}</div>
  `;
}

方案2:后端PHP传递数据到前端渲染

如果已经通过PHP获取到故事数据,可以直接将数据注入页面,前端直接使用:

// PHP代码:将故事数据转为JSON输出到页面
echo '<script>window.storyData = ' . json_encode($data['story']) . ';</script>';

前端JavaScript:

// 直接使用后端传递的数据
const story = window.storyData;
renderStory(story.content);

function renderStory(content) {
  // 同方案1的渲染逻辑
}

二、在自定义网站中启用Storyblok可视化预览

要实现编辑器内的实时预览和编辑,需完成以下步骤:

1. 引入Storyblok Bridge脚本

在页面的<head>或<body>中添加:

<script src="https://app.storyblok.com/f/storyblok-v2-latest.js"></script>

2. 初始化Bridge并监听编辑器事件

document.addEventListener('DOMContentLoaded', () => {
  const sbBridge = new StoryblokBridge({
    accessToken: '你的公开访问令牌'
  });

  // 监听编辑器内容变更,实时更新页面
  sbBridge.on(['input', 'published'], (event) => {
    if (event.action === 'input') {
      // 预览模式下加载草稿版本
      storyblok.get('cdn/stories/tomandjerry', { version: 'draft' })
        .then(res => renderStory(res.data.story.content));
    } else {
      // 发布后刷新页面
      window.location.reload();
    }
  });

  // 检测是否处于编辑器环境,加载对应版本内容
  sbBridge.isInEditor().then(isInEditor => {
    const params = isInEditor ? { version: 'draft' } : {};
    storyblok.get('cdn/stories/tomandjerry', params)
      .then(res => renderStory(res.data.story.content));
  });
});

3. 为组件添加可编辑标记

要让编辑器识别页面上的可编辑区域,需在渲染的元素上添加Storyblok返回的组件标识:

function renderStory(content) {
  const container = document.getElementById('story-container');
  // 为根组件添加data-blok属性
  const html = `
    <div data-blok-c="${JSON.stringify(content._uid)}" data-blok-uid="${content._uid}">
      <h1>${content.title}</h1>
      <div>${content.body}</div>
    </div>
  `;
  container.innerHTML = html;
  // 通知Bridge刷新可编辑区域
  sbBridge?.refreshEvents();
}

4. 配置后台预览URL

在Storyblok空间设置中,将「预览URL」设置为你的自定义网站对应页面的地址(如http://your-domain.com/tomandjerry),确保编辑器能跳转至你的网站加载预览内容。


内容的提问来源于stack exchange,提问作者tee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:22:31