Новости Joomla

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

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Всем привет.
Как видно многим, компонент JoomLeague разрабатывался и "затачивался" для командных видов спорта (футбол, хоккей и пр.). Однако индивидуальные виды (бокс, атлетика, бильярд и пр.) очевидно также заслуживают внимания.
К сожалению, официальный ответ разработчиков компонента ничем не порадовал и работа над "Individual events mode" вестись скорее всего, увы, не будет.
Именно этот факт (а скорее даже тон администрации официального сайта ) и подтолкнул меня к постепенной модификации компонента для индивидуальных видов спорта.

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

Дано: Joomla! 1.0.15 Lavra Edition 2008 + JoomLeague v.0.9.3 + JL_0.93_russian. Компонент модифицируется для работы с сайтом близкой мне бильярдной тематики (снукерной) для моего коллеги Lama.
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Итак, финт первый и его тема "Автоматическое создание одноименной команды при создании нового игрока".
Дело в том, что, в отличии от командных видов спорта, в индивидуальных - такие понятия в компоненте JL как "команда" и "игрок" должны быть  "приклеены" друг к другу. Ранее было необходимо вручную заполнять обе соответствующие формы. Ниже я покажу способ, как объединить формы регистрации нового игрока и команды в одну.

Важное замечание: настоятельно рекомендую делать бэкапы файлов перед их модификацией, а также все эксперименты проводить на "голом" компоненте и локальной копии сайта.

1. Открываем файл administrator\components\com_joomleague\admin.joomleague.php
Ищем строки:
break;
      case 
'new':
      case 
'edit':
        
$row = new Player$database );
        
$row->load$cid[0] );

и между "кейсами" пишем следующее
[spoiler title=Посмотреть код]
brake
;
case 
'new':
	
$row = new Player$database );
	
$row_team = new JL_Team$database );//
	
$row_team->load$cid[0] ); //
        
if ($row->checked_out && $row->checked_out <> $my->id && $my->id != $project->joomleague_admin &&
         
$my->id != $project->joomleague_editor && $my->usertype != 'Administrator' && $my->usertype != 'Super Administrator') {
          
          
mosRedirectJL_ADMIN_COMPONENT_LINK'This Item has been checked out');
        }
        
        if (
$cid[0]) {
          
$row->checkout$my->id );
        }
	
	

        
$selectedvalue=$row->nation;
        
$countrycode=explode("_"_JL_LOCALE);
	
	

        
$countries[] = mosHTML::makeOption'0'_JL_ADMIN_SELECT_NATIONALITY );
        
$database->setQuery"SELECT countries_id, countries_name, countries_localname, countries_iso_code_2, countries_iso_code_3 
FROM #__joomleague_countries ORDER BY published DESC, countries_name, countries_iso_code_3"
);
        
$results $database->loadObjectList();
        foreach (
$results AS $result) {
        
	
$namevalue=$result->countries_name;
        
	
if (isset(
$country[$result->countries_iso_code_3])) $namevalue=$country[$result->countries_iso_code_3];
        
	
if (
strtoupper($result->countries_iso_code_2)==strtoupper($countrycode[0])) {
        
	
	
if (
is_null($row->nation)||$row->nation==0$selectedvalue=$result->countries_id;
        
	
	
$namevalue=$result->countries_localname;
        
	
}
        
	
$value=$result->countries_iso_code_3." ($namevalue)";
        
	
$countries[] = mosHTML::makeOption$result->countries_id"$value);
	
	
	
	
}
       
$clist mosHTML::selectList$countries'nation''class="inputbox" size="1"','value''text'$selectedvalue );
	
   
	
   
	
   
$clubs[] = mosHTML::makeOption'0'_JL_ADMIN_SELECT_CLUB ); // club selector
	
   
$database->setQuery"SELECT id AS value, name AS text FROM #__joomleague_clubs ORDER BY name"); //
       
$clubs array_merge$clubs$database->loadObjectList() ); //
	
   
$clist_teams mosHTML::selectList$clubs'club_id''class="inputbox" size="1"','value''text'$row_team->club_id ); //

        
$positions[] = mosHTML::makeOption'0'_JL_ADMIN_SELECT_POSITION );

	
	
$database->setQuery"SELECT id AS value, name AS text FROM #__joomleague_positions order by ordering");
	
	
$positions array_merge$positions$database->loadObjectList() );
	
	
$positionlist mosHTML::selectList$positions'default_position_id''class="inputbox" size="1"','value''text'$row->default_position_id );
        if (
is_null($row->nation)||$row->nation==0$clist.=_JL_ADMIN_SELECT_COUNTRY_HINT;
        
        
$users[] = mosHTML::makeOption'0'_JL_ADMIN_SELECT_USER );
        
$database->setQuery"SELECT id AS value, name AS text 
                                FROM #__users " 
);
        
$users array_merge$users$database->loadObjectList() );

        
$user_list mosHTML::selectList$users'jl_user_id''class="inputbox" size="1"','value''text'$row->jl_user_id );
	
	


        unset( 
$users );
        
        
$view JL_ADMIN_TEMPLATE_PATH.'/edit_form_playerz.tpl.php'// my custom template
        
require JL_ADMIN_TEMPLATE_PATH.'/view.tpl.php';   
	
  break;
	
  
	
  
      case 
'edit':
        
$row = new Player$database );
        
$row->load$cid[0] ); //... 
[/spoiler]
Таким образом мы разделяем задачи "new" и "edit", чтобы впоследствии можно было править отдельно и игрока и его команду.
Опускаемся ниже и ищем строки

      
case 'save':
      case 
'apply':
	
	
$row = new Player$database );
	
	
$row->save($_POST"");
	
      if (
$task == 'apply'mosRedirectJL_ADMIN_COMPONENT_LINK."&act=$act&task=edit&cid[0]=$row->id);
        else 
mosRedirectJL_ADMIN_COMPONENT_LINK."&act=$act");
      break;

и меняем их на
[spoiler title=Посмотреть код]case 'save':
      case 
'apply':
	
	
$row = new Player$database );
	
	
$row->save($_POST"");
	
	
$row_team = new JL_Team$database );// insert team
	
	
$row_team->save($_POST"");
	
      if (
$task == 'apply'mosRedirectJL_ADMIN_COMPONENT_LINK."&act=$act&task=edit&cid[0]=$row->id);
        else 
mosRedirectJL_ADMIN_COMPONENT_LINK."&act=$act");
      break;
[/spoiler]
Теперь при нажатии на "Сохранить" данные формы будут вставлены в соответствующие поля таблиц jos_joomleague_players и jos_joomleague_teams.

2. Шаблон edit_form_playerz.tpl.php с общей формой, подключаемый выше, имеет следующий вид:
[spoiler title=Посмотреть код шаблона]
Код
<?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); ?>

<html>
<head>

<script language="javascript" type="text/javascript">

   function submitbutton(pressbutton) {
      var form = document.adminForm;
      if (pressbutton == 'cancel') {
        submitform( pressbutton );
            return;
      }

      // do field validation

     if (form.lastname.value == ""){
        alert( "<?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_JS_CHECK2;?>" );
     }
else if (form.name.value == ""){
                alert( "<?php echo _JL_ADMIN_EDIT_FORM_TEAMS_JS_CHECK1;?>" ); //
              }//
     else if (form.short_name.value == ""){//
                alert( "<?php echo _JL_ADMIN_EDIT_FORM_TEAMS_JS_CHECK2;?>" );//
            }//

      else {
          submitform( pressbutton );
      }
   }

function completer() {
var tmp = document.getElementById('name').value;
if (tmp == "") {
var text1 = document.getElementById('firstname');
var text2 = document.getElementById('lastname');
var text3 = text2.value + " " +text1.value;
document.getElementById('name').value = text3;
}
else {
document.getElementById('name').value = tmp;
}
}
function recompleter() {
var text1 = document.getElementById('firstname');
var text2 = document.getElementById('lastname');
var text3 = text2.value + " " +text1.value;
document.getElementById('name').value = text3;
}
</script>

<title></title>
<style>
.bl {
color: #006699;
}
</style>
</head>

<body>
 
  <form action="index2.php" method="post" name="adminForm" id="adminForm">
    <div id="right">
      <div id="rightpad">
        <!-- Header START -->

        <div id="step">
          <div class="t">
            <div class="t">
              <div class="t"></div>
            </div>
          </div>

          <div class="m" align="left">
            <div class="far-right">
              <div class="button1-left">
                <div class="help">
                  <a href="http://www.joomleague.de" alt="<?php echo _JL_ADMIN_MANUAL;?>" title="<?php echo _JL_ADMIN_MANUAL;?>" target="blank"><?php echo _JL_ADMIN_MANUAL;?></a>
                </div>
              </div>

              <div class="button1-left">
                <div class="forum">
                  <a href="http://www.joomleague.de/forum/" alt="<?php echo _JL_ADMIN_FORUM;?>" title="<?php echo _JL_ADMIN_FORUM;?>" target="blank"><?php echo _JL_ADMIN_FORUM;?></a>
                </div>
              </div>

              <div class="button1-left">
                <div class="about">
                  <a href="http://www.joomleague.de" alt="<?php echo _JL_ADMIN_INFO;?>" title="<?php echo _JL_ADMIN_INFO;?>" target="blank"><?php echo _JL_ADMIN_INFO;?></a>
                </div>
              </div>
            </div>

            <div class="button1-left">
              <div class="blank">
                <a href="index2.php?option=com_joomleague"></a>
              </div>
            </div><span class="step"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_PLAYERS;?></span>
          </div>

          <div class="b">
            <div class="b">
              <div class="b"></div>
            </div>
          </div>
        </div><!-- Header END -->

        <div id="installer">
          <!-- Title 1 START -->

          <div class="t">
            <div class="t">
              <div class="t"></div>
            </div>
          </div>

          <div class="m" align="left">
            <h2><?php echo $row->id ? _JL_ADMIN_EDIT_FORM_PLAYERS_TITLE_EDIT : _JL_ADMIN_EDIT_FORM_PLAYERS_TITLE_NEW;?></h2><!-- Titel 1 END -->
           

<div align="center"><strong>! - обязательные для заполнения поля</strong><br />
<hr width="50%" noshade="noshade" style="height:1px;"><br /></div>

<!-- Content 1 START -->

            <div class="install-text">
              <table cellpadding="4" cellspacing="1" border="0" width="100%" class="adminform">
                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_FIRSTNAME;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="firstname" id="firstname" size="20" maxlength="64" value="<?php echo $row->firstname;?>"></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_LASTNAME;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="lastname" id="lastname" size="20" maxlength="64" value="<?php echo $row->lastname;?>" onBlur="completer();">
<strong>!</strong>&nbsp;<img src="/administrator/components/com_joomleague/images/projects.png" border="0" align="absmiddle" style="cursor:pointer;" onClick="recompleter();">
</td>
                </tr>

                <tr>
                  <td width="20%" align="right" class="bl"><?php echo _JL_ADMIN_EDIT_FORM_TEAMS_NAME;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="name" id="name" size="50" maxlength="250" readonly="" value="<?php echo $row_team->name;?>" /></td>
                </tr>

                <tr>
                  <td width="20%" align="right" class="bl"><?php echo _JL_TEAMS_MIDDLENAME;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="middle_name" size="15" maxlength="15" value="<?php echo $row_team->middle_name;?>" /></td>
                </tr>

                <tr>
                  <td width="20%" align="right" class="bl"><?php echo _JL_ADMIN_EDIT_FORM_TEAMS_SHORTNAME;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="short_name" size="5" maxlength="3" value="<?php echo $row_team->short_name;?>" /> <strong>!</strong></td>
                </tr>

                  <td width="20%" align="right" class="bl"><?php echo _JL_ADMIN_EDIT_FORM_TEAMS_CLUB;?></td>

                  <td width="80%"><?php echo $clist_teams;?></td>
                </tr>

                  <td width="20%" align="right" class="bl"><?php echo _JL_ADMIN_EDIT_FORM_TEAMS_DESCRIPTION;?> (команды)</td>

                  <td width="80%"><input class="inputbox" type="text" name="description" size="50" maxlength="250" value="<?php echo $row_team->description;?>" /></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_BIRTHDAY;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="birthday" size="20" maxlength="64" value="<?php echo $row->birthday;?>"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_DATE_FORMAT;?></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_COUNTRY;?></td>

                  <td width="80%"><?php echo $clist;?></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERTOOL_POSITION;?></td>

                  <td width="80%"><?php echo $positionlist;?></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERTOOL_PHOTO;?></td>
<?php
                $picture = '';
                if ($row->default_picture != '') { $picture = $row->default_picture;}
                if($picture != ""){ ?>
                  <td width="80%" align="left"><img src="<?php echo sprintf("%s/%s",_JOOMLA_JL_LIVE_SITE, $row->default_picture);?>" border="0"></td>
                </tr><?php } ?>

                <tr>
                  <td width="20%" align="right"><?php echo _JOOMLA_JL_LIVE_SITE;?>/</td>

                  <td width="80%"><input class="inputbox" type="text" name="default_picture" size="50" maxlength="250" value="<?php echo sprintf("%s",$picture);?>" /td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERTOOL_HEIGHT;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="default_height" size="5" maxlength="3" value="<?php echo $row->default_height;?>"></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERTOOL_WEIGHT;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="default_weight" size="5" maxlength="3" value="<?php echo $row->default_weight;?>"></td>
                </tr>

                <tr>
                  <td align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_JLUSER;?></td>

                  <td><?php echo $user_list; ?></td>
                </tr>

                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_INFO;?></td>

                  <td width="80%"><input class="inputbox" type="text" name="info" size="50" maxlength="250" value="<?php echo $row->info;?>"></td>
                </tr>
             
                <tr>
                  <td width="20%" align="right"><?php echo _JL_ADMIN_EDIT_FORM_PLAYERS_DESCRIPTION;?> (игрока)</td>

                  <td width="80%">
                    <?php
                    // parameters : areaname, content, hidden field, width, height, rows, cols
                    editorArea( 'editor1',  $row->description , 'description', '600', '250', '50', '5' ) ;
                    ?>
                  </td>
                </tr>
              </table>
            </div>
            <div class="clr"></div>
          </div>

          <div class="b">
            <div class="b">
              <div class="b"></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="clr"></div>
    <input type="hidden" name="id" value="<?php echo $row->id; ?>">
    <input type="hidden" name="option" value="<?php echo JL_OPTION;?>">
    <input type="hidden" name="act" value="<?php echo JL_ACTION;?>">
    <input type="hidden" name="task" value="">
  </form>
</body>
</html>
[/spoiler]
Сохраните его в папке administrator\components\com_joomleague\templates\.
После проделанных выше манипуляций форма регистрации нового игрока имеет вид:

Для удобства я выделил названия полей, касающиеся команды, синим шрифтом. Поле "Название" заполняется автоматически с помощью JavaScript после заполнения полей Имя и Фамилия и редактированию не подлежит. Но если вы все-таки ошиблись, то исправьте Имя или Фамилию на правильную и нажмите на шестеренку справа от поля Фамилия.
3. После заполнения формы тискаем "Сохранить" и видим, что появился новый игрок и новая команда:





4. При редактировании данных команды или игрока выводятся старые формы.
P.S.: при удалении игрока придется пока что вручную удалять и его команду, но и этот момент я сделаю.
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Финт второй или "Автоматическое добавление игрока при добавлении его команды в проект".
По умолчанию в компоненте требуется после добавления команд вручную "заходить" в них и добавлять игроков. В нашем случае команде "Пупкин Вася" нужно добавить игрока Васю Пупкина и так по всем командам. При большом количестве участников соревнований эта процедура может подорвать здоровье. Поэтому Lama предложил идею добавлять игрока автоматически при добавлении его команды в проект.

Открываем файл administrator\components\com_joomleague\classes\joomleague.class.php и ищем строки
foreach($diff2 as $v){
	
$query .= sprintf("insert into #__joomleague_team_joomleague (project_id,team_id) values (%s,%s);\n",$this->id$v);
}

Перепишем их на свой манер:
[spoiler title=Посмотреть код]
foreach($diff2 as $v){
	
$query .= sprintf("insert into #__joomleague_team_joomleague (project_id,team_id) values (%s,%s);\n",$this->id$v);
	
	
$qry_name "SELECT name FROM #__joomleague_teams WHERE id=".$v;
	
	
$this->_db->setQuery($qry_name);
	
	
$team $this->_db->loadResult();
	

	
	
$tmp explode(" "$team);
	
	
$name $tmp[1];
	
	
$famil $tmp[0];
	
	

	
	
$this->_db->setQuery("SELECT id FROM #__joomleague_players WHERE firstname=\"$name\" AND lastname=\"$famil\"");
	
	
$pl_id $this->_db->loadResult();
	
	

	
	
$query_assign_pl sprintf("insert into #__joomleague_playertool (project_id,team_id,player_id) values (%s,%s,%s);\n",$this->id$v$pl_id);
	
	
$this->_db->setQuery($query_assign_pl);
	
	
$this->_db->query_batch(false);
	
}
[/spoiler]
Для добавления игрока в проект достаточно внести в таблицу jos_joomleague_playertool всего три значения: player_id, team_id и   project_id. Из них мы сейчас знаем два последних. Первое вычисляем просто:
1) по team_id из jos_joomleague_team_joomleague вычисляем name из jos_joomleague_teams
2) затем разбиваем name на Имя и Фамилию и ищем в таблице jos_joomleague_players id игрока с таким именем и фамилией
3) используем этот id для вставки в таблицу.

Всё. Теперь при добавлении команды в ней уже будет "сидеть" её единственный игрок. Удачи.
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Первый баг. :)
« Ответ #4 : 13.09.2008, 02:59:31 »
Lama, пока что первый и единственный бета-тестер моих модификаций, нашел первый баг: при создании нового "События" в "Подробностях матча" список игроков был пуст...
Как оказалось, для таблицы jos_joomleague_playertool недостаточно только трех значений. Нужно вносить также position_id (и ещё желательно weight и height каждого игрока). Этот самый position_id хранится в jos_joomleague_players как default_position_id. Там же можно найти default_height и default_weight.
Поэтому автодобавление игрока к команде нужно немного модифицировать (снова ковыряем файл \administrator\components\com_joomleague\classes\joomleague.class.php).

Код из предыдущего поста необходимо привести к такому виду:
[spoiler title=Посмотреть код]
foreach($diff2 as $v) {
	
$query .= sprintf("insert into #__joomleague_team_joomleague (project_id,team_id) values (%s,%s);\n",$this->id$v);
	
$qry_name "SELECT name FROM #__joomleague_teams WHERE id=".$v;
	
$this->_db->setQuery($qry_name);
	
$team $this->_db->loadResult();
	
	
	
	
	

	
	
$tmp explode(" "$team);
	
	
$name $tmp[1];
	
	
$famil $tmp[0];
	
	
	
	
	

	
$this->_db->setQuery("SELECT id, default_position_id, default_height, default_weight FROM #__joomleague_players WHERE firstname=\"$name\" AND lastname=\"$famil\"");
	

	
$result $this->_db->loadObjectList();
	

	
	
foreach (
$result as $res) {
	
	
	
$pl_id $res->id;
	
	
	
$pl_position $res->default_position_id;
	
	
	
$pl_height $res->default_height;
	
	
	
$pl_weight $res->default_weight;
	
	
}
	
$query_assign_pl sprintf("insert into #__joomleague_playertool (project_id, team_id, player_id, position_id, height, weight) values (%s,%s,%s,%s,%s,%s);\n",$this->id$v$pl_id$pl_position$pl_height$pl_weight);
	
$this->_db->setQuery($query_assign_pl);
	
$this->_db->query_batch(false);
}
[/spoiler]

Удачи.
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Запятые у судей
« Ответ #5 : 14.09.2008, 23:41:54 »
Зачем-то у судей между их фамилией и именем разработчики решили вставить запятую... Убрать её можно просто:
1) Открываем файл components\com_joomleague\joomleague.html.php, ищем в нем строчку

else echo $matchInfo->referee_lastname.", ".$matchInfo->referee_firstname;

ну и удаляем эту запятую совсем. Мелочь, а приятно.  *DRINK*
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Инфо игрока вместо команды
« Ответ #6 : 19.09.2008, 02:42:09 »
Трюк №4 и его тема: инфо игрока вместо команды.
При выводе таблицы с сегодняшними или будущими матчами и клике на ФИО участника снизу выскакивает подменю с некоторыми опциями и
первая из которых - посмотреть информацию об этой команде (вот такая иконка ""). Затем, пройдя по ссылке можно увидеть, что, конечно, в команде-то всего один игрок - этот же самый ФИО. Тут и было придумано "перекидывать" при клике на "Инфо команды" в "Инфо игрока" этого единственного.
Для этого откроем файл components/com_joomleague/joomleague.html.php и найдем в нем фрагмент:

if ($config['show_team_link']==1) {
	

	
$output .= '<a href="'.sefRelToAbs(JL_COMPONENT_LINK.'&amp;func=showPlayers&amp;p='.$projectId.'&amp;ttid='.$teamtoolid.JL_ITEMID_SUFFIX).'">
	
<img src="'
.JL_TEMPLATE_FOLDERS_URL.'/images/team_icon.png" border="0" alt="'._JL_PAGE_TITLE_PLAYERS.'&nbsp;'.$teamname.'" title="'._JL_PAGE_TITLE_PLAYERS.'&nbsp;" /></a>&nbsp;';
}


Перепишем его в таком виде:


if ($config['show_team_link']==1) {
	
$qry_name "SELECT name FROM #__joomleague_teams WHERE id=".$teamid;
	
$joomleague->_db->setQuery($qry_name);
	
$team $joomleague->_db->loadResult();
	

	
$tmp explode(" "$team);
	
$name $tmp[1];
	
$famil $tmp[0];
	
	

	
$joomleague->_db->setQuery("SELECT id FROM #__joomleague_players WHERE firstname=\"$name\" AND lastname=\"$famil\"");
	
$pl_id $joomleague->_db->loadResult();
	
	

	
$output .= '<a href="'.sefRelToAbs(JL_COMPONENT_LINK.'&amp;func=showPlayer&amp;p='.$projectId.'&amp;pid='.$pl_id.JL_ITEMID_SUFFIX).'"><img src="'.JL_TEMPLATE_FOLDERS_URL.'/images/team_icon.png" border="0" alt="'._JL_PAGE_TITLE_PLAYERS.'&nbsp;'.$teamname.'" title="'._JL_PAGE_TITLE_PLAYERS.'&nbsp;'.$teamname.'" /></a>&nbsp;';
}

Собственно и всё. Теперь ссылка на иконке "" будет вести сразу в расширенную информацию об этом игроке.  yes!
Удачи.
В комнате с белым потолком
*

icepancher

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
  • Не тисипи моё айпи...
Доброй ночи!

Очень заинтересовали ваши разработки, появится немножко времени, обезательно расберусь. У меня сайт боксерской тематики.

Мега спасибо, тож нужно для бильярдной тематики. 
*

Lama

  • Захожу иногда
  • 108
  • 2 / 0
Для бильярдной тематики это как раз по нашему замыслу  ;D
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
"Закрываем" проект
« Ответ #10 : 09.12.2008, 13:06:26 »
Делаем на перспективу - у проектов есть флаг "опубликован", но нету "текущий" или уже "прошел". То есть закрыть соревнования как бы нельзя. В разработке каких-нибудь "примочек" для JL такая опция, думаю, не помешает - знать прошли уже эти соревнования или ещё идут.
Итак, делаем бэкапы, берем отвертку и начинаем крутить:
1) Создаем поле `active` с таблице проектов:
Код
ALTER TABLE `jos_joomleague` ADD `active` TINYINT(1) NOT NULL DEFAULT '0' AFTER `published`

2) Открываем /administrator/components/com_joomleague/templates/edit_list_projects.tpl.php
ищем
Код
<th width="10%" align="center" nowrap="nowrap"><?php echo _JL_ADMIN_PUBLISHED;?></th>
под ней дописываем →
Код
<th width="10%" align="center" nowrap="nowrap">Active</th>

[spoiler title=ищем ниже]<?php

      $task = $row->published ? 'unpublish' : 'publish';
      $img = $row->published ? 'tick.png' : 'publish_x.png';
?>
      <td width="10%" align="center">
        <a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task;?>')">
          <img src="images/<?php echo $img;?>" width="12" height="12" border="0" alt="" />
        </a>
      </td>
<?php
          $k = 1 - $k; } ?>[/spoiler]
[spoiler title=перепишем этот кусок вот как:]<?php

      $task = $row->published ? 'unpublish' : 'publish';
      $img = $row->published ? 'tick.png' : 'publish_x.png';

      $task2 = $row->active ? 'unactive' : 'active';
      $img2 = $row->active ? 'tick.png' : 'publish_x.png';
?>
      <td width="10%" align="center">
        <a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task;?>')">
          <img src="images/<?php echo $img;?>" width="12" height="12" border="0" alt="" />
        </a>
      </td>
      <td width="10%" align="center">
        <a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task2;?>')">
          <img src="images/<?php echo $img2;?>" width="12" height="12" border="0" alt="" /></a>
      </td>
<?php
          $k = 1 - $k; } ?>[/spoiler]
Теперь в списке проектов появилась ещё одна колонка "Active":


2) Открываем файл /administrator/components/com_joomleague/classes/joomleague.class.php
Ищем вверху
Код
var $published;
дописываем под этим
Код
var $active;

Например НАД
Код
   // Pagenavigation
function pagenav($jl_func,$rlimit, $current='',$user='', $mode='') {
напишем такую функцию
[spoiler title=включатель/выключатель]  function active_array( $cid=null, $active=1, $myid=0 ) {
      
      if (!is_array( $cid ) || count( $cid ) < 1) {
         $this->_error = "No items selected.";
         return false;
      }
      $id = $cid[0];
      
      $this->_db->setQuery( "UPDATE $this->_tbl SET active='$active'"
      . "\nWHERE id = $id"
      );
       print $this->_db->getQuery();
      if (!$this->_db->query()) {
         $this->_error = $this->_db->getErrorMsg();
         return false;
      }
      
      if (count( $cid ) == 1) {
         $this->checkin( $cid[0] );
      }
      $this->_error = '';
   }
[/spoiler]
3) Напоследок открываем /administrator/components/com_joomleague/admin.joomleague.php
ищем
Код
    break;
 
  case 'projects':
   
    switch($task){
и ниже допишем
Код
		case 'active':
$row = new JoomLeague( $database );
$round = $row->active_array($cid, 1, $my->id);
mosRedirect(JL_ADMIN_COMPONENT_LINK."&act=$act");
break;

case 'unactive':
$row = new JoomLeague( $database );
$round = $row->active_array($cid, 0, $my->id);
mosRedirect(JL_ADMIN_COMPONENT_LINK."&act=$act");
break;

Всё. "Можете пользоваться" © Афоня.

Удачи в экспериментах, друзья!  *DRINK*
« Последнее редактирование: 05.01.2009, 16:19:28 от Yurets »
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Модуль "Ближайший турнир" для JL 0.9.3
« Ответ #11 : 16.12.2008, 15:20:54 »
А вот захотелось выводить на главную ближайший турнир... А ещё чтобы, если турнир проходит в данный момент, то указывать на это.

Вот и родился модульчик.



Из настроек в админке можно указать



Ограничение, мес. — если до ближайщих соревнований, например, ещё целых полгода и не хочется, чтобы модуль все эти полгода "висел" и надоедал, то можно указать за сколько месяцев до начала турнира его отображать (от "Без ограничений" до года).

Название турнира как ссылка — выводит название проекта как ссылку в квалификацию на этот турнир.
Внимание! Ссылку нужно будет переделывать для вашего конкретного случая, т.к. уверен, что разбивка соревнований на отдельные "Квалификацию → Основную сетку → Итоговую таблицу" пока что реализована у одного меня.

Показывать дату проведения — интуитивно понятно, что в случае "Да" будет показана дата начала соревнований.

CSS класс модуля — для красоты.

Для текущего (активного) турнира надпись "БЛИЖАЙШИЙ ТУРНИР" автоматически заменяется на "ТЕКУЩИЙ ТУРНИР". По желанию, можно добавить какую-нибудь зазывающую моргающую надпись или анимацию - подкрутите в коде модуля.

Внимание! Для модуля необходимо, чтобы у проектов имелся признак "Активный". Для того, чтобы бысто добавить эту опцию ко всем проектам, необходимо выполнить действия из предыдущего моего сообщения.

В шаблоне рекомендую выводить модуль так: <?php mosLoadModules 'jlnext', -1); ?>

[вложение удалено Администратором]
В комнате с белым потолком
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Адаптация joomleague 3 под мобильную версию

Автор DragonbyKuzya

Ответов: 0
Просмотров: 1820
Последний ответ 05.03.2019, 11:57:49
от DragonbyKuzya
JoomLeague Module Matches предупреждение JFolder::folder:

Автор vladimir86

Ответов: 2
Просмотров: 1955
Последний ответ 02.01.2019, 11:04:00
от vladimir86
Всего стало по два после обновления до joomleague 3.0.22

Автор eu4ria

Ответов: 2
Просмотров: 2177
Последний ответ 29.12.2018, 05:11:32
от vladimir86
Работает ли joomleague на Joomla 3x?

Автор AlucarD

Ответов: 9
Просмотров: 4942
Последний ответ 06.10.2018, 13:12:20
от DragonbyKuzya
Восстановление удаленного проекта в JoomLeague - v.0.93

Автор saviv

Ответов: 1
Просмотров: 1173
Последний ответ 28.05.2018, 20:52:28
от lexxbry