سؤال

وايم هنا بسؤال الملعب.

ودروبال تعليق التعامل مع إعطاء المستخدم خيار لثيمسي ... 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 (مع التعشيش) والدعوة التي بعد يتم تقديم العقدة (ربما على صفحة القالب أو في وظيفة المعالجة المسبقة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top