पैनलों द्वारा निर्मित HTML को बदलना: क्या यह संभव है?


15

मैं पैनलों का उपयोग करना पसंद करता हूं, हालांकि पैनलों को शैली में बट में दर्द होता है क्योंकि भारी मात्रा में div की उत्पत्ति होती है। इसके अलावा उन वर्गों पर लागू होने वाली कक्षाएं कोई मतलब नहीं रखती हैं और वैसे भी बहुत तेज़ हैं। मेरे साथी सामने वालों के बीच भ्रम की स्थिति के कारण।

आपको वे उत्पादन दिखाने के लिए:

पैनलों द्वारा आउटपुट

समस्या यह है कि मैं 960.gs और पैनलों का उपयोग कर रहा हूं, अपनी कक्षाएं और भारी div संरचना जोड़ता है, जिससे मुझे उनकी कक्षाओं को ओवरराइड करना पड़ता है। यह कुछ ऐसा है जो मैं नहीं करना चाहता, मैं divs को साफ करना चाहता हूं। क्या इसे करने का कोई तरीका है?

संपादित करें:

मैंने कुछ डिव को साफ करने के लिए क्या किया, जिसे मैंने बेकार माना:

Flex.inc में # 388 लाइन से शुरू (पैनल / प्लगइन्स / लेआउट / लचीला)

$output = '';     
//$output = "<div class=\"panel-flexible " . $renderer->base['canvas'] . " clearfix\" $renderer->id_str>\n";
    //  $output .= "<div class=\"panel-flexible-inside " . $renderer->base['canvas'] . "-inside\">\n";

      $output .= panels_flexible_render_items($renderer, $settings['items']['canvas']['children'], $renderer->base['canvas']);

      // Wrap the whole thing up nice and snug
      //$output .= "</div>\n</div>\n";

मैंने वास्तव में लचीले लेआउट की एक प्रतिलिपि बनाई और उस एक को संपादित किया, लेकिन अगर मेरे पास इस परियोजना पर अधिक समय था, तो मैं इसके लिए एक क्लीनर प्लगइन बनाऊंगा।

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

जवाबों:


19

मैंने इस मुद्दे पर पहले देखा है। यहां वह मुद्दा है जिसे आप पढ़ना चाहते हैं । यह पहली बार में पागल लगता है, लेकिन वास्तव में इसके इस तरह से होने के अच्छे कारण हैं।

नीचे पंक्ति: एक प्रोटोटाइप उपकरण के रूप में पैनलों के लचीले लेआउट के बारे में सोचें । विकास, मंचन, उपयोगकर्ता-परीक्षण आदि में विचारों को आज़माने और उसका मसौदा तैयार करने के लिए इसका उपयोग करें, फिर जब आपको सही लेआउट मिल जाए, तो इसे कस्टम पैनल्स लेआउट के रूप में स्वच्छ, कुरकुरा, हाथ से अनुकूलित HTML के साथ उत्पादन के लिए लागू करें (अधिक नीचे उन पर)।

यहाँ एक त्वरित सारांश है कि यह जिस तरह से है, उस मुद्दे पर आधारित है जिससे मैं जुड़ा था:

  • पैनलों के एचटीएमएल आउटपुट को क्रेजीएस्ट लचीले लेआउट को समायोजित करने में सक्षम होने के लिए पागल मार्कअप की आवश्यकता है, जो कि किसी भी व्यक्ति को नेस्टेड तरल पदार्थ और फिक्स्ड क्षेत्रों के भार को समझना चाहते हैं।
  • स्वचालित रूप से उत्पन्न कुछ भी HTML शुद्धतावादियों के लिए पर्याप्त नहीं होगा, इसलिए पैनल्स के लोगों ने उन्हें लचीली लेआउट सुविधा के भीतर खुश रखने की कोशिश नहीं की है । तो कोई HTML ऑप्टिमाइज़र एल्गोरिथ्म नहीं है जो आपके लेआउट द्वारा उत्पन्न HTML को नंगे न्यूनतम तक रोकने की कोशिश करता है, क्योंकि कोई फर्क नहीं पड़ता कि यह कितना अच्छा था, यह अभी भी सर्वोत्तम-मानक HTML नहीं होगा।
  • कुछ वे उल्लेख नहीं करते हैं: यदि इस तरह के एक अनुकूलक था, तो लेआउट में कुछ परिवर्तन अब-निरर्थक divs और कक्षाएं गायब हो जाएगा। यदि आपने CSS को इन पर लटका दिया है, तो आपको अपने CSS को पैनल्स के लचीले लेआउट में एक छोटा परिवर्तन करने के लिए अधिकतर बार फिर से लिखना होगा। इसका मतलब यह है कि यदि वे पैनेल फ्लेक्सिबल लेआउट को एक सर्वश्रेष्ठ-मानक उत्पादन उपकरण बनाने की कोशिश (और विफल) हुए, तो उन्होंने इसे एक प्रोटोटाइप टूल के रूप में भी कमजोर कर दिया।
  • आप क्लीन, लीन पैनल्स HTML आउटपुट प्राप्त कर सकते हैं । पंक्तियों के बीच अपेक्षित वर्कफ़्लो, क्या मुझे विश्वास है कि कुछ इस तरह है:
    • आप विचारों को आज़माते हुए, शुरुआती विकास के दौरान पैनलों लचीले लेआउट का उपयोग करते हैं।
    • एक बार जब आप किसी विशेष लेआउट पर व्यवस्थित हो जाते हैं, यदि आप स्वच्छ HTML चाहते हैं, तो आप इसे कस्टम लेआउट का उपयोग करके इसे लागू करते हैं, केवल HTML मार्कअप की सटीक मात्रा का उपयोग करके, जो लेआउट को आपकी साइट के लिए सिर्फ सही कक्षाओं, शब्दार्थ आदि के साथ चाहिए (कैसे-नीचे से नीचे) )।

जबकि मुझे यह पहले पसंद नहीं था, पर मुझे लगता है कि यह समझ में आता है। असंभव करने की कोशिश करने के बजाय और एक ऐसा उपकरण बनाएं जो प्रोटोटाइप के लिए और उत्पादन के संदर्भ में सर्वोत्तम मानकों के लिए एकदम सही है - जिसमें दोनों की बहुत अलग-अलग ज़रूरतें हैं और केवल एक ऐसे परिणाम के रूप में परिणाम हो सकते हैं जो या तो बिल्कुल सही नहीं था - वे एक उपकरण के साथ चला गया है जो प्रोटोटाइप के लिए आदर्श है और दूसरा अलग उपकरण (कस्टम लेआउट) जो दुबला उत्पादन के लिए आदर्श है।

इसका मतलब है कि आप दोनों को सर्वश्रेष्ठ प्राप्त कर सकते हैं, अपने अंतिम लेआउट को सर्वश्रेष्ठ मानकों वाले एचटीएमएल के आधार पर टेम्पलेट के रूप में थोड़ा और अधिक काम करने की कीमत पर - लेकिन एक एचटीएमएल शुद्धतावादी उस छोटे से अतिरिक्त काम को करने के लिए वैसे भी करना चाहेगा। उनका आउटपुट परफेक्ट है।


कस्टम पैनल लेआउट कैसे बनाएं? ऐसा करने के बारे में प्रलेखन में एक विस्तृत गाइड है । यहाँ एक त्वरित मूल सारांश है:

  1. मौजूदा लेआउट /sites/all/modules/panels/plugins/layoutsको बनने से कॉपी करें/sites/all/themes/[your_theme_name]/layouts/[new_unique_layout_machine_name]
  2. अपने नए फ़ोल्डर नाम से मिलान करने के लिए नई प्रतिलिपि में फ़ाइलों का नाम बदलें। ध्यान दें कि .tpl.phpफ़ाइल में अंडरस्कोर के बजाय हाइफ़न होना चाहिए।
  3. थीम जानकारी फ़ाइल में एक पंक्ति जोड़ें: plugins[panels][layouts] = layoutsयह पैनलों को बताता है कि आपके पास इस विषय में कस्टम लेआउट हैं, और वे कहां हैं (स्ट्रिंग को बदलें layoutsयदि यह आपके थीम से आपके कस्टम लेआउट फ़ोल्डर में पथ नहीं है)
  4. अपने संपूर्ण, चिकना, न्यूनतम, शब्दार्थ सर्वोत्तम मानकों HTML और सीएसएस के साथ फ़ाइलों को संपादित करें।

    • .incअपने लेआउट, जैसे नाम, श्रेणियां, फ़ाइल नाम आदि के बारे में जानकारी के साथ फ़ाइल अपडेट करना भी न भूलें
    • theme.inc फ़ाइल .tpl.phpएक्सटेंशन के बिना फ़ाइल के फ़ाइल नाम से मेल खाना चाहिए । themeमूल्य में यहां आप जो भी अंडरस्कोर डालते हैं, वह हाइफ़न में परिवर्तित हो जाएगा।
    • .pngअपने वास्तविक लेआउट को बेहतर ढंग से दर्शाने के लिए आइकन को संपादित करने पर भी विचार करें।
  5. कैशे साफ़ करें। आपका नया लेआउट .incफ़ाइल में निर्दिष्ट नाम, श्रेणी आदि के साथ पैनलों में एक विकल्प के रूप में दिखाई देता है । इसका इस्तेमाल करें।

1
Thnx आदमी!, यह मेरे लिए बाकी दोपहर को लेने जा रहा है ... लेकिन इसे "हैकिंग" के बिना किया जा सकता है, जिससे मेरा दिमाग थोड़ा शांत हो जाए। Btw: मुझे उम्मीद है कि यह पोस्ट किसी तरह से Google में बदल जाएगी क्योंकि मुझे इस मुद्दे के बारे में कोई पोस्ट नहीं मिली: S
thecodeassassin

@ स्टेफ़ेन मुझे आश्चर्य है कि मैं एक प्रश्न पूछने और अपने स्वयं के प्रश्नों पर समाप्त होने के बाद कितनी बार 6 महीने + के लिए खोज करता हूं। या एक ही एसई सवाल ...
वर्नरसीडी

मुझे लगता है कि यह सवाल और जवाब सुपर-उपयोगी है, इसलिए मैंने इसके शीर्षक को संपादित करने का सुझाव दिया जिसे स्वीकार कर लिया गया। मैंने खुद से वहाँ पर वही सवाल पूछा: drupal.stackexchange.com/questions/69807/theming-panels-html जो एक डुप्लिकेट है
जॉर्ज कैटसनोस

5

आप पैनलों के लिए मार्कअप आउटपुट को नियंत्रित करने के लिए क्लीन मार्कअप ड्रुपल 7 मॉड्यूल पर भी विचार कर सकते हैं ।

मैंने इस पृष्ठ को ब्राउज़र में खोजा और इसका उल्लेख पहले से ही नहीं मिला, जिसमें user568458 द्वारा दिया गया वास्तव में अच्छा व्यापक उत्तर शामिल है।

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