AlexMoiseyuk VIP
Total posts: 123
24 Сен 2014 17:56

создал дополнительный шаблон для фильтрации по полю DateTime, в котором попытался вписать всего лишь такой код:

<?php $date_val='2014-09-01'; ?>

<div class="row-fluid">
    <div class="span4">
    <?php echo JText::_('FIRST_WEEK'); ?><br />
        <label class="checkbox">
            <input type="checkbox" name="filters[k9cfc748b1838b10c08d1d20bcf8ee6c4][value][]" value="<?php echo htmlspecialchars($date_val);?>" >

            <?php echo JText::_('MONDAY');?>
        </label>
    </div>        
</div>

не сработало. в документации нашел:

But that is very exclusive. Only Geo and DateTime fields. For data time first set is a data from and second date to

но не нашел и к сожалению не смог разобраться как использовать.

в принципе подошла бы даже ссылка и она сработала, но она скидает другие примененные фильтры:

<a href= "index.php?option=com_cobalt&task=records.filter&filter_name[0]=filter_61&filter_val[0]=2014-09-01&section_id=1&cat_id=44" ><?php echo JText::_('MONDAY'); ?> </a>

вопрос: как сделать просто чекбокс или ссылку с конкретными значениями чтобы она работала как и другие фильтры (полей, типов и т.д.) - добавляла еще фильтр

P.S. обьясню смысл: полный календарь не подходит, нужен только чекбоксик с названием дня недели (ибо в разделе выводится всего несколько конкретных недель, остальные дни скрыты). так же конкретные даты скрыты для отображения- видно только дни

Последние изменения: 25 Сен 2014


Sergey
Total posts: 13,748
25 Сен 2014 03:36

Ну тут не все так просто. Вы создаете свой фильтр. А как поле поймет как преоброзовать данные фильтра что бы сделать запрос. В вашем случаее надо выбрать все записи по понедельникам например. Такого запроса в поле нет, его надо составить, но когда? Как понять что это такой запрос?

Ответ прост. В поле дата, фильтры работают с шаблонами фильтров. Тоесть в поле мы смотрим какой шаблон назначен, и исходя из этого формируем запрос. А условия на ваш шаблон нету. Надо его добовлять. Но оно перезапишится при следующем обновлении так как это чать кода в основном файле. Если что метод onFilterWhere.


AlexMoiseyuk VIP
Total posts: 123
25 Сен 2014 19:49

просмотрев метод, я пришел к выводу что есть возможность создать шаблон, для которого не обязательно будет добавлять код в основной файл и на базе single-date_picker.php создал single-day-checkbox.php

с таким содержанием

<?php defined('_JEXEC') or die();

$format_js = '%Y-%m-%d';
if ($this->params->get('params.time', 0))
    $format_js .= ' %H:%M';
$value = @$this->value;
?>
<script type="text/javascript">

    function val_change_1(d){
    d.value="2014-09-01";
    }
    function val_clean(d){
    d.value="";
    }

    function text_change_mo(d){
    d.value="<?php echo JText::_('MONDAY');?>";
    }
</script>

<?php if($value=='2014-09-01') {
    $day_text=JText::_('MONDAY');
}?>

<input type="text"  disabled="disabled" value="<?php echo $day_text;?>" id="day_text" > 
<input type="hidden" value="<?php echo $value;?>" id="filter_<?php echo $module.$this->id;?>" name="filters[<?php echo $this->key;?>]">        <a onclick="val_clean(document.getElementById('filter_<?php echo $module.$this->id;?>'));val_clean(document.getElementById('day_text'))">  <?php echo JText::_('CCLEAN');?> </a><br/>    

<div class="row-fluid" >
  <div class="span4">
    <?php echo JText::_('FIRST_WEEK'); ?><br />
    <a onclick="val_change_1(document.getElementById('filter_<?php echo $module.$this->id;?>'));text_change_mo(document.getElementById('day_text'))">  <?php echo JText::_('MONDAY');?> </a><br />
  </div>
</div>

может не достаточно оптимальное решение, но сработало

который раз вам благодарен за лучшую за весь мой опыт поддержку и несказанно-удивительный компонент Cobalt, который позволяет создавать просто великолепные сайты!)

Работает на Cobalt