मोबाइल उपकरणों के लिए प्रदर्शन का अनुकूलन करने के लिए जूमला 3 में डिवाइस या व्यूपोर्ट आकार के आधार पर एक मॉड्यूल को कैसे अक्षम किया जा सकता है?


14

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

कुछ कमियां हैं, उदाहरण के लिए, बड़े डिस्प्ले पर मैं कुछ मॉड्यूल शामिल करना चाहता हूं जो छोटे व्यूपोर्ट आकार के लिए छिपाए जाएंगे। हालांकि, उस मामले में जहां एक मॉड्यूल व्यूपोर्ट के आकार के आधार पर छिपा होता है, उस मॉड्यूल को लोड करने और निष्पादित करने पर एक अनावश्यक प्रदर्शन हिट होता है जब यह ज्ञात होता है कि विशिष्ट मॉड्यूल कभी भी छोटे व्यूपोर्ट आकार में प्रदर्शित नहीं होगा।

प्रदर्शन को तेज करने के लिए मैं प्रभावी रूप से एक मॉड्यूल को निष्क्रिय करने के लिए व्यूपोर्ट आकार का उपयोग कैसे कर सकता हूं (यानी इसे निष्पादित करने से रोकें)?

जवाबों:


15

उन्नत मॉड्यूल प्रबंधक ( http://www.nonumber.nl/extensions/advancedmodulemanager ) आपको ब्राउज़र TYPE के आधार पर मॉड्यूल असाइन करने की अनुमति देता है। तो आप मोबाइल, या डेस्कटॉप, या विशिष्ट डिवाइस का चयन कर सकते हैं। यह आपको आकार के हिसाब से चुनने की अनुमति नहीं देता है, इसलिए यह केवल एक हद तक उपयोगी है।

यह php और जावास्क्रिप्ट के संयोजन से भी संभव हो सकता है। मैं यह प्रश्न अपने मित्र को भेजूंगा, उसे एक विचार हो सकता है।


कितना अच्छा विचार है, मैंने कभी इस तरह से एएमएम का उपयोग करने के बारे में नहीं सोचा था।
jackJoe

पीटर ने एएमएम में बहुत बढ़िया कार्यक्षमता डाल दी है, यह मेरी राय में जरूरी है।
फेय

मैं इससे सहमत हु। अगर मैं एक ऐसे विषय के साथ फंस गया था जिसमें यह नहीं बनाया गया था (उदाहरण के लिए ताना 7 विषयों में यह बनाया गया है) तो मैं एएमएम का उपयोग करूंगा।
ब्रायन पीट

@BrianPeat - क्या आप इस बारे में अधिक जानकारी प्रदान कर सकते हैं कि यह WARP7 के साथ कैसे काम करता है?
NivF007

3
Warp 7 में टेम्पलेट व्यवस्थापक में एक पैनल है जो आपको डेस्कटॉप / टैबलेट / फोन के लिए बटन क्लिक करने देता है और यह उन सेटिंग्स के आधार पर मॉड्यूल को चालू और बंद करता है। रॉकेट विषय विशेष वर्गों के साथ कुछ ऐसा ही करता है। मुझे नहीं पता कि क्या मॉड्यूल लोड हो रहा है, या यदि सब कुछ लोड है और फिर बस छिपा हुआ है। मुझे संदेह है कि यह बाद का है क्योंकि आप इसे ब्राउज़र को बदलते समय बदल सकते हैं। यदि आप आकार के आधार पर चीजों को पूरी तरह से बंद कर देते हैं, तो यदि आप सक्रिय रूप से खिड़की का आकार बदल देंगे तो यह क्या करेगा?
ब्रायन पीट

10

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

उदाहरण के स्क्रीन आकार के आधार पर यह संभव है कि पोर्ट्रेट मोड में एक टैबलेट मॉड्यूल को लोड न करने का कारण बने, लेकिन फिर उसी टैबलेट को लैंडस्केप मोड में एक बार उस सामग्री की आवश्यकता हो सकती है।


3
जबकि यह सच है, यह वास्तव में व्यवहार में प्रभावी नहीं है। मतलब एक iPhone उपयोगकर्ता के पास 1440x900 का स्क्रीन रिज़ॉल्यूशन कभी नहीं होगा, न ही उनके पास अपने व्यूपोर्ट के आकार बदलने की क्षमता भी नहीं होगी। उत्तरदायी डिजाइन जहां लोग "ओह देखो जैसे चीजें कैसे बदलते हैं जैसे मैं अपने ब्राउज़र विंडो को आकार देता हूं" वास्तव में केवल डिजाइनरों को दिखाना चाहते हैं के लिए प्रभावी है। व्यवहार में, मॉड्यूल को बंद करने और विभिन्न स्क्रीन आकारों के लिए आउटपुट बदलने के दृष्टिकोण को लेना पूरी तरह से ठीक है।
डॉन गिल्बर्ट

3
@ खेद है कि यह केवल उत्तरदायी डिज़ाइन नहीं है, और डेस्कटॉप पर बहुत सारे लोग हैं जो विंडोज़ में काम करने के दौरान आकार बदलने की सुविधाओं का लाभ उठाते हैं। उत्तरदायी डिजाइन व्यूपोर्ट परिवर्तनों के प्रति प्रतिक्रिया करता है कि क्या यह एक निश्चित डिवाइस से है या नहीं।
स्पेंकी

2
मैं सहमत हूँ। लेकिन मैं "उत्तरदायी डिजाइन" के लक्ष्यों से असहमत हूं। जैसा कि मैंने कहा, डिजाइनरों द्वारा इसे दिखाने का सपना देखा गया था। वे इस तथ्य को भूल जाते हैं कि iPhone के पास कभी भी एक विशाल संकल्प नहीं होगा। tl; dr - उत्तरदायी डिज़ाइन मोबाइल उपकरणों पर कोई फर्क नहीं पड़ता । मैं बजाय "शुद्ध उत्तरदायी डिजाइन" की तुलना में नेटवर्क बैंडविड्थ बचा सकता हूँ।
डॉन गिल्बर्ट

2
@DonGilbert और Spunkie - IMO में - आप दोनों सही हैं। उत्तरदायी वेब डिज़ाइन की 'सख्त' परिभाषा में 'सामग्री' को संशोधित करना शामिल नहीं है - मैं RWD / AWD - उत्तरदायी वेब डिज़ाइन और अनुकूली वेब वितरण en.wikipedia.org/wiki/Responsive-web_design
NivF007

8

यह एक जेएस वर्ग है जिसे मैंने कुछ समय पहले बनाया था जो दर्शकों का पता लगाने के लिए जावास्क्रिप्ट का उपयोग कर सकता था, इसे कठोर परीक्षण या कार्यों के माध्यम से कभी नहीं रखा गया है।

function ResJS(){
    this.min = 0;
    this.max = 0;
    this.config = config;
    this.width = function(){
        return jQuery(window).width();
    }
    this.breakpoint = function(min,max){
        this.min = min;
        this.max = max;
        this.outside = false;
        this.inside = false;
        this.triggeredOut = false;
        this.triggeredIn = false;
        this.enter = function(callback){
            var context = this;
            jQuery(window).on('resize',function(){
                if(context.min<context.width()&&context.max>context.width()){
                    if(!context.triggeredIn){
                        jQuery(document).ready(function(){callback(context.min,context.max)});
                        context.inside = true; //browser width has entered breakpoint
                        context.outside = false; //browser has left another breakpoint
                        context.triggeredIn = true; //triggered event for breakpoint
                        context.triggeredOut = false; //be ready to trigger leave event
                    }
                }else{
                    context.inside = false; //browser width is not within breakpoint
                    context.outside = true; //brower width is outside of breakpoint
                }
            });
            if(context.min<context.width()&&context.max>context.width()){
                jQuery(document).ready(function(){callback(context.min,context.max)});
                context.inside = true;
                context.outside = false;
                context.triggeredIn = true;
                context.triggeredOut = false;
            }else{
                context.inside = false;
                context.outside = true;
                context.triggeredOut = true;
                context.triggeredIn = false;
            }
            return this;
        }
        this.leave = function(callback){
            var context = this;
            jQuery(window).on('resize',function(){
                if(context.outside&&!context.triggeredOut){
                    jQuery(document).ready(function(){callback(context.min,context.max)});
                    context.triggeredIn = false;
                    context.triggeredOut = true;
                }
            });     
            return this;
        }
        return this;
    }
    return this;
}

मूल रूप से आप इसे इस तरह से उपयोग करते हैं

ResJS()
    .breakpoint(0,600)
    .enter(function(min,max){
        console.log(min,max,'enter');
    })
    .leave(function(min,max){
        console.log(min,max,'leave');
    });

ब्रेकपॉइंट में चौड़ाई के लिए न्यूनतम / अधिकतम पैरामीटर हैं, फिर इसे दर्ज करने और छोड़ने के लिए एक जंजीर फ़ंक्शन, कुछ जेएस कोड चलाने के लिए कॉलबैक के साथ।

मैं इस बात पर विस्तार से नहीं जा सकता कि यह कैसे काम करता है, जैसा कि मैंने इसे बहुत पहले बनाया था, लेकिन अगर यह मदद करेगा तो इसका उपयोग करने के लिए आपका मुफ्त होगा। यह व्यूपोर्ट के आधार पर अजाक्स के माध्यम से मॉड्यूल को लोड करने के लिए उपयोग किया जा सकता है। मेरा मानना ​​है कि जूमला के com_ajax का उपयोग इसके साथ किया जा सकता है ताकि वास्तव में कुछ शांत सुविधाएँ मिल सकें।


1
यह पहेली का एक प्रमुख टुकड़ा जैसा दिखता है और इसमें दिलचस्प संभावनाएं हैं - उत्तर के लिए धन्यवाद और विशेष रूप से कोड पोस्ट करने के लिए।
NivF007

1
शीर्ष उत्तर मेरा सहकर्मी है, यह कमोबेश मेरा विचार है: P
जॉर्डन रामस्टैड

3

एक अन्य समाधान:

आप इस तरह एक सर्वर साइड डिवाइस का पता लगाने का उपयोग कर सकते हैं: http://mobiledetect.net/ यहाँ जूमला प्लगिन http://www.yagendoo.com/en/blog/free-mobile-detection-plugin-for-joomla.html और फिर अपने स्वयं के mod_chrome शैली के साथ जूमला / टेम्प्लेट / yourtemplate / html / मॉड्यूल.php का विस्तार करें। यदि आप किसी भी डिवाइस या रिज़ॉल्यूशन के लिए कथन पसंद करते हैं तो आप कई php लिख सकते हैं।


3

यदि आप प्रदर्शन में तेजी लाना चाहते हैं तो उन मॉड्यूल को लोड न करें जो अनावश्यक हैं। यदि यह छोटे स्क्रीन पर आवश्यक नहीं है, तो यह बड़े स्क्रीन पर भी आवश्यक नहीं है।

बड़े डिवाइस डिस्प्ले वाले लोग एक तेज़ वेबसाइट भी चाहते हैं जो अनावश्यक क्रॉफ्ट को लोड नहीं करता है। आप गलत धारणा बना रहे हैं कि बड़ी स्क्रीन में अधिक बैंडविड्थ उपलब्ध है। वे नहीं करते।

एक अच्छा डिज़ाइनर बनें और अपने सभी उपयोगकर्ताओं को एक स्वनिर्धारित साइट अनुभव दें, चाहे उनकी स्क्रीन का आकार कुछ भी हो।


2

मेरा सुझाव है कि ब्राउज़र सूँघना यहाँ जाने का गलत तरीका है। यदि आप वास्तव में केवल स्क्रीन चौड़ाई के आधार पर मॉड्यूल लोड करना चाहते हैं, तो आपको कुछ जावास्क्रिप्ट चलाने की आवश्यकता है, जो तब AJAX (com_ajax) द्वारा मॉड्यूल को कॉल करता है। यह ध्यान रखें कि AJAX द्वारा लोड की गई सामग्री के लिए खोज इंजन अनुकूलन के मामले में एक भुगतान हो सकता है।


2

मैं आमतौर पर ऐसा करने के लिए css @media का उपयोग करता हूं। स्क्रीन के आकार के आधार पर चीजों को छिपाने के लिए इसे सरल बनाता है और उन्हें कई बार पार्स करता है जब एक लैंडस्केप टैबलेट इसे दिखाने के लिए पर्याप्त चौड़ा होता है और पोर्ट्रेट चौड़ाई नहीं होती है। यहाँ एक उदाहरण है:

@media (max-width:699px) {
    #moduleid, .modulewrapperclass {display:none}
}

मैं आमतौर पर पूरे मॉड्यूल स्थिति को छिपाने के लिए इसका उपयोग करता हूं इसलिए मैं उस स्थिति (या कुछ टेम्पलेट्स में स्थिति) के रैपर पर अपने सीएसएस चयनकर्ता को आधार बनाता हूं।


आपके उत्तर के लिए धन्यवाद। CSS मीडिया-क्वेरी दृष्टिकोण के साथ समस्या यह है कि आप अभी भी एक मॉड्यूल निष्पादित कर रहे हैं (भले ही आप इसे प्रदर्शित न करने का विकल्प चुन रहे हों)। मैं जिस समाधान की तलाश कर रहा हूं वह तब तक मॉड्यूल को निष्पादित नहीं करेगा जब तक कि यह प्रदर्शित न हो।
NivF007

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

1

आप इसे कुछ जावास्क्रिप्ट का उपयोग करके मांग पर लोड कर सकते हैं जो com_ajax कहते हैं और वर्तमान आकार के लिए केवल मॉड्यूल लौटाते हैं।


0

आप मीडिया प्रश्नों के संयोजन में मॉड्यूल प्रत्यय का उपयोग कर सकते हैं। कई टेम्प्लेट फ्रेमवर्क में यह पहले से ही अंतर्निहित है, जहां आप मोबाइल पर उन्हें प्रदर्शित न करने के लिए "हिडन-फोन" की एक कक्षा जोड़ सकते हैं। वे उन्हें सीएसएस हेल्पर कक्षाएं कहते हैं:

गैन्ट्री: http://www.gantry-framework.org/documentation/joomla/advanced/responsive_grid_system.md

WARP: http://www.yootheme.com/blog/2012/06/12/warp-gets-responsive

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