Форум русской поддержки Joomla!® CMS
05.12.2016, 00:25:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 446 раз)
0 Пользователей и 1 Гость смотрят эту тему.
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« : 28.07.2015, 03:48:01 »

Помогите пожалуйста, в компоненте 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
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #1 : 28.07.2015, 11:09:42 »

Не пользуюсь JEvents, но по аналогии попробуйте так
Код
$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, 11:18:11 от robert » Записан
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« Ответ #2 : 28.07.2015, 18: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, 18:24:59 от miscwrk » Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #3 : 28.07.2015, 18:28:11 »

Не знаю, почему исправленный вами код должен работать, потому что по сути он выглядит так
Код
$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'] ;
 
, то есть даты начала и конца одинаковые.
Записан
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« Ответ #4 : 28.07.2015, 18:30:03 »


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

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #5 : 28.07.2015, 18:36:11 »

Не понял, мой код выводит одинаковые даты?
Записан
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« Ответ #6 : 28.07.2015, 18: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
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #7 : 28.07.2015, 18:45:57 »

Не может быть. Уберите его и посмотрите, что выводится.
Записан
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« Ответ #8 : 28.07.2015, 18: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
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #9 : 28.07.2015, 19:11:56 »

Хм, mktime(), да? Понятно. Ладно, сделаем на коленках
Код
$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, 19:22:17 от robert » Записан
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« Ответ #10 : 28.07.2015, 19:18:42 »


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

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

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

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #11 : 28.07.2015, 19:23:12 »

Поправил код, и файл должен быть сохранен в кодировке "UTF8 без BOM".
Записан
miscwrk
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 82


« Ответ #12 : 28.07.2015, 19:26:37 »


Большое спасибо! Теперь все работает!
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet