تغيير التعليقات خيوط العلامات في دروبال 6
سؤال
وايم هنا بسؤال الملعب.
ودروبال تعليق التعامل مع إعطاء المستخدم خيار لثيمسي ... n عرض فقط في 4 طرق: Flat list - collapsed
، Flat list - expanded
، Threaded list - collapsed
، وThreaded list - expanded
والدردشة باستخدام آخر واحد، منهم توفير العلامات مثل:
<div class="comment">
<!-- comment's content -->
</div>
<div class="indented">
<!-- next comment is an 'answer' to the previous comment! -->
<div class="comment">
<!-- comment's content -->
</div>
</div>
ولكن أود أن يكون تعليق 'الأطفال' داخل نفس العنصر دوم للتعليق 'الأم. لذلك، على سبيل المثال، شيء من هذا القبيل:
<div class="comment">
<!-- comment's content -->
<div class="indented">
<!-- next comment is an 'answer' to the previous comment! -->
<div class="comment">
<!-- comment's content -->
</div>
</div>
</div>
ومن أجل الحصول على العلامات التي تسمح لي أن تظهر التعليقات مترابطة ك <لأ href = "http://css-tricks.com/curating-comments-threads/#comment-67794" يختلط = "noreferrer نوفولو" > هذا بلوق (باستخدام وورد) لا.
وواستخدام العلامات مثل:
<ul>
<li>
<div class="comment>
<!-- comment's content -->
</div>
<ul class="children">
<li>
<div class="comment>
<!-- comment's content -->
</div>
</li>
</ul>
</li>
</ul>
وهكذا، ما هو drupalish م> طريقة للقيام بذلك (أفضل إذا كان كل التغييرات أحتاج هي في template.php أو ملفات النموذجيه)؟
المحلول
comment_render () يبدو أن تفعل كل شيء داخليا. لذلك كنت بحاجة إلى إعادة كتابة هذا. للأسف إذا كنت تستخدم node_show () لتقديم العقد الخاص comment_render ستكون المدى تلقائيا (وليس عن طريق وظيفة موضوع للتجاوز) لذلك سوف تحتاج إلى القيام به الكثير من العمل للحصول على هذا لتفعل ما تريد.
أولا سيكون لديك لاستخدام hook_nodeapi لإقناع الأساسية دروبال أنه لا توجد تعليقات (على حدة الكلام يفعل ذلك)
function talk_nodeapi(&$node, $op) {
switch ($op) {
case 'load':
if (talk_activated($node->type) && arg(0) == 'node' && !arg(2)) {
// Overwrite setting of comment module and set comments for this node to disabled.
// This prevents the comments of being displayed.
$output['comment_original_value'] = $node->comment;
$output['comment'] = 0;
return $output;
}
break;
}
}
وبعد ذلك سوف تحتاج الكتابة تنفيذ الخاصة بك من comment_render (مع التعشيش) والدعوة التي بعد يتم تقديم العقدة (ربما على صفحة القالب أو في وظيفة المعالجة المسبقة).