لقد اتبعت المستندات ، ولكنها تقوم فقط بتحديث عنوان الموضوع ، دون تحديث النص الأساسي.
التعليمات البرمجية الخاصة بي (JavaScript):
async function updateDiscourseTopic(topic_id) {
const Discourse_API_Key = "Discourse_API_Key";
const url = `https://discourse.mysite.com/t/-/${topic_id}.json`;
const payload = {
title: 'session_1',
raw: "نص أساسي جديد (لا ينطبق)"
}
const response = await fetch(url, {
method: 'PUT',
headers: {
"Api-Key": Discourse_API_Key,
"Api-Username": "system",
"Content-Type": "application/json",
},
body: JSON.stringify(payload)
});
}
Lilly
(Lillian Louis)
11 مايو 2023، 1:01م
2
مجرد تخمين من خلال النظر إلى الكود، ولكن ربما يكون ذلك بسبب استخدامك topic_id بدلاً من post_id؟ لأن المنشور الأول هو الموضوع في Discourse، أكثر أو أقل؟
3 إعجابات
Canapin
(Coin-coin le Canapin)
11 مايو 2023، 3:31م
3
@Lilly ’s على حق.
يتم تعريف الموضوع بواسطة سمات مثل العنوان والفئة والعلامات وما إلى ذلك.
لكن المحتوى ينتمي إلى منشور .
إذا كنت ترغب في تحديث العنوان والمحتوى، فأنت بحاجة إلى طلبين.
PUT على الموضوع
PUT على المنشور الأول. يمكنك العثور على معرف المنشور في رمز HTML للصفحة. ابحث عن السمة data-post-id في <article>.
مثال:
<article id="post_2" aria-label="post #2 by @Lilly" role="region" data-post-id="1288311" data-
topic-id="264640" data-user-id="127856" class="boxed onscreen-post">
3 إعجابات
رائع، أنت على حق، لقد نجح الأمر
وقد اكتشفت كيفية استرداد معرف أول منشور في موضوع باستخدام واجهة برمجة تطبيقات Discourse:
async function getFirstPostIdFromOnetopic(topic_id) {
const Discourse_API_Key = "Discourse_API_Key";
const url = `https://discourse.mysite.com/t/${topic_id}/posts.json`;
const response = await fetch(url, {
method: 'GET',
headers: {
"Api-Key": Discourse_API_Key,
"Api-Username": "system",
"Content-Type": "application/json",
}
});
const data = await response.json();
const firstPostId = data.post_stream.posts[0].id;
return firstPostId;
}
شكراً لك ولـ @Lilly
3 إعجابات
system
(system)
تم إغلاقه في
10 يونيو 2023، 4:12م
5
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.