फ़ील्ड देखने के लिए शैली विशेषता जोड़ें


12

मैं अपने विचार में प्रत्येक शीर्षक फ़ील्ड में एक शैली विशेषता जोड़ना चाहूंगा। मैंने एक रंग के लिए एक क्षेत्र बनाया है। मैंने इस तरह से परिणाम को फिर से लिखने की कोशिश की:

<h2 style="color: [field_color];">[title_1]</h2>

लेकिन स्टाइल विशेषता को हटा दिया जाएगा। मैं ड्रुपल 7 का उपयोग कर रहा हूं।

किसी भी मदद की सराहना की।


इसे क्यों हटाया गया? क्या आपने इसके बजाय एक वैश्विक पाठ क्षेत्र का उपयोग करने की कोशिश की है?
एलेक्स गिल

आपके उत्तर के लिए धन्यवाद! वैश्विक पाठ क्षेत्र से आपका क्या तात्पर्य है? मेरे विचार में सेटिंग्स: प्रारूप: अनफ़िल्टर्ड सूची दिखाएँ: फ़ील्ड
केएसएन

आपके पास 'वैश्विक पाठ' फ़ील्ड जोड़ने का विकल्प है। इस फ़ील्ड को आपके द्वारा पहले से जोड़े गए किसी भी अन्य फ़ील्ड के बाद जाना चाहिए। फिर आप इस कस्टम फ़ील्ड में टोकन का उपयोग कर सकते हैं जैसा कि आपने ऊपर किया है। फिर आप कस्टम फ़ील्ड में दिखाए गए फ़ील्ड छिपा सकते हैं।
एलेक्स गिल

1
आपका सबसे अच्छा विकल्प संभवतः इस क्षेत्र के लिए एक कस्टम टेम्पलेट फ़ाइल बनाना है या नीचे वर्णित टोकन के आधार पर एक वर्ग का उपयोग करना है।
एलेक्स गिल

1
यदि आप दाईं ओर 'उन्नत' के नीचे देखते हैं, तो 'थीम सूचना' के लिए एक विकल्प है, यहाँ यह आपको टेम्पलेट्स के लिए कुछ सुझाव देगा।
एलेक्स गिल

जवाबों:


4

आप शैली सेटिंग्स का उपयोग करके शीर्षक फ़ील्ड में एक वर्ग सेट कर सकते हैं जैसा कि स्क्रीन के नीचे दिखाया गया है। आप शीर्षक फ़ील्ड में कक्षा सेट करने के लिए शैली सेटिंग्स में टोकन प्रतिस्थापन कर सकते हैं।

यहाँ छवि विवरण दर्ज करें

छोटी जावास्क्रिप्ट या jquery का उपयोग करके शीर्षक फ़ील्ड की कक्षा पढ़ें और सीएसएस संपत्ति का उपयोग करके वर्ग नाम के समान रंग सेट करें ।


2
शायद आपका समाधान काम करता है, लेकिन मुझे जावास्क्रिप्ट के बिना इसका क्या हल करना है। संभव है?
Ksn

2
आप सुरक्षा के मुद्दों के कारण शैली की संपत्ति के लिए फ़ील्ड मान को सीधे इंजेक्ट नहीं कर सकते हैं .. यहां देखें मुद्दा drupal.org/node/853880
अनिल सागर

फिर आपको प्रत्येक रंग के लिए अलग सीएसएस क्लास लिखने की जरूरत है, हालांकि यह सबसे खराब स्थिति है, क्योंकि आपको 16 मिलियन क्लास लिखने की जरूरत है :(? जावास्क्रिप्ट या
जक्वेरी

2
अनिल, मैंने आपके समाधान की कोशिश की लेकिन Drupal ने # रंग से हटा दिया, इसलिए मुझे jQuery के साथ एक और समाधान मिला। मैंने फ़ील्ड में विशेषता डेटा जोड़ा: <h2 डेटा-रंग = "[field_color]"> [title_1] </ h2> मैंने टेम्पलेट्स के साथ अन्य समाधानों की जांच की है, लेकिन मुझे इसे हल करने का सही तरीका नहीं मिला।
केएसएन

1

आप इस फ़ील्ड के लिए एक tpl बना सकते हैं (उदाहरण: view-view-field-MY-VIEW-NAME-page.tpl.php), इस tpl में आप टोकन लेखन को जोड़ सकते हैं:

<h2 style="color: <?php print $field->last_tokens['[field_color]'] ?>;"><?php print $field->last_tokens['[title_1]'] ?></h2>

1

मुझे किसी विशेष क्षेत्र के लिए इनलाइन रंग के रूप में एक फ़ील्ड का मान भी शामिल करना था। एक आसान अनुकूलन योग्य समाधान के लिए वेब ब्राउज़ करने के बाद, मैंने यह करना समाप्त कर दिया:

  1. सीएसएस क्लास टोकन के रूप में रंग का मूल्य जोड़ें, पिछली पोस्ट में छवि की तरह।
  2. इस तरह से कार्य करें__प्रोसेसर_व्यू_व्यू_फ़ील्ड () को फिर से लिखें :

     function hook_preprocess_views_view_fields(&$vars) {
      $view = $vars['view'];
    
      // Loop through the fields for this view.
      $previous_inline = FALSE;
      $vars['fields'] = array(); // ensure it's at least an empty array.
      foreach ($view->field as $id => $field) {
    
        // render this even if set to exclude so it can be used elsewhere.
        $field_output = $view->style_plugin->get_field($view->row_index, $id);
        $empty = $field->is_value_empty($field_output, $field->options['empty_zero']);
        if (empty($field->options['exclude']) && (!$empty || (empty($field->options['hide_empty']) && empty($vars['options']['hide_empty'])))) {
          $object = new stdClass();
          $object->handler = & $view->field[$id];
          $object->inline = !empty($vars['options']['inline'][$id]);
    
          $object->element_type = $object->handler->element_type(TRUE, !$vars['options']['default_field_elements'], $object->inline);
          if ($object->element_type) {
            $class = '';
            if ($object->handler->options['element_default_classes']) {
              $class = 'field-content';
            }
    
            if ($classes = $object->handler->element_classes($view->row_index)) {
              if ($class) {
                $class .= ' ';
              }
              $class .= $classes;
            }
    
            $class_array = explode(' ', $class);
            foreach ($class_array as $cid => $candidate) {
              // Find the color hex code.
              if (preg_match('/([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?\b/', $candidate)) {
                $style = 'color:#' . $candidate . ';';
                unset($class_array[$cid]);
              }
            }
    
            $pre = '<' . $object->element_type;
            if ($class) {
              $pre .= ' class="' . implode(' ', $class_array) . '"';
            }
            if ($style) {
              $pre .= ' style="' . $style . '"';
            }
            $field_output = $pre . '>' . $field_output . '</' . $object->element_type . '>';
          }
    
          // Protect ourself somewhat for backward compatibility. This will prevent
          // old templates from producing invalid HTML when no element type is selected.
          if (empty($object->element_type)) {
            $object->element_type = 'span';
          }
    
          $object->content = $field_output;
          if (isset($view->field[$id]->field_alias) && isset($vars['row']->{$view->field[$id]->field_alias})) {
            $object->raw = $vars['row']->{$view->field[$id]->field_alias};
          }
          else {
            $object->raw = NULL; // make sure it exists to reduce NOTICE
          }
    
          if (!empty($vars['options']['separator']) && $previous_inline && $object->inline && $object->content) {
            $object->separator = filter_xss_admin($vars['options']['separator']);
          }
    
          $object->class = drupal_clean_css_identifier($id);
    
          $previous_inline = $object->inline;
          $object->inline_html = $object->handler->element_wrapper_type(TRUE, TRUE);
          if ($object->inline_html === '' && $vars['options']['default_field_elements']) {
            $object->inline_html = $object->inline ? 'span' : 'div';
          }
    
          // Set up the wrapper HTML.
          $object->wrapper_prefix = '';
          $object->wrapper_suffix = '';
    
          if ($object->inline_html) {
            $class = '';
            if ($object->handler->options['element_default_classes']) {
              $class = "views-field views-field-" . $object->class;
            }
    
            if ($classes = $object->handler->element_wrapper_classes($view->row_index)) {
              if ($class) {
                $class .= ' ';
              }
              $class .= $classes;
            }
    
            $object->wrapper_prefix = '<' . $object->inline_html;
            if ($class) {
              $object->wrapper_prefix .= ' class="' . $class . '"';
            }
            $object->wrapper_prefix .= '>';
            $object->wrapper_suffix = '</' . $object->inline_html . '>';
          }
    
          // Set up the label for the value and the HTML to make it easier
          // on the template.
          $object->label = check_plain($view->field[$id]->label());
          $object->label_html = '';
          if ($object->label) {
            $object->label_html .= $object->label;
            if ($object->handler->options['element_label_colon']) {
              $object->label_html .= ': ';
            }
    
            $object->element_label_type = $object->handler->element_label_type(TRUE, !$vars['options']['default_field_elements']);
            if ($object->element_label_type) {
              $class = '';
              if ($object->handler->options['element_default_classes']) {
                $class = 'views-label views-label-' . $object->class;
              }
    
              $element_label_class = $object->handler->element_label_classes($view->row_index);
              if ($element_label_class) {
                if ($class) {
                  $class .= ' ';
                }
    
                $class .= $element_label_class;
              }
    
              $pre = '<' . $object->element_label_type;
              if ($class) {
                $pre .= ' class="' . $class . '"';
              }
              $pre .= '>';
    
              $object->label_html = $pre . $object->label_html . '</' . $object->element_label_type . '>';
            }
          }
    
          $vars['fields'][$id] = $object;
        }
      }
    
    }
    

जैसा कि आप देख सकते हैं, मैंने इन पंक्तियों को जोड़ दिया है:

$style = '';
$class_array = explode(' ', $class);
foreach ($class_array as $cid => $candidate) {
  // Find the color hex code.
  if (preg_match('/([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?\b/', $candidate)) {
    $style = 'color:#' . $candidate . ';';
    unset($class_array[$cid]);
  }
}

और इसके तहत लाइन बदलें:

$pre = '<' . $object->element_type;
if ($class) {
  $pre .= ' class="' . implode(' ', $class_array) . '"';
}
if ($style) {
  $pre .= ' style="' . $style . '"';
}

0

सुझाए गए फ़ील्ड अनिल में एक नाम जोड़ें, फिर अपने विषय फ़ोल्डर में style.css खोलें और ".my-css-name" और उसके बाद वांछित सीएसएस परिणाम जैसे:

.my-css-name {color: red; पृष्ठभूमि: हरा; }


0

मैं कुछ ऐसा ही बना रहा हूं और यहां मैंने वही किया है:

1- रंग और शीर्षक फ़ील्ड के साथ एक दृश्य बनाएं।

2- उस दृश्य के लिए एक कस्टम "विचार-दृश्य-फ़ील्ड .pl" बनाएं। (केवल रंग क्षेत्र के लिए एक कस्टम टेम्पलेट, मुझे एक त्रुटि दिखाई गई)

3- field->contentलाइन में आप क्या चाहते हैं जोड़ने / बदलें ...।<h2 style="color: #<?php print $field->content; ?>">

/ / / / अब से, मैंने इसे परीक्षण नहीं किया, लेकिन यह ठीक काम करना चाहिए / / / /

4- टाइटल फील्ड को छोड़कर हेडर / ग्रुप पर दिखाएं

5- उस दृश्य के लिए एक कस्टम "view-view-unformatted.tpl" बनाएं।

6- इस दृष्टि से हम <?php print $title; ?></h2>बाद में जोड़ते हैं <?php print $row; ?>। (हम शीर्षक जोड़ते हैं और पहले टेम्प्लेट में खुले एच टैग को बंद करते हैं)


पिछले संस्करण:

आप बस अपनी ज़रूरत की सभी चीज़ों को प्रिंट करने के लिए PHP का उपयोग कर सकते हैं और स्टाइल को फ़िल्टर नहीं किया जाएगा।


0

मुझे भी यही समस्या थी और नाम के एक टेम्पलेट को बनाकर इसे हल किया

views-view-field--field_name_here.tpl.php

मेरे मामले में, मुझे जिस HTML की आवश्यकता थी, वह कोड मैंने बनाया था:

<?php

$bg_color = $variables["row"]->field_field_button_background_color[0]["raw"]["rgb"];
$link_title = $variables["row"]->field_field_slideshow_item_cta_link[0]["raw"]["title"];
$link_url = $variables["row"]->field_field_slideshow_item_cta_link[0]["raw"]["url"];

echo '<a style="background-color:'.$bg_color.'" href="'.$link_url.'">'.$link_title.'</a>';

देवल मॉड्यूल को सक्षम करना और उपयोग करना

dpm($row);

टेम्पलेट फ़ाइल में बहुत उपयोगी था। इसके बिना यह पता नहीं लगा सकता था।


0

सबसे आसान समाधान जो मुझे मिल सकता है वह था डेटा विशेषता के रूप में मूल्य सम्मिलित करना। फिर मेरे जावास्क्रिप्ट में मैं डेटा फ़ील्ड से मान लेता हूं और परिवर्तन को प्रतिबिंबित करने के लिए सीएसएस को अपडेट करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.