تغییر طرز نمایش یک نظر در طراحی تم دروپال

برای اینکه طرز نمایش یک نظر (comment) را در سایت دروپالی خود را تغییر دهید، می توانید با کار روی خصوصیت های CSS ای برای تگ های یک نظر، شیوه نمایش آن نظیر رنگ، فونت، محل قرار گیری و غیره را تغییر دهید. اما گاهی اوقات نیاز شما به تغییر در طرز نمایش یک نظر، ساختاری است، برای نمونه شما می خواهید تگ های HTML متفاوتی برای نمایش یک نظر استفاده کنید. سیستم قالب دروپال (Theme system) دارای انعطاف پذیری بالایی است و شما می توانید در سطح قالب (تم یا theme)، نیز چنین تغییراتی را نیز اعمال کنید. برای یافتن فایل های قالب (Template) پیش فرض این ماژول، در فایل های دروپال سایت خود به مسیر modules/comment از ریشه دروپال بروید و فایل های با پسوند tpl.php را بیابید.

چون ماژول comment در هسته دروپال برای نمایش یک نظر از فایل های قالب tpl.php استفاده کرده است، می توانید با قرار دادن یک فایل با نام comment.tpl.php در قالبی که پیاده سازی می کنید، تگ های HTML که در نمایش یک نظر به کار رفته است را تغییر دهید. این فایل را می توانید در مسیری که بیان شد، بیابید که حاوی کد زیر است:

[highlightjs_code]

/**
 * @file
 * Default theme implementation for comments.
 *
 * Available variables:
 * - $author: Comment author. Can be link or plain text.
 * - $content: An array of comment items. Use render($content) to print them all, or
 *   print a subset such as render($content['field_example']). Use
 *   hide($content['field_example']) to temporarily suppress the printing of a
 *   given element.
 * - $created: Formatted date and time for when the comment was created.
 *   Preprocess functions can reformat it by calling format_date() with the
 *   desired parameters on the $comment->created variable.
 * - $changed: Formatted date and time for when the comment was last changed.
 *   Preprocess functions can reformat it by calling format_date() with the
 *   desired parameters on the $comment->changed variable.
 * - $new: New comment marker.
 * - $permalink: Comment permalink.
 * - $submitted: Submission information created from $author and $created during
 *   template_preprocess_comment().
 * - $picture: Authors picture.
 * - $signature: Authors signature.
 * - $status: Comment status. Possible values are:
 *   comment-unpublished, comment-published or comment-preview.
 * - $title: Linked title.
 * - $classes: String of classes that can be used to style contextually through
 *   CSS. It can be manipulated through the variable $classes_array from
 *   preprocess functions. The default values can be one or more of the following:
 *   - comment: The current template type, i.e., "theming hook".
 *   - comment-by-anonymous: Comment by an unregistered user.
 *   - comment-by-node-author: Comment by the author of the parent node.
 *   - comment-preview: When previewing a new or edited comment.
 *   The following applies only to viewers who are registered users:
 *   - comment-unpublished: An unpublished comment visible only to administrators.
 *   - comment-by-viewer: Comment by the user currently viewing the page.
 *   - comment-new: New comment since last the visit.
 * - $title_prefix (array): An array containing additional output populated by
 *   modules, intended to be displayed in front of the main title tag that
 *   appears in the template.
 * - $title_suffix (array): An array containing additional output populated by
 *   modules, intended to be displayed after the main title tag that appears in
 *   the template.
 *
 * These two variables are provided for context:
 * - $comment: Full comment object.
 * - $node: Node object the comments are attached to.
 *
 * Other variables:
 * - $classes_array: Array of html class attribute values. It is flattened
 *   into a string within the variable $classes.
 *
 * @see template_preprocess()
 * @see template_preprocess_comment()
 * @see template_process()
 * @see theme_comment()
 *
 * @ingroup themeable
 */

<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>> <?php print $picture ?> <?php if ($new): ?> <span class="new"><?php print $new ?></span> <?php endif; ?> <?php print render($title_prefix); ?> <h3<?php print $title_attributes; ?>><?php print $title ?></h3> <?php print render($title_suffix); ?> <div class="submitted"> <?php print $permalink; ?> <?php print $submitted; ?> </div> <div class="content"<?php print $content_attributes; ?>> <?php // We hide the comments and links now so that we can render them later. hide($content['links']); print render($content); ?> <?php if ($signature): ?> <div class="user-signature clearfix"> <?php print $signature ?> </div> <?php endif; ?> </div> <?php print render($content['links']) ?> </div> [/highlightjs_code]

این فایل را باید در دایرکتوری theme ای که پیاده سازی می کنید کپی کنید و آن را به صورتی که می خواهید تغییر دهید. البته باید دقت کنید که بسیار از داده های یک نظر به صورت پویا با کد PHP در میان تگ های HTML چاپ می شوند، بنابراین باید مواظب باشید که آنها را حذف نکنید. البته ممکن است شما بخواهید یک یا چند متغیر را چاپ نکنید.

برای نمونه در پائین مشاهده می کنید که کد این فایل را تغییر داده ایم تا به اهداف مورد نظر خود برسیم. تغییراتی که اعمال شده اند به این صورت هستند: در خط سوم، تصویر کاربر در کد حذف شده است تا نمایش داده نشود. کل خروجی یک نظر را درون یک تگ div که دارای کلاس my-commnet-wrapper است، قرار داده ایم.

<div class="my-commnet-wrapper">
  <div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
    <?php // print $picture ?>

    <?php if ($new): ?>
      <span class="new"><?php print $new ?></span>
    <?php endif; ?>

    <?php print render($title_prefix); ?>
    <h3<?php print $title_attributes; ?>><?php print $title ?></h3>
    <?php print render($title_suffix); ?>

    <div class="submitted">
      <?php print $permalink; ?>
      <?php print $submitted; ?>
    </div>

    <div class="content"<?php print $content_attributes; ?>>
      <?php
        // We hide the comments and links now so that we can render them later.
        hide($content['links']);
        print render($content);
      ?>
      <?php if ($signature): ?>
      <div class="user-signature clearfix">
        <?php print $signature ?>
      </div>
      <?php endif; ?>
    </div>
  
    <?php print render($content['links']) ?>
  </div>
</div>

به این ترتیب شما نیز می توانید تغییرات مورد نظر خود را در این فایل ایجاد کنید و خروجی متفاوتی را برای یک نظر خاص داشته باشید.

نظرات

سلام دوست عزيز سايت بسيار خوبي با دانش فني خوبي داري بهت تبريك ميگم
من يه سوال تخصصي داشتم
ميخواستم بدونم من چطوري region كلن بلاك نظرها ر ا تغيير بدم چون يك region ديگه دارم به نام contetn2 ميخوام اونو بعد content 2 بگذارم با تشكر از زحمات شما

تصویر admin
پیمان خان از ابراز نظر شما سپاسگزارم. دقیقا درک درستی از نیازتان به دست نیاوردم. ولی با توجه به حدسی که زدم شاید ماژول panels و درست کردن صفحه با پنل ها به کارتان بیاید.

با سلام و احترام
چگونه میتوان کامنت های یک محتوا را با استفاده از ماژول views نمایش داد (زمانی که نمایش بصورت fields هست).
من با استفاده از ماژول views و با نمایش fields محتوا را نمایش میدم.
ولی وقتی فیلدهای کامنت ها رو هم اضافه میکنم فقط یکی از کامنت ها رو نمایش میده
وقتی هم روی لینک ایجاد نظر جدید کلیک میکنم به صفحه نمایش عادی محتوا میره و از حالت نمایش views خارج میشه.

لطفا راهنمایی بفرمایید. با تشکر

ارسال نظر