أريد تحديد بعض ميزات markdown للمنشور الأول للموضوع، والذي يأتي من المكون الإضافي الخاص بي.
يمكن تنفيذ ذلك بسهولة من جانب العميل عن طريق الوصول إلى السمة topicFirstPost في نموذج composer. ومع ذلك، على جانب الخادم في lib/pretty_text.rb و model/post.rb، وجدت أنه يتم تمرير topic_id فقط إلى الطريقة cook. يمكنني ربما التحقق من السمة posts_count للموضوع، ولكنها لن تعمل عند إعادة الخبز.
ربما، لا ينبغي لي استخدام أي حالة في عملية markdown-it؟
طريقة أخرى لتحقيق ذلك هي إنشاء عنصر نائب باستخدام markdown، ثم تحديث المعاينة يدويًا والاستماع إلى بعض أحداث ما بعد معالجة الطهي على جانب الخادم، ولكن قد يتطلب ذلك بعض العمل الإضافي.
أفضل الطريقة الأولى إذا كان ذلك ممكنًا. شكرًا على أي اقتراحات.
@Jagster@pfaffman
يرجى تخيل أن المكون الإضافي يضيف بعض علامات BBCode المخصصة، أو يلتف حول أي نص بعلامة HTML مخصصة لاستخدامها لاحقًا، مثل تزيينها. لا أريد أن يسري مفعوله خارج المنشور الأول (أو بناءً على شروط أخرى)، لأنني لا أحتاجه وقد يتسبب في بعض الآثار الجانبية.
أيضًا، ربما وجدت حلاً ممكنًا من جانب الخادم. إنه يلتف حول طريقة cook لنموذج Post. لم أختبره بعد.
class ::Post
# wrap the original cook method to add features option
# see the markdown method in lib/pretty_text.rb
alias_method :original_cook, :cook
def cook(raw, opts = {})
features = {
'feature-name': is_first_post?
}
if opts.has_key?(:features)
opts[:features].merge!(features)
else
opts[:features] = features
end
original_cook(raw, opts)
end
end