2013-11-01 30 views
0

我被一個主題修改卡住了,我想要改變wordpress的平面類別輸出jquery.ui.autocomplete而不是父類別輸出。在wordpress中獲取父母名字 - 主題修改

因此我想定義新屬性category: {$cat->parent}並在渲染列表中調用它來代替item.label(請參閱.append("<a>" + item.category + "</a>"))。

如果這樣做,我可以給父類別不同於所有其他的樣式。但我無法設法輸出名稱而不是ID。

$cat->parent拋出一個對應於類別parent-cat的id列表(當沒有父類時給出)。我如何才能拋棄父母的名字呢?


另一種方式來實現我需要的是得到家長貓的IDS(如下面的例子中那樣),然後定義輸出格式,如:

  • 如果貓的父母貓= 0,則將此風格
  • 如果貓的父母貓=東西,否則,再申請另一種風格

任何人都可以點我在正確的方向?我不是一個好的程序員。我幾乎沒有前往正確的地方去編輯這個列表輸出。如果有人在這裏可以幫助我,那絕對會很棒。我會在主題論壇和這裏發佈修改教程(如果有人讚賞),我會盡可能地回饋社區。

jQuery(document).ready(function($) { 

       var categories = [ 
       {foreach $categories as $cat} 
        { category: {$cat->parent}, value: {$cat->term_id}, label: {$cat->name} }{if !($iterator->last)},{/if} 
       {/foreach} 
       ]; 
       var locations = [ 
       {foreach $locations as $loc} 
        { value: {$loc->term_id}, label: {$loc->name} }{if !($iterator->last)},{/if} 
       {/foreach} 
       ]; 
       var catInput = $("#dir-searchinput-category"), 
        catInputID = $("#dir-searchinput-category-id"), 
        locInput = $("#dir-searchinput-location"), 
        locInputID = $("#dir-searchinput-location-id"); 

       if(catInput.length > 0) { 
        catInput.autocomplete({ 
         minLength: 0, 
         source: categories, 
         focus: function(event, ui) { 
          catInput.val(ui.item.label.replace(/&amp;/g, "&")); 
          return false; 
         }, 
         select: function(event, ui) { 
          catInput.val(ui.item.label.replace(/&amp;/g, "&")); 
          catInputID.val(ui.item.value); 
          return false; 
         } 
        }).data("ui-autocomplete")._renderItem = function(ul, item) { 
         return $("<li>") 
          .data("item.autocomplete", item) 
          .append("<a>" + item.category + "</a>") 
          .appendTo(ul); 
        }; 
        var catList = catInput.autocomplete("widget"); 
        catList.niceScroll({ autohidemode: false }); 

        catInput.click(function(){ 
         catInput.val(''); 
         catInputID.val('0'); 
         catInput.autocomplete("search", ""); 
        }); 
       } 

回答

0

我已經設法將另一種樣式(內聯CSS僅用於測試目的!)添加到每個父類別項目。如果我現在可以通過父母 - >孩子的層次結構來訂購物品,那麼我就需要...

有人可以在這裏給我一個提示如何做到這一點?下面是當前的代碼:

jQuery的(文件)。就緒(函數($){

  var categories = [ 
      {foreach $categories as $cat} 
       { category: {$cat->parent}, value: {$cat->term_id}, label: {$cat->name} }{if !($iterator->last)},{/if} 
      {/foreach} 
      ]; 
      var locations = [ 
      {foreach $locations as $loc} 
       { value: {$loc->term_id}, label: {$loc->name} }{if !($iterator->last)},{/if} 
      {/foreach} 
      ]; 
      var catInput = $("#dir-searchinput-category"), 
       catInputID = $("#dir-searchinput-category-id"), 
       locInput = $("#dir-searchinput-location"), 
       locInputID = $("#dir-searchinput-location-id"); 

      if(catInput.length > 0) { 
       catInput.autocomplete({ 
        minLength: 0, 
        source: categories, 
        focus: function(event, ui) { 
         catInput.val(ui.item.label.replace(/&amp;/g, "&")); 
         return false; 
        }, 
        select: function(event, ui) { 
         catInput.val(ui.item.label.replace(/&amp;/g, "&")); 
         catInputID.val(ui.item.value); 
         return false; 
        } 
       }).data("ui-autocomplete")._renderItem = function(ul, item) { 
        if (item.category != 0) { 
          return $("<li>") 
          .data("item.autocomplete", item) 
          .append("<a>" + item.label + "</a>") 
          .appendTo(ul);  
          } 
        else { 
        return $("<li>") 
        .data("item.autocomplete", item) 
        .append("<a style='font-weight:bold;'>" + item.label + "</a>") 
        .appendTo(ul);  
        } 
       }; 
       var catList = catInput.autocomplete("widget"); 
       catList.niceScroll({ autohidemode: false }); 

       catInput.click(function(){ 
        catInput.val(''); 
        catInputID.val('0'); 
        catInput.autocomplete("search", ""); 
       }); 
      } 
+0

任何想法將是巨大的: - /? – Kai