it-swarm.asia

عرض قائمة مصطلحات التصنيف مفصولة بفواصل؟

دروبال 7.

في node.tpl.php ، أريد طباعة قائمة بمصطلحات التصنيف (يسمى التصنيف "القنوات"). إذا استخدمت:

<?php print render($content['field_channel']); ?>

من الواضح أنه يعمل ، ولكن أفضل ما يمكنني فعله لجعلها مضمنة هو استخدام CSS لتعويمها إلى اليسار. أريد فصلهم بفواصل. أيه أفكار؟

شكرا.

10
Mike

يمكنك تجربة الحقل باستخدام field.tpl.php أو theme_field() .

كمثال (باستخدام field.tpl.php):

  1. نسخ field.tpl.php إلى دليل السمة الخاص بك من "modules/field/theme"
  2. قم بعمل نسخة من هذا الملف وأعد تسميته إلى field--field-channel.tpl.php
  3. قم بتحرير الملف كيفما تشاء.

كمثال سريع/قذر لهذا العمل ، field--field-channel.tpl.php يمكن أن تبدو:

<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
  <?php if (!$label_hidden) : ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item) : ?>
      <div style="display:inline;" class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>>
        <?php 
          print render($item);
          // Add comma if not last item
          if ($delta < (count($items) - 1)) {
            print ','; 
          }
        ?>
      </div>
    <?php endforeach; ?>
  </div>
</div>

ربما هناك عدة طرق لإنجاز ذلك باستخدام ملف .tpl ، ولكن هذا خيار واحد فقط. أوصي بإضافة فصل دراسي إلى DIV بدلاً من النمط وإجراء التغييرات في ورقة الأنماط بدلاً من استخدام الأنماط المضمنة.

11
Laxman13

الوحدة Text Formatter متاحة الآن لـ Drupal 7 ، وتتيح لك القيام بذلك بدون عمل سمة مخصصة.

11
jhedstrom

إليك طريقة لاستخدام theme_field نهج (أضفه إلى template.php ملف):

/**
 * Implements theme_field()
 *
 * Make field items a comma separated unordered list
 */
function THEMENAME_field__NAME_OF_FIELD__NAME_OF_CONTENT_TYPE($variables) {
  $output = '';

  // Render the label, if it's not hidden.
  if (!$variables['label_hidden']) {
    $output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ':&nbsp;</div>';
  }

  // Render the items as a comma separated inline list
  $output .= '<ul class="field-items"' . $variables['content_attributes'] . '>';
  for ($i=0; $i < count($variables['items']); $i++) {
    $output .= '<li>'. drupal_render($variables['items'][$i]);
    $output .= ($i == count($variables['items'])-1) ? '</li>' : ', </li>';
  }
  $output .= '</ul>';

  return $output;
}
7
cdmo

يمكنك القيام بذلك بسهولة فقط في CSS:

. display-type-typeification-term-reference -field-items .field-item {
 display: inline-block؛ 
 * display: inline؛ 
 * التكبير/التصغير: 1 ؛ 
} 
. field-type-classification-term-reference -field-items .field-item: after {
 content: "،"؛ 
} 
. field-type-typeonomy-term-reference .field-items .field-item: last-child: after {
 content: ""؛ 
} 
4
Steven Wright

استخدام وظيفة ما قبل المعالجة: http://planken.org/2009/08/03/create-comma-separated-taxonomy-term-list-drupal

2
ipwa
<?php
if ($node->taxonomy) {
    foreach($node->taxonomy as $term) {
        if ($term->vid == 3) { // the id of the vocabulary
            $my_terms[] = l(
                t($term->name),
                'taxonomy/term/' . $term->tid
            );
        }
    }
}

if ($my_terms) { ?>
    <div class="clear-block">
        <div class="terms">
            <?php print implode(", ", $my_terms); ?>
        </div>
    </div>
<?php } ?>
0
brunorios1

أسهل بالنسبة للمحدِّد والمُضمِّن ، يمكنك استخدام الوحدة النمطية لمُنسِّق التصنيف: http://drupal.org/project/taxonomy_formatter

مزيد من التفاصيل من صفحة المشروع:

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

0
Greta