gpt4 book ai didi

php - 手动 Drupal 节点插入

转载 作者:行者123 更新时间:2023-11-29 05:37:54 26 4
gpt4 key购买 nike

我尝试使用对 Drupal 数据库的直接 MySQL 插入查询将图像从自定义 CMS 导入 Drupal。图像被复制到 drupal 站点内的路径:

sites/default/files/images/import

节点显示在列表中,但直接链接 (someurl/node/1234) 导致 404 错误。它们都是 media_image 类型,并分配了有效的 uid。我还对 filescontent_type_media_image

进行了关联插入

是否需要内部 Drupal 流程来完成此导入?如果不重写为适当的 Drupal 导入模块,是否完全有可能?

示例节点插入:

INSERT INTO node SET
type='media_image',
language='en',
title='apicture.jpg',
uid='4',
status=1,
created=1328644135,
changed=1328644135;

// grab nid as last mysql_insert()
INSERT INTO files SET
uid = 4,
filename = 'apicture.jpg',
filepath = 'sites/default/files/images/import',
filemime = 'image/jpeg',
filesize = 40069,
status = 1,
timestamp = 1328644136;

INSERT INTO content_type_media_image SET
vid = 683,
nid = 683,
field_image_fid = 539,
field_image_list = 1,
field_image_data = 'a:3:{s:11:"description";s:0:"";s:3:"alt";s:0:"";s:5:"title";s:0:"";}';

注意:上面的查询是生成的查询。

最佳答案

如果您收到 404,那是因为从内部返回 node_load() function为 NULL/FALSE。

如果您单步执行该函数,您会看到一个 INNER JOINnode 表到 node_revisions 表。 .so 如果就 Drupal 而言,node_revisions 表中没有匹配的记录,则没有节点。

要修复错误,您只需要使用所需的列填充 node_revisions 表 - 最值得注意的是 nidvid (这是版本 ID),以及标题和正文。您可能还想在 format 列中设置正文的文本格式(它与 filter_formats 表中的键相关)。

顺便说一下,这个版本 ID 也应该添加到 node 表本身,因为这是 INNER JOIN 的基础。我认为获取下一个可用 ID 的最安全方法是:

SELECT MAX(vid) + 1 FROM node

如果您没有为任何内容类型打开修订,则 vid 可能始终与 nid 相同。

关于php - 手动 Drupal 节点插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com