2016-05-20 3 views
2

私はウェブサイトベースのsjライブテンプレートadsmangerコンポーネントのために働いています。フィールドad_locationのフィルタリングのために、リストビューにフィルタを追加する必要があります。私はすべての場所のドロップダウンを作成するために、書き込みコードを持っており、各オプションの値は以下のフィールド上のJoomla AdsManagerフィルタリスト

<?php echo TRoute::_("index.php?option=com_adsmanager&view=list&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?> 

のようですが、私はオプションを選択すると、URLがこの

index.php/ads-manager/6-verktyg-foer-fordon?ad_location=58 

または

index.php/ads-manager/6-verktyg-foer-fordon?ad_location=paris 
ようになり

でも以前と同じ結果でページがリロードされます。 「このフィールドで広告を並べ替えることができますか?」を選択しました。場所フィールドyesのために。

私はどのように特定のカテゴリを場所のベースでフィルタリングできるようにするか教えてください。

ありがとうございます。

+0

のようになりますように見えます。 sefオプションを無効にしてチェックしてください。その場合は、adsmanagerコンポーネントのrouter.phpファイルを変更する必要があります。 –

+0

問題はSEF URLではありません。私はリストビューでドロップダウンしたかったのは、オーダーフィルターのように動作するはずです –

答えて

0

AdsManagerのリストビューには、日付以外のフィルタの順序はありません。したがって、結果ビューを使用する必要があり、したがって、オプションの値は、この

`<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>` 

とも私はオプション値がなければなりませんので、fieldvalueの代わりfieldvalueidあるべきフィールドIDの正しい値を使用することを見逃しているもののようでなければなりません場所フィールドのために、この

<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?> 

と完全なコードは、あなたのSEFのURLが有効になっているように、この問題が発生し、この

<select onchange="jumpmenu('parent',this)">   
     <option value="<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid); ?>">Please Select a Location</option> 
     <?php 
     $ad_location = JRequest::getVar('ad_location'); 
     $fieldmodel  = $this->getModel("field"); 
     $field_values = $fieldmodel->getFieldValues(); 
     foreach($field_values[17] as $fields){ //print_r($fields); ?> 
     <option value="<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid."&ad_location=".$fields->fieldvalue); ?>" <?php if ($fields->fieldvalue == $ad_location) echo 'selected="selected"'; ?> ><?php echo $fields->fieldtitle; ?></option> 
     <?php }?> 
     </select> 
0

解決策は厳密には一致しませんが、ロジックを使用することができます。 カスタム関数を作成することができ、名前

の元、あなたがIDを選択した関数名のクラス名を使用することができ、SQL

Class AdsLocation { 

     public static function ListLocations($selected = -1) { 
      $options[] = JHTML::_('select.option', '-1', JText::_('Filter Locations')); 
      $options[] = JHTML::_('select.option', 'USA', JText::_('USA')); 
      . 
      . 
      . 
      $uri = JFactory::getURI(); 
      $uri->delVar('limitstart'); 
      $uri->delVar('start'); 

      $attr = 'onchange="this.form.action=\''.$uri.'\';'; 
      $attr .= ' this.form.submit();"'; 
      $attr .= " class='select'"; 
      return JHTML::_('select.genericlist', $options, 'filter_location', $attr, 'value', 'text', $selected); 
    } 
} 

で結果、名前の値を取得するためのすべてのオプション選択した値を提出形成します: ページを読み込みます:echo AdsLocation :: ListLocations( 'USA');

値JRequest :: getVar( 'filter_location')を取得します。

+0

あなたの努力に感謝します。どこで使用するのですか? 例:ページを読み込みます:echo AdsLocation :: ListLocations( 'USA'); 値JRequest :: getVar( 'filter_location')を取得します。 それは大きな助けになるでしょう。 –

+0

このコードを表示(リスト/グリッド)するには、AdsLocation :: ListLocations( 'USA')をエコーし​​ます。モデルGetItems SQLクエリ - JRequest :: getVar( 'filter_location'); if(JRequest :: getVar( 'filter_location')> -1){} –

+0

これは、すでに追加したドロップダウン位置フィールドのみになります。私はリストビューの結果を変更するために位置フィルタを受け入れるようにリストコントローラを変更する必要があります。 –

関連する問題