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

dimix1978

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
В статистике команды есть пункт "Матчи без пропущенных командой мячей".
Задача добавить пункт "Матчи без забитых командой мячей".
Помогите разобраться с PHP.

Что уже сделано:

Для начала сделаем повтор имеющегося пункта статистики. Для этого файле components/com_joomleague/views/teamstats/tmpl/default_stats.php копируем код расположенный с  258 по 265 строку.
Код
<tr class="sectiontableentry1">
<td class="statlabel"><?php echo JText::_('COM_JOOMLEAGUE_TEAMSTATS_NO_GOALS_AGAINST'); ?></td>
<td class="statvalue"><?php echo $this->nogoals_against->totalzero; ?></td>
<?php if ( $this->config['home_away_stats'] ): ?>
<td class="statvalue"><?php echo empty($this->nogoals_against->homezero)? 0 : $this->nogoals_against->homezero; ?></td>
<td class="statvalue"><?php echo empty($this->nogoals_against->awayzero)? 0 : $this->nogoals_against->awayzero; ?></td>
<?php endif; ?>
</tr>
Меняем в коде "nogoals_against" на "nogoals_for". И вставляем правленный код ниже изначального.
Код
<tr class="sectiontableentry1">
<td class="statlabel"><?php echo JText::_('COM_JOOMLEAGUE_TEAMSTATS_NO_GOALS_FOR'); ?></td>
<td class="statvalue"><?php echo $this->nogoals_for->totalzero; ?></td>
<?php if ( $this->config['home_away_stats'] ): ?>
<td class="statvalue"><?php echo empty($this->nogoals_for->homezero)? 0 : $this->nogoals_for->homezero; ?></td>
<td class="statvalue"><?php echo empty($this->nogoals_for->awayzero)? 0 : $this->nogoals_for->awayzero; ?></td>
<?php endif; ?>
</tr>
Далее в файле /components/com_joomleague/views/teamstats/view.html.php копируем 46 строку
Код
$this->assignRef( 'nogoals_against', $model->getNoGoalsAgainst( ) );
и тоже производим замену "nogoals_against" на "nogoals_for"
Измененную строку вставляем ниже оригинала
Код
$this->assignRef( 'nogoals_for', $model->getNoGoalsFor( ) );
Затем такую же процедуру производим в файле components/com_joomleague/models/teamstats.php
рядом с кодом из строк с 234 по 257
 
Код
function getNoGoalsAgainst( )
    {
    if ( (!isset( $this->nogoals_against )) || is_null( $this->nogoals_against ) )
    {
    $query = ' SELECT '
       . ' COUNT( round_id ) AS totalzero, '
       . ' SUM( t1.id = '.$this->team->id.' AND team2_result=0 ) AS homezero, '
       . ' SUM( t2.id = '.$this->team->id.' AND team1_result=0 ) AS awayzero '
       . ' FROM #__joomleague_match as matches '
       . ' INNER JOIN #__joomleague_project_team pt1 ON pt1.id = matches.projectteam1_id '
       . ' INNER JOIN #__joomleague_team t1 ON t1.id = pt1.team_id '
       . ' INNER JOIN #__joomleague_project_team pt2 ON pt2.id = matches.projectteam2_id '
       . ' INNER JOIN #__joomleague_team t2 ON t2.id = pt2.team_id '
       . ' WHERE pt1.project_id = '.$this->projectid.' '
       . ' AND published=1 '
       . ' AND alt_decision=0 '
       . ' AND ((t1.id = '.$this->team->id.' AND team2_result=0 ) '
       . ' OR  (t2.id = '.$this->team->id.' AND team1_result=0 ))'
   . ' AND (matches.cancel IS NULL OR matches.cancel = 0)'
       ;
    $this->_db->setQuery($query);
    $this->nogoals_against = $this->_db->loadObject( );
    }
    return $this->nogoals_against;
    }

Вставляем правленный код:

Код
function getNoGoalsFor( )
    {
    if ( (!isset( $this->nogoals_for )) || is_null( $this->nogoals_for ) )
    {
    $query = ' SELECT '
       . ' COUNT( round_id ) AS totalzero, '
       . ' SUM( t1.id = '.$this->team->id.' AND team2_result=0 ) AS homezero, '
       . ' SUM( t2.id = '.$this->team->id.' AND team1_result=0 ) AS awayzero '
       . ' FROM #__joomleague_match as matches '
       . ' INNER JOIN #__joomleague_project_team pt1 ON pt1.id = matches.projectteam1_id '
       . ' INNER JOIN #__joomleague_team t1 ON t1.id = pt1.team_id '
       . ' INNER JOIN #__joomleague_project_team pt2 ON pt2.id = matches.projectteam2_id '
       . ' INNER JOIN #__joomleague_team t2 ON t2.id = pt2.team_id '
       . ' WHERE pt1.project_id = '.$this->projectid.' '
       . ' AND published=1 '
       . ' AND alt_decision=0 '
       . ' AND ((t1.id = '.$this->team->id.' AND team2_result=0 ) '
       . ' OR  (t2.id = '.$this->team->id.' AND team1_result=0 ))'
   . ' AND (matches.cancel IS NULL OR matches.cancel = 0)'
       ;
    $this->_db->setQuery($query);
    $this->nogoals_for = $this->_db->loadObject( );
    }
    return $this->nogoals_for;
    }

Таким образом, у нас дважды отобразилась статистика по матчам в которых команда не пропускала.

Теперь надо разобратся в последнем коде и заменить переменные. Для этого требуется помощь знающих людей.
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Дополняем статистику команды
« Ответ #1 : 07.01.2014, 19:20:25 »
Вот это - жесть. Человек может найти нужные ему функции незная PHP. В чём секрет?

По топику.
Меняем эти строки:
Код
. ' SUM( t1.id = '.$this->team->id.' AND team2_result=0 ) AS homezero, '
. ' SUM( t2.id = '.$this->team->id.' AND team1_result=0 ) AS awayzero '
Код
. ' AND ((t1.id = '.$this->team->id.' AND team2_result=0 ) '
. ' OR  (t2.id = '.$this->team->id.' AND team1_result=0 ))'

на эти:

Код
. ' SUM( t1.id = '.$this->team->id.' AND team1_result=0 ) AS homezero, '
. ' SUM( t2.id = '.$this->team->id.' AND team2_result=0 ) AS awayzero '
Код
. ' AND ((t1.id = '.$this->team->id.' AND team1_result=0 ) '
. ' OR  (t2.id = '.$this->team->id.' AND team2_result=0 ))'

UPDATE: Исправил ошибку в коде, указанную ниже
« Последнее редактирование: 08.01.2014, 01:44:16 от tranceRoller »
*

dimix1978

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Дополняем статистику команды
« Ответ #2 : 07.01.2014, 22:12:49 »
Ну вот сделали доброе дело)))). Очередной раз спасибо tranceRoller!
Я думаю иметь такой показатель в статистике вполне логично. Даже удивительно почему разработчики его упустили.

Единственное дополнение к изложенному tranceRoller. Вторая часть кода у Вас повторяет оригинал, но эта опечатка легко читается. Меняем team1 и team2 местами. Короче вставляем вот это -

Код
. ' AND ((t1.id = '.$this->team->id.' AND team1_result=0 ) '
. ' OR  (t2.id = '.$this->team->id.' AND team2_result=0 ))'

Ну и не забываем в языковой файл (language/ru-RU/ru-RU.com_joomleague.ini) добавить строчку :
COM_JOOMLEAGUE_TEAMSTATS_NO_GOALS_FOR="Матчи без забитых мячей".

PS: О секрете. Интуиция и усердие иногда могут заменить знания))). Хотя хочется конечно и поучить PHP.
« Последнее редактирование: 07.01.2014, 22:21:12 от dimix1978 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

joomleague 2.92 - описание команды

Автор pro1024

Ответов: 1
Просмотров: 2092
Последний ответ 19.08.2015, 07:36:20
от dimix1978
Добавление команды в календарь

Автор born

Ответов: 3
Просмотров: 1933
Последний ответ 27.05.2015, 15:01:08
от Геныч
Увеличение даты всех матчей на один день в календаре игр команды

Автор uf1976

Ответов: 15
Просмотров: 3146
Последний ответ 29.04.2014, 17:50:12
от M0sk0W
Проблема с описанием команды в Roster

Автор dimix1978

Ответов: 3
Просмотров: 1328
Последний ответ 05.12.2013, 21:54:10
от Геныч
Редактирование результатов в Списке Матчей Команды

Автор Outstanding

Ответов: 2
Просмотров: 1276
Последний ответ 10.07.2013, 16:52:03
от Outstanding