2016-12-20 6 views
14

हमारे पास एक कस्टम jQuery मेनू है जिसने हमारे ओपनकार्ट स्टोर पर अच्छा काम किया है। हालांकि द्वितीय स्तर की बाल श्रेणियां प्रदर्शित नहीं होंगी, PHP या तो बदले या मूल मेनू पर सही नहीं है। 2 या अधिक गहराई वाली श्रेणी वाले कुछ भी नहीं दिखाए जाएंगे।jQuery मेनू लोड नहीं हो रहा है PHP बाल श्रेणियां

तो हम http://ocart.site/opencart/index.php?route=product/category&path=25_29_59

पर एक 2 गहरी श्रेणी है लेकिन आप इसे http://ocart.site/opencart

पर मुख्य मेनू में प्रदर्शित नहीं होगी अगर मैं मूल डिफ़ॉल्ट मेनू के डिफ़ॉल्ट भागों में वापस जोड़ने के देखते हैं, यह वास्तव में मेनू को तोड़ देता है। आप http://ocart.site/defaultmenutoJQ.html

पर पुराने और नए मेनू की तुलना देख सकते हैं कुछ कहीं भी प्रदर्शन के भार को अवरुद्ध कर रहा है, किसी भी विचार पर यह क्या हो सकता है?

यहाँ JSFiddle https://jsfiddle.net/mtq5khz0/

<?php if ($categories) { ?> 
    <div id="cssmenu"> 
    <ul> 
     <?php foreach ($categories as $category) { ?> 
     <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> 
      <?php for ($i = 0; $i < count($category['children']);) { ?> 
      <ul> 
      <?php $j = $i + ceil(count($category['children'])/$category['column']); ?> 
      <?php for (; $i < $j; $i++) { ?> 
      <?php if (isset($category['children'][$i])) { ?> 
      <li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li> 
      <?php } ?> 
      <?php } ?> 
      </ul> 
      <?php } ?> 
     <?php } ?> 
     </li> 
    </ul> 
    </div> 
    <?php } ?> 

OpenCart के लिए पूरे हैडर कोड में सभी प्रासंगिक कोड है - संपादित कोड https://jsfiddle.net/v5vmLbjj/

OpenCart डिफ़ॉल्ट स्थापना https://jsfiddle.net/tneqy2qt/

(श्रेणी लटकती मेनू कोड के लिए पूरे हैडर कोड , कोड ब्लॉक के पाद लेख के करीब)

और एच eQuery JQuery मेनू कोड है जो PHP https://jsfiddle.net/ezhnnbsg/

+2

PHP के साथ jsfiddle पोस्ट क्यों करें? क्या आपको लगता है कि यह चमत्कारी रूप से वैध एचटीएमएल में बदल जाएगा? – madalinivascu

+1

साइट उपश्रेणियों को सही तरीके से प्रदर्शित करने के लिए देखती है, आप subcategory – madalinivascu

+2

@ merch89 के पृष्ठ में उपश्रेणी के बच्चों को देख सकते हैं, क्या आप 'print_r ($ श्रेणियां) 'या' var_dump ($ श्रेणियां)' के आउटपुट को अपडेट और शामिल कर सकते हैं। ? मुझे लगता है कि इसमें सभी उपश्रेणियां बार-बार हैं और आपको प्रत्येक श्रेणी वस्तु के लिए एक रिकर्सिव श्रेणी * पैरेंट> बच्चों * की आवश्यकता है। –

उत्तर

0

अगर मैं तुम्हें सही ढंग से समझ, उस से मेरे लिए बाहर खड़े चीजों में से एक जोड़े हैं अपना कोड देख रहे हैं।

सबसे पहले, आप केवल $categories और प्रत्येक $category['children'] के माध्यम से लूपिंग कर रहे हैं। 'दूसरे स्तर' बच्चों को पाने के लिए, आपको एक और लूप करना होगा। उदाहरण के लिए:

if(!empty($category['children'][$i]['children'])) { 
    echo '<ul>'; 
    foreach($category['children'][$i]['children'] as $children2) { 
     echo '<li/>'; 
    } 
    echo '</ul>'; 
} 

दूसरे अंक मैं देख रहा हूँ अपने बेला सीएसएस के साथ है।

#cssmenu ul ul li a { font-size: 12px; font-weight: 400; z-index: 9999; width: 250px; padding: 11px 15px; text-decoration: none; color: #000; border-bottom: 1px solid rgba(150, 150, 150, .15); background: #ddd; webkit-font-size: 11.5px; }

और

#cssmenu .submenu-button { position: absolute; z-index: 99; top: 0; right: 0; display: block; width: 46px; height: 32px; cursor: pointer; border-left: 1px solid rgba(120, 120, 120, .2); }

#cssmenu .submenu-button वर्ग कि लटकती से चलाता है तो यह ऊपर #cssmenu ul ul li a

तो परिवर्तन z- इंडेक्स की जरूरत है:

आप इस राशि यह इस पर:

#cssmenu ul ul li a { font-size: 12px; font-weight: 400; z-index: 98; width: 250px; padding: 11px 15px; text-decoration: none; color: #000; border-bottom: 1px solid rgba(150, 150, 150, .15); background: #ddd; webkit-font-size: 11.5px; }

सूचना z-index: 98; बजाय z-index: 9999;?

उम्मीद है कि आपकी समस्या को हल करने में मदद करता है।

+0

हाय, मैं इस PHP को https://jsfiddle.net/mtq5khz0 में कैसे शामिल कर सकता हूं इस पर कोई मदद? – me9867

+0

आप jsfiddle में php नहीं चला सकते हैं। – CUGreen

+0

@ merch89, मेरे पास एक अद्यतन पहेली है जो काम करता है। https://jsfiddle.net/mtq5khz0/4/ – CUGreen

3

के साथ काम करता है आपका आंतरिक लूप कोड काफी विषम लगता है। कोड के बाद, ऐसा लगता है कि यह काम करेगा, लेकिन यह संभव त्रुटि प्रवण है। इसलिए मैं यह थोड़ा दुबारा लिखा:

if ($categories) { 
    echo '<div id="cssmenu">'; 
    echo ' <ul>'; 
    foreach ($categories as $category) { 
     echo ' <li><a href="' . $category['href'] .'">' . $category['name'] . '</a>'; 

     if (count($category['children']) > 0) { 
      $columns = array_chunk($category['children'], ceil(count($category['children'])/$category['column'])); 
      foreach ($columns as $children) { 
       echo '  <ul>'; 
       foreach ($children as $child) { 
        echo '  <li><a href="' . $child['href'] . '">' . $child['name'] . '</a></li>'; 
       } 
       echo '  </ul>'; 
      } 
     } 
    } 
    echo ' </li>'; 
    echo ' </ul>'; 
    echo '</div>'; 
} 
+0

धन्यवाद रोनाल्ड, बस इसे एकीकृत करने में कुछ परेशानी है। मैं https://jsfiddle.net/nfr1dmho साथ की कोशिश की और इस त्रुटि https://doc-10-58-docs.googleusercontent.com/docs/securesc/3j8cv73604l8fr6lnv9jtes7d1iia283/1igdg0psbrb4frnr8d6o9mnnboj29h7c/1482480000000/06264479721830385231/06264479721830385231/0B3ArIuPt8mKRZjFHaG4xN1EtR1U?e मिलता है = – me9867

+2

@ merch89 देखें, आप jsfiddle में php नहीं चला सकते हैं। – CUGreen

0

आप एकल उद्धरण भीतर दोहरे उद्धरण चिह्नों का उपयोग कर प्रयास करें इस

<?php 
    if ($categories) { 
      echo "<div id='cssmenu'>"; 
      echo " <ul>"; 
        foreach ($categories as $category) { 
         echo " <li><a href='".$category['href']."'>".$category['name']."</a>"; 

           if (count($category['children']) > 0) { 
            $columns = array_chunk($category['children'], ceil(count($category['children'])/$category['column'])); 
            foreach ($columns as $children) { 
            echo '  <ul>'; 
             foreach ($children as $child) { 
              echo "  <li><a href='" . $child['href'] ."'>" . $child['name'] . "</a></li>"; 
             } 
            echo "  </ul>"; 
            } 
           } 
        } 
        echo " </li>"; 
      echo " </ul>"; 
     echo "</div>"; 
     } 
?> 
+0

क्षमा करें विजया, अभी भी कोई तीसरी स्तर की बिल्लियों के माध्यम से आ रहा है। Jquery कोड ऊपर है, उत्तर शायद वहां झूठ बोल सकता है (होम »श्रेणी» द्वितीय स्तर श्रेणी »तृतीय स्तर श्रेणी) – me9867

संबंधित मुद्दे