فتح نافذة الرد عبر الرابط

Hi All,

I know that we can create a new topic via url with special param.
But I want my users to click a link to reply a specific topic. Is there a way to add special params in the url query to auto open reply window for my users? If not, is there a way I can do this?

5 إعجابات

Yes, @techapj added this a while ago, details are here:

إعجاب واحد (1)

Hi Jeff,

Thank you for your reply, but what I want is that I want my users to reply
a topic which has already been created by others.
eg. I have a topic A in my forum, and I want every user click this link to
reply under topic A, not to create another topic.

What I want is when I open this link, the reply window popup, I want this
action equals to click the “reply” button under a topic.

إعجاب واحد (1)

It has been a while and I haven’t found a way to do it.
I just want to be able to create a link that when clicked opens a specific topic with the reply box activated and with the focus on it.

Something like:
https://meta.discourse.org/t/how-to-open-reply-window-via-url/#reply

Anyone knows how can it be achieved?
Thanks,

إعجابَين (2)

What I posted above works, but remember you don’t need to be on a specific topic to reply to it.

If your requirement is “must navigate to topic page, and then open the composer to reply”, then we don’t have that… but again it’s not required, you can reply to any topic from any other topic (or any location in the Discourse app, in fact) in the composer.

That post only mentions new-topic, where is the handy url to post a reply?

I believe there is one, cc @techAPJ

I’m aiming to use that link outside of Discourse. For example, putting a link on my blog, and when clicked it opens a new tab and starts a reply on a particular topic of the forum.

Is there a way to do it?

Thanks for your help.

Yes, the answer above works as you describe. Perhaps @techapj can help me explain because I seem to be failing at explaining this at the moment.

إعجابَين (2)

The feature we have right now only supports creating new topic via URL.

What @magoz wants is to have a URL for an existing topic that will open composer and user can start replying on that topic as soon as they visit that URL. This is currently not available and is not on my list right now.

Should we add support for this feature?

8 إعجابات

Not sure about it seems very uncommon

3 إعجابات

My bad @magoz I was indeed misunderstanding. I could have sworn we had a pre-filled reply URL though.

3 إعجابات

Apologies for my late reply.

Opening the composer (in a blank state) from an URL would be useful for those who have external websites working with Discourse and ask their users to reply to a particular Discourse topic.

For instance, I have a private website where I teach online lessons. I ask my students to reply to specific discourse topics to introduce themselves, to post their homework, etc.

It would be nice to be able to add something like ?reply at the end of any topic’s URL, and share that link with them.

For example:

<a href="https://meta.discourse.org/t/how-to-open-reply-window-via-url/44781?reply">link</a>

It would open a new reply to that topic with the composer open.

7 إعجابات

I would love to see it, too. Including template-support for answers, so it’s not just for topics :slight_smile:

6 إعجابات

هل هذا ممكن الآن؟

نود جدًا رؤية هذه الميزة أيضًا :folded_hands: هل سيستغرق الأمر جهدًا إضافيًا كبيرًا لجعل ذلك ممكنًا، إذا لم يكن كذلك بالفعل؟

بعض أعضاء مجتمعنا هم قادة رأي أو خبراء متخصصون (SMEs) يقدّمون جلسات مباشرة على YouTube Live، وهو أمر مقبول (في أحسن الأحوال) للأسئلة والأجوبة، لكنه فظيع جدًا للمناقشات الأعمق.

نرغب في تمكين توجيه المستخدمين للنشر في موضوع حدث موجود (حيث استخدمنا إضافة الأحداث)، بحيث يظهر نافذة الرد تلقائيًا، مع ضمان أن الأشخاص الذين لديهم أسئلة ينشرون في موضوع الخبير المختص.

إحدى أهم القيم التي نضيفها للكثيرين ممن نعمل معهم هي توفير مكان يمكنهم من خلاله التفاعل مع مستخدمينا في مناقشات أعمق.

عندما يقدّمون بثًا مباشرًا على YouTube أو فيسبوك، فإنهم ببساطة يبدؤون المحادثة. أما Discourse فهو الأداة المثالية لمواصلة المحادثة.

إذا تمكّنّا من تبسيط العملية من خلال توفير رابط مباشر يمكن للناس النقر عليه، مع فتح نافذة الرد تلقائيًا وملئها مسبقًا بنص قياسي، فسيكون ذلك مفيدًا للغاية!!

إعجابَين (2)

نفس الشيء. سيكون مفيدًا جدًا لمجتمعنا.

إعجاب واحد (1)

أستخدم مكون سمة بسيطًا لهذا الغرض في نسختي. فيما يلي نسخة معدلة من نسختي – والتي تقبل أيضًا #upload (إجابة جديدة تفتح نافذة التحميل على سطح المكتب) و #edit (لأصحاب المنشورات في الويكي) بالإضافة إلى #reply.

تحتاج إلى بعض التحسينات، مثل تجنب استخدام setTimeout وإدارة draftSequence بشكل صحيح (لا أعتقد أن topic.draft_sequence هو الخيار الصحيح)، ولا أعرف ما هي أفضل ممارسة هنا. ومع ذلك، فهي تعمل بشكل جيد بالنسبة لي.

عند التنقل إلى أي موضوع مثل /t/[slug]/[id]#reply، سيفتح المصنف بإجابة جديدة فارغة.

إذا كنت بحاجة إلى نص مُعبأ مسبقًا، فيمكن تحقيق ذلك عن طريق تعيين السمة reply في الكائن الممرر إلى composer.open. بالإضافة إلى ذلك، إذا كان هناك مسودة موجودة بالفعل لهذا الموضوع، فسيُطلب منك حفظها أو تجاهلها قبل إنشاء هذه الإجابة الجديدة – يجب أن تكون draftSequence صحيحة إذا كان السلوك المطلوب هو استئناف تلك المسودة.

<script type="text/discourse-plugin" version="0.4">
  if (/.*#reply$/g.test(document.URL)) {
    const { REPLY } = require('discourse/models/composer').default;
    
    const composer = Discourse.__container__.lookup('controller:composer');
    
    setTimeout(function() {
      const topic = Discourse.__container__.lookup("controller:topic").get("model");
      if (topic) {
        composer.open({
            action: REPLY,
            draftKey: topic.draft_key,
            draftSequence: topic.draft_sequence,
            topic,
        });
      }
    }, 0)
  }
</script>

آمل أن يكون هذا مفيدًا.

13 إعجابًا

هل قمت بتغيير / تحديث هذا منذ ذلك الحين؟ سيكون مفيدًا جدًا - لقد وجدت للتو حالة استخدام له في نسختي:

إعطاء الناس طريقة سهلة بنقرة واحدة للرد على موضوع لافتة

إعجاب واحد (1)

التغيير الوحيد الذي أتذكره هو فرض تدفق تسجيل الدخول إذا لم يكن المستخدم قد سجل دخوله بالفعل، شيء مثل:

        if (!Discourse.User.current()) {
            Discourse.__container__.lookup("route:application").send("showLogin");
        }

ما زلت أستخدمه في مجتمعي لأخذ المستخدمين من تطبيق React الخاص بي مباشرة إلى بعض هذه التدفقات على Discourse (الرد، التعديل، التحميل، إلخ).

إعجابَين (2)