JEvents, изменение формата даты

  • 12 Ответов
  • 654 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Помогите пожалуйста, в компоненте JEvents есть несколько режимов просмотра событий, на месяц, на неделю, на день.
При просмотре на неделю, дата заголовка выводится с помощью кода:
Цитировать
<?php echo  $data['startdate'] . ' - ' . $data['enddate'] ;?>

Дата получается вида "29 Июнь 2015 - 05 Июль 2015".
Это некрасиво, как вывести дату в формате "29/06/2015 - 05/07/2015"?

И если кто-то столкнулся с такой же проблемой, то вот решение для просмотра событий за день:

Код
Цитировать
<?php echo JEventsHTML::getDateFormat($this->year, $this->month, $this->day, 0); ?>
надо заменить на
Цитировать
<?php echo JEventsHTML::getDateFormat($this->year, $this->month, $this->day, 4); ?>

тогда дата вида "Понедельник 29 Июнь 2015" поменяется на "29/06/2015"

или на
Цитировать
<?php echo JEventsHTML::getDateFormat($this->year, $this->month, $this->day,"<span class='year'>%Y</span>-<span class='month'>%m</span>-<span class='day'>%d</span>"); ?>

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: JEvents, изменение формата даты
« Ответ #1 : 28.07.2015, 12:09:42 »
Не пользуюсь JEvents, но по аналогии попробуйте так
Код: php-brief
$data['startdate']=explode(' ',$data['startdate']);
$data['startdate']=JEventsHTML::getDateFormat($data['startdate'][2],$data['startdate'][1],$data['startdate'][0],4);
$data['enddate']=explode(' ',$data['enddate']);
$data['enddate']=JEventsHTML::getDateFormat($data['enddate'][2],$data['enddate'][1],$data['enddate'][0],4);

echo  $data['startdate'] . ' - ' . $data['enddate'] ;
P.S. И наверняка в админке должен быть пункт выбора формата даты.
« Последнее редактирование: 28.07.2015, 12:18:11 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Re: JEvents, изменение формата даты
« Ответ #2 : 28.07.2015, 19:17:56 »

Большое спасибо! Но это не помогло, при выводе появилась ошибка
Цитировать
Warning: mktime() expects parameter 4 to be long, string given in ...\www\components\com_jevents\libraries\jevdate.php on line 238

а дату выводит вот такую "28/07/2015 - 28/07/2015   " то есть на один день, хотя и в правильном формате )

вот весь код

Код
<?php 
defined('_JEXEC') or die('Restricted access');

$cfg = JEVConfig::getInstance();

$this->data = $data = $this->datamodel->getWeekData($this->year, $this->month, $this->day);

$option = JEV_COM_COMPONENT;
$Itemid = JEVHelper::getItemid();
$hasevents = false;



echo '<fieldset class="ev_fieldset_area"><legend class="ev_fieldset">' . JText::_('JEV_EVENTSFOR'). '&nbsp;' . JText::_('JEV_WEEK')
. ' : </legend>' . "\n";
echo '<table align="center" width="100%" cellspacing="0" cellpadding="0" class="ev_table">' . "\n";
?>
    <tr valign="top">
        <td colspan="2"  align="center" class="cal_td_daysnames week">
           <!-- <div class="cal_daysnames"> -->
<?php

$data['startdate']=explode(' ',$data['startdate']);
$data['startdate']=JEventsHTML::getDateFormat($data['startdate'][2],$data['startdate'][1],$data['startdate'][0],4);
$data['enddate']=explode(' ',$data['enddate']);
$data['enddate']=JEventsHTML::getDateFormat($data['enddate'][2],$data['enddate'][1],$data['enddate'][0],4);
 
echo  $data['startdate'] . ' - ' . $data['enddate'] ;

?>
<br><br>

<!--
<?php echo  $data['startdate'] . ' - ' . $data['enddate'] ;?>
-->
            <!-- </div> -->
        </td>
    </tr>
« Последнее редактирование: 28.07.2015, 19:24:59 от miscwrk »

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: JEvents, изменение формата даты
« Ответ #3 : 28.07.2015, 19:28:11 »
Не знаю, почему исправленный вами код должен работать, потому что по сути он выглядит так
Код: php-brief
$data['startdate']=JEventsHTML::getDateFormat($this->year, $this->month, $this->day, 4);
$data['enddate']=JEventsHTML::getDateFormat($this->year, $this->month, $this->day, 4);
 
echo  $data['startdate'] . ' - ' . $data['enddate'] ;
, то есть даты начала и конца одинаковые.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Re: JEvents, изменение формата даты
« Ответ #4 : 28.07.2015, 19:30:03 »

я уже исправил сообщение, просто увидел что ошибка не появляется и на радостях отписался ) а дата одинаковая )

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: JEvents, изменение формата даты
« Ответ #5 : 28.07.2015, 19:36:11 »
Не понял, мой код выводит одинаковые даты?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Re: JEvents, изменение формата даты
« Ответ #6 : 28.07.2015, 19:40:14 »
Не понял, мой код выводит одинаковые даты?

да, он выводит вот такое

Цитировать
Warning: mktime() expects parameter 4 to be long, string given in ...\www\components\com_jevents\libraries\jevdate.php on line 238

Warning: mktime() expects parameter 4 to be long, string given in ...\www\components\com_jevents\libraries\jevdate.php on line 238
28/07/2015 - 28/07/2015

дата не только одинаковая, но и сегодняшняя, хотя я выбираю неделю "конец июня - начало июля"

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: JEvents, изменение формата даты
« Ответ #7 : 28.07.2015, 19:45:57 »
Не может быть. Уберите его и посмотрите, что выводится.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Re: JEvents, изменение формата даты
« Ответ #8 : 28.07.2015, 19:53:34 »
Вот смотрите, вот такой код шаблона, привожу его полностью:
Код
<?php 
defined('_JEXEC') or die('Restricted access');

$cfg = JEVConfig::getInstance();

$this->data = $data = $this->datamodel->getWeekData($this->year, $this->month, $this->day);

$option = JEV_COM_COMPONENT;
$Itemid = JEVHelper::getItemid();
$hasevents = false;



echo '<fieldset class="ev_fieldset_area"><legend class="ev_fieldset">' . JText::_('JEV_EVENTSFOR'). '&nbsp;' . JText::_('JEV_WEEK')
. ' : </legend>' . "\n";
echo '<table align="center" width="100%" cellspacing="0" cellpadding="0" class="ev_table">' . "\n";
?>
    <tr valign="top">
        <td colspan="2"  align="center" class="cal_td_daysnames week">
           <!-- <div class="cal_daysnames"> -->

<?php echo  $data['startdate'] . ' - ' . $data['enddate'] ;?>

выводит дату вида "29 Июнь 2015 - 05 Июль 2015"

а вот такой код шаблона:

Код
<?php 
defined('_JEXEC') or die('Restricted access');

$cfg = JEVConfig::getInstance();

$this->data = $data = $this->datamodel->getWeekData($this->year, $this->month, $this->day);

$option = JEV_COM_COMPONENT;
$Itemid = JEVHelper::getItemid();
$hasevents = false;



echo '<fieldset class="ev_fieldset_area"><legend class="ev_fieldset">' . JText::_('JEV_EVENTSFOR'). '&nbsp;' . JText::_('JEV_WEEK')
. ' : </legend>' . "\n";
echo '<table align="center" width="100%" cellspacing="0" cellpadding="0" class="ev_table">' . "\n";
?>
    <tr valign="top">
        <td colspan="2"  align="center" class="cal_td_daysnames week">
           <!-- <div class="cal_daysnames"> -->
<?php

$data['startdate']=explode(' ',$data['startdate']);
$data['startdate']=JEventsHTML::getDateFormat($data['startdate'][2],$data['startdate'][1],$data['startdate'][0],4);
$data['enddate']=explode(' ',$data['enddate']);
$data['enddate']=JEventsHTML::getDateFormat($data['enddate'][2],$data['enddate'][1],$data['enddate'][0],4);
 
echo  $data['startdate'] . ' - ' . $data['enddate'] ;

?>
<br><br>

<!--
<?php echo  $data['startdate'] . ' - ' . $data['enddate'] ;?>
-->

Выводит вот такое сообщение и дату:

Цитировать
Warning: mktime() expects parameter 4 to be long, string given in \www\components\com_jevents\libraries\jevdate.php on line 238

Warning: mktime() expects parameter 4 to be long, string given in \www\components\com_jevents\libraries\jevdate.php on line 238
28/07/2015 - 28/07/2015

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: JEvents, изменение формата даты
« Ответ #9 : 28.07.2015, 20:11:56 »
Хм, mktime(), да? Понятно. Ладно, сделаем на коленках
Код: php-brief
$months=array('Январь'=>'01','Февраль'=>'02','Март'=>'03','Апрель'=>'04','Май'=>'05','Июнь'=>'06','Июль'=>'07','Август'=>'08','Сентябрь'=>'09','Октябрь'=>'10','Ноябрь'=>'11','Декабрь'=>'12');

$data['startdate']=explode(' ',$data['startdate']);
$data['startdate'][1]=$months[trim($data['startdate'][1])];
$data['startdate']=implode('/',$data['startdate']);

$data['enddate']=explode(' ',$data['enddate']);
$data['enddate'][1]=$months[trim($data['enddate'][1])];
$data['enddate']=implode('/',$data['enddate']);
 
echo  $data['startdate'] . ' - ' . $data['enddate'] ;
Это г-код, лучше поищите в админке, как менять формат даты.
« Последнее редактирование: 28.07.2015, 20:22:17 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Re: JEvents, изменение формата даты
« Ответ #10 : 28.07.2015, 20:18:42 »

Большое спасибо, что помогаете.
Теперь выводит вот так: "29//2015 - 05//2015"

То есть не выводит месяц.

В админке я обыскался, там есть только в одном месте что-то похожее и изменение никак не отражается на данном заголовке.

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: JEvents, изменение формата даты
« Ответ #11 : 28.07.2015, 20:23:12 »
Поправил код, и файл должен быть сохранен в кодировке "UTF8 без BOM".
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

miscwrk

  • Осваиваюсь на форуме
  • ***
  • 82
  • 0
Re: JEvents, изменение формата даты
« Ответ #12 : 28.07.2015, 20:26:37 »

Большое спасибо! Теперь все работает!