Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • phpBB 3.0
  • Другие моды для phpBB3
  • Минимоды и хаки для phpBB3

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

8 сообщений
 • Страница 1 из 1
Просмотры: 4869 • 
Аватара пользователя
PPK
Администратор
Сообщения: 10514
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 22 июл 2013, 14:16
Мод позволяет произвольно создавать дополнительные поля которые будут отображаться при создании новой темы на форуме (либо при редактировании старой), мод имеет те-же самые возможности, что и BB3AddFields - мод шаблонов дополнительных полей для форума phpBB3 + все действия в нём можно совершать через адм. раздел (без определения полей через языковые файлы), добавлена опция для определения места доп. полей (до формы сообщения/вместе с формой сообщения), в первом случае, теперь при создании темы сначала отображаются доп. поля, после их заполнения появляется стандартная форма сообщения/заголовка темы/загрузки файлов, появляется возможность определять доп. поля как обязательные для заполнения, во втором случае возможности определять доп. поля как обязательные для заполнения нет, добавлено несколько новых возможностей (определять значение по умолчанию, функцию для проверки, указывать "псевдонимы" и т.д.).

1. В phpmyadmin выполнить (если префикс таблиц не phpbb_ - заменить на свой):

Код: Выделить всё

ALTER TABLE `phpbb_forums`
ADD  `forum_addfields` smallint(5) unsigned NOT NULL DEFAULT '0';

INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES
('ppkbb_addfields_pos', '0', 0),
('ppkbb_addfields_type', '0', 0);
если mysql версии 4.1.3 или выше

Код: Выделить всё

CREATE TABLE `phpbb_tracker_afftpl` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `addfields` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_hlp` mediumtext COLLATE utf8_bin NOT NULL,
  `addfields_br` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_br2` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_inall` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_ta` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_multi` tinyint(1) NOT NULL DEFAULT '0',
  `addfields_bbcode` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_bbcodes` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_descr` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_enable` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `addfields_def` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_checkas` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_title` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_alias` mediumtext COLLATE utf8_bin NOT NULL,
  `addfields_skip` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_exists` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `addfields` (`addfields`),
  KEY `addfields_enable` (`addfields_enable`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `phpbb_tracker_afsets` (
  `id` mediumint(8) NOT NULL AUTO_INCREMENT,
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `af_name` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '',
  `af_count` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_order` smallint(3) unsigned NOT NULL DEFAULT '0',
  `af_required` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `af_id` (`af_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `phpbb_tracker_aftpl` (
  `id` smallint(5) NOT NULL AUTO_INCREMENT,
  `af_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `af_descr` text COLLATE utf8_bin NOT NULL,
  `af_subject` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `af_data` text COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
иначе:

Код: Выделить всё

CREATE TABLE `phpbb_tracker_afftpl` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `addfields` varchar(64) binary NOT NULL DEFAULT '',
  `addfields_hlp` mediumtext NOT NULL,
  `addfields_br` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_br2` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_inall` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_ta` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_multi` tinyint(1) NOT NULL DEFAULT '0',
  `addfields_bbcode` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_bbcodes` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_descr` varchar(128) binary NOT NULL DEFAULT '',
  `addfields_enable` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `addfields_def` varchar(128) binary NOT NULL DEFAULT '',
  `addfields_checkas` varchar(64) binary NOT NULL DEFAULT '',
  `addfields_title` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_alias` mediumtext NOT NULL,
  `addfields_skip` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_exists` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `addfields` (`addfields`),
  KEY `addfields_enable` (`addfields_enable`)
) TYPE=MyISAM ;

CREATE TABLE `phpbb_tracker_afsets` (
  `id` mediumint(8) NOT NULL AUTO_INCREMENT,
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `af_name` varchar(32) binary NOT NULL DEFAULT '',
  `af_count` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_order` smallint(3) unsigned NOT NULL DEFAULT '0',
  `af_required` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `af_id` (`af_id`)
) TYPE=MyISAM ;

CREATE TABLE `phpbb_tracker_aftpl` (
  `id` smallint(5) NOT NULL AUTO_INCREMENT,
  `af_name` varchar(64) binary NOT NULL,
  `af_descr` text NOT NULL,
  `af_subject` varchar(255) binary NOT NULL DEFAULT '',
  `af_data` text NOT NULL,
  PRIMARY KEY (`id`)
) TYPE=MyISAM ;
2. Скачать архив, распаковать, заменить файлы форума файлами из директории /root/.
phpbb3_minimods_bb3addfields2.zip
3. Переделать файлы:

adm/style/acp_board.html перед

Код: Выделить всё

<!-- IF S_AUTH -->
	<!-- BEGIN auth_tpl -->
добавить

Код: Выделить всё

<!-- IF S_ADDFIELDS_INC --><!-- INCLUDE acp_tracker_addfields.html --><!-- ENDIF -->
<!-- IF S_ADDFIELD_INC --><!-- INCLUDE acp_tracker_addfield.html --><!-- ENDIF -->
adm/style/acp_forums.html перед

Код: Выделить всё

	<!-- IF S_CAN_COPY_PERMISSIONS -->
		<dl>
добавить

Код: Выделить всё

	<dl>
		<dt><label for="forum_addfields">{L_FORUM_ADDFIELDS}:</label><br /><span>{L_FORUM_ADDFIELDS_EXPLAIN}</span></dt>
		<dd><select id="forum_addfields" name="forum_addfields"><option value="0">{L_NO_ADDFIELDS}</option>{S_ADDFIELDS_OPTIONS}</select></dd>
	</dl>
includes/acp/acp_board.php перед

Код: Выделить всё

			case 'message':
				$display_vars = array(
добавить

Код: Выделить всё

			case 'addfields':
				include_once("$phpbb_root_path/tracker/include/includes/acp/acp_board_add1_addfields.{$phpEx}");
			break;

			case 'addfield':
				include_once("$phpbb_root_path/tracker/include/includes/acp/acp_board_add1_addfield.{$phpEx}");
			break;
перед

Код: Выделить всё

						'legend2'				=> 'POSTING',
						'bump_type'				=> false,
добавить

Код: Выделить всё

						'ppkbb_addfields_type'		=> array('lang' => 'TRACKER_ADDFIELDS_TYPE', 'validate' => 'string', 'type' => 'text:1:1', 'method' => false, 'explain' => true,),
						'ppkbb_addfields_pos'		=> array('lang' => 'TRACKER_ADDFIELDS_POS', 'validate' => 'int:0', 'type' => 'text:1:1', 'method' => false, 'explain' => true,),
includes/acp/acp_forums.php после

Код: Выделить всё

						'forum_password_confirm'=> request_var('forum_password_confirm', '', true),
						'forum_password_unset'	=> request_var('forum_password_unset', false),
добавить

Код: Выделить всё

						'forum_addfields'	=> request_var('forum_addfields', 0),
после

Код: Выделить всё

							'forum_password'		=> '',
							'forum_password_confirm'=> '',
добавить

Код: Выделить всё

							'forum_addfields' => 0,
перед

Код: Выделить всё

				$template->assign_vars(array(
					'S_EDIT_FORUM'		=> true,
добавить

Код: Выделить всё

				$af_selects='';

				$sql="SELECT * FROM ".TRACKER_ADDFIELDS_TPL."";
				$result=$db->sql_query($sql);
				while($row=$db->sql_fetchrow($result))
				{
					$af_select=@$forum_data['forum_addfields']==$row['id'] ? ' selected="selected"' : '';
					$af_selects.='<option value="'.$row['id'].'"'.$af_select.'>'.$row['af_name'].'</option>';
				}
				$db->sql_freeresult($result);
после

Код: Выделить всё

					'S_CAN_COPY_PERMISSIONS'	=> ($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))) ? true : false,
добавить

Код: Выделить всё

					'S_ADDFIELDS_OPTIONS' => $af_selects,
includes/acp/info/acp_board.php после

Код: Выделить всё

				'load'		=> array('title' => 'ACP_LOAD_SETTINGS', 'auth' => 'acl_a_server', 'cat' => array('ACP_SERVER_CONFIGURATION')),
добавить

Код: Выделить всё

				'addfields'		=> array('title' => 'ACP_ADDFIELDS_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_TRACKER')),
				'addfield'		=> array('title' => 'ACP_ADDFIELD_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_TRACKER')),
includes/constants.php после

Код: Выделить всё

// Additional tables
добавить

Код: Выделить всё

define('TRACKER_ADDFIELDS_TPL',			$table_prefix . 'tracker_aftpl');
define('TRACKER_ADDFIELD_TPL',			$table_prefix . 'tracker_afftpl');
define('TRACKER_ADDFIELDS_SETS',			$table_prefix . 'tracker_afsets');
includes/functions.php перед

Код: Выделить всё

/**
* Determine whether we are approaching the maximum execution time. Should be called once
добавить

Код: Выделить всё

function get_forum_addfields($id, $forum_astracker=0)
{
	global $db, $user, $torrent_addfield;

	$lines=array();
	$id=intval($id);
	if($id)
	{
		$sql="SELECT afs.af_name, afs.af_required, afs.af_count, aft.af_descr, aft.af_subject FROM ".TRACKER_ADDFIELDS_SETS." afs, ".TRACKER_ADDFIELDS_TPL." aft WHERE afs.af_id='{$id}' AND afs.af_id=aft.id ORDER BY af_order";
		$result=$db->sql_query($sql);
		while($row=$db->sql_fetchrow($result))
		{
			$lines[]=$row['af_name'];
			if($row['af_required'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_REQ'][$row['af_name']]=$row['af_required'];
			}
			if($row['af_count'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_COUNT'][$row['af_name']]=$row['af_count'];
			}
			if(!isset($torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']) && $row['af_descr']/* && $forum_astracker*/)
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']=$row['af_descr'];
			}
			if(!isset($torrent_addfield['TRACKER_FORUM_ADDFIELDS_SUBJSTRING']) && $row['af_subject']/* && $forum_astracker*/)
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_SUBJSTRING']=$row['af_subject'];
			}
		}
		$db->sql_freeresult($result);
	}
	if(/*$forum_astracker && */@$torrent_addfield['TRACKER_FORUM_ADDFIELDS_INALL'])
	{
		foreach($torrent_addfield['TRACKER_FORUM_ADDFIELDS_INALL'] as $k=>$v)
		{
			if($v && !in_array($k, $lines) && @$torrent_addfield['TRACKER_FORUM_ADDFIELDS'][$k])
			{
				$lines[]=$k;
			}
		}
	}

	isset($torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']) ? '' : $torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']='';

	return $lines;
}

function get_torrent_addfield()
{
	global $db, $user, $cache;

	$torrent_addfield=array();

	//$user->add_lang('mods/ppkbb3cker_addfields');

	$torrent_addfield=$cache->get('_ppkbb3cker_addfield_cache');

	if(!$torrent_addfield)
	{
		$sql='SELECT * FROM ' . TRACKER_ADDFIELD_TPL . " WHERE addfields_enable='1'";
		$result=$db->sql_query($sql/*, 86400*/);
		while($row=$db->sql_fetchrow($result))
		{
			$torrent_addfield['TRACKER_FORUM_ADDFIELDS'][$row['addfields']]=$row['addfields_descr'];
			if($row['addfields_hlp']!='')
			{
				$addfields_hlp=array_map('trim', explode("\n", $row['addfields_hlp']));
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_HLP'][$row['addfields']]=sizeof($addfields_hlp) > 1  ? $addfields_hlp : trim($row['addfields_hlp']);
			}
			if($row['addfields_def']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_DEF'][$row['addfields']]=$row['addfields_def'];
			}
			if($row['addfields_br']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BR'][$row['addfields']]=$row['addfields_br'];
			}
			if($row['addfields_br2']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BR2'][$row['addfields']]=$row['addfields_br2'];
			}
			if($row['addfields_checkas']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_CHECKAS'][$row['addfields']]=$row['addfields_checkas'];
			}
			if($row['addfields_inall'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_INALL'][$row['addfields']]=$row['addfields_inall'];
			}
			if($row['addfields_ta'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_TA'][$row['addfields']]=$row['addfields_ta'];
			}
			if($row['addfields_multi'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_MULTI'][$row['addfields']]=$row['addfields_multi'];
			}
			if($row['addfields_bbcode']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BBCODE'][$row['addfields']]=$row['addfields_bbcode'];
			}
			if($row['addfields_bbcodes']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BBCODES'][$row['addfields']]=$row['addfields_bbcodes'];
			}
			if($row['addfields_title']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_TITLE'][$row['addfields']]=$row['addfields_title'];
			}
			if($row['addfields_alias']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_ALIAS'][$row['addfields']]=array_map('trim', explode("\n", $row['addfields_alias']));
			}
			if($row['addfields_skip'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_SKIP'][$row['addfields']]=$row['addfields_skip'];
			}
			if($row['addfields_exists'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_EXISTS'][$row['addfields']]=$row['addfields_exists'];
			}

		}
		$db->sql_freeresult($result);
	}
	$cache->put('_ppkbb3cker_addfield_cache', $torrent_addfield);

	return $torrent_addfield;
}
ищем

Код: Выделить всё

function my_int_val($v=0)
если ничего не нашлось, перед

Код: Выделить всё

function get_forum_addfields($id, $forum_astracker=0)
добавить

Код: Выделить всё

function my_int_val($v=0)
{
	if(!$v || $v < 0)
	{
		return 0;
	}

	return @number_format($v+0, 0, '', '');
}
ищем

Код: Выделить всё

function my_float_val($v=0, $n=3)
если ничего не нашлось, перед

Код: Выделить всё

function get_forum_addfields($id, $forum_astracker=0)
добавить

Код: Выделить всё

function my_float_val($v=0, $n=3)
{
	if(!$v || $v < 0)
	{
		return "0.".str_repeat('0', $n);
	}

	return @number_format($v+0, $n, '.', '');
}
language/ru/acp/common.php в самом конце перед

Код: Выделить всё

));

?>
добавить

Код: Выделить всё

	'ACP_ADDFIELDS_SETTINGS'				=> 'Шаблоны дополнительных полей',
	'ACP_ADDFIELD_SETTINGS'				=> 'Дополнительные поля',
	'TRACKER_ADDFIELDS_TYPE'	=> 'Дополнительные поля',
	'TRACKER_ADDFIELDS_TYPE_EXPLAIN'	=> 'Значение 0 - отображать дополнительные поля до формы сообщения, значение 1 - отображать дополнительные поля вместе с формой сообщения (<font color="#FF0000">при значении опции равным 1 будет невозможно определять дополнительные поля как обязательные для заполнения</font>)',
	'TRACKER_ADDFIELDS_POS'	=> 'Положение дополнительных полей',
	'TRACKER_ADDFIELDS_POS_EXPLAIN'	=> 'Значение 1 - добавлять значения дополнительных полей в конец сообщения, значение 0 - в начало сообщения (будет действовать только для вновь добавленных/отредактированных сообщений)',
language/ru/acp/forums.php в самом конце перед

Код: Выделить всё

));

?>
добавить

Код: Выделить всё

	'FORUM_ADDFIELDS'						=> 'Дополнительные поля для форума',
	'FORUM_ADDFIELDS_EXPLAIN'						=> 'Отображаются при добавлении новой темы',
	'COPY_ADDFIELDS'=> 'Копировать дополнительные поля форума из',
	'COPY_ADDFIELDS_EXPLAIN'=> 'Если вы выбрали копирование дополнительных полей, форуму будут присвоены те же дополнительные поля, что и выбранному здесь. Все ранее установленные дополнительные поля к этому форуму будут при этом заменены. Если форум не выбран, будут сохранены текущие дополнительные поля.',
	'NO_ADDFIELDS'=> 'Без дополнительных полей',
	'NO_ADDFIELDS2'=> 'Не копировать дополнительные поля',
language/ru/common.php в самом конце перед

Код: Выделить всё

));

?>
добавить

Код: Выделить всё

	'TRACKER_ADDFIELDS'	=> 'Дополнительные поля',
	'TRACKER_ADDFIELDS_EXAMPLE'	=> 'Пример',
language/ru/posting.php в самом конце перед

Код: Выделить всё

));

?>
добавить

Код: Выделить всё

	'ADDFIELDS_REQUIRED'=>'Заполните дополнительные поля',
	'ADDFIELDS_REQUIRED_FIELD'=>'поле',
	'ADDFIELDS_REQUIRED_EXISTS'=>'поле <u>%s</u> может содержать вариант только из предложенных',
	'ADDFIELDS_REQUIRED_FIELDS'=>'<u>Подчёркнутые</u> поля являются обязательными для заполнения, для множественных полей в (скобках) указано минимально необходимое количество полей для заполнения',
	'ADDFIELDS_REQUIRED_MIN'=>'минимум %s поля(ей) %s',
	'ADDFIELDS_CHECK_FUNCTION' => 'ошибка заполнения поля <u>%s</u>',
	'ADDFIELDS_MULTIHLP' => 'Для выбора более одного значения удерживайте нажатой клавишу <b>Ctrl</b>',
posting.php после

Код: Выделить всё

$draft_id	= request_var('d', 0);
$lastclick	= request_var('lastclick', 0);
добавить

Код: Выделить всё

$posting_page=1;
$array_addfields=array();
после

Код: Выделить всё

$result = $db->sql_query($sql);
$post_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
добавить

Код: Выделить всё

if(@$post_data['forum_addfields'])
{
	$torrent_addfield=get_torrent_addfield();
	$array_addfields=get_forum_addfields(@$post_data['forum_addfields'], 0);
}
после

Код: Выделить всё

if ($submit || $preview || $refresh)
{
добавить

Код: Выделить всё

	if($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']))
	{
		if($array_addfields)
		{
				include_once($phpbb_root_path.'tracker/include/posting_addfields2_add1.'.$phpEx);
				include_once($phpbb_root_path.'tracker/include/posting_addfields2_add2.'.$phpEx);
		}
	}
перед

Код: Выделить всё

// Start assigning vars for main posting page ...
$template->assign_vars(array(
добавить

Код: Выделить всё

$addfields_type_switch=!$submit && !$preview/* && !$config['ppkbb_addfields_type']*/ && sizeof($array_addfields) && $mode=='post' && !request_var('message', '', true) ? true : false;
$addfields_inform_place=/*!$config['ppkbb_addfields_type'] && */$config['ppkbb_addfields_type'] ? true : false;
после

Код: Выделить всё

// Start assigning vars for main posting page ...
$template->assign_vars(array(
добавить

Код: Выделить всё

	'ADDFIELDS_DESCR'					=> sizeof($array_addfields) ? $torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR'] : '',
	'ADDFIELDS_TYPE'					=> /*!$config['ppkbb_addfields_type'] && */$config['ppkbb_addfields_type'] ? true : (/*$config['ppkbb_addfields_type'][0] ? true : */false),
	'ADDFIELDS_TYPE_SWITCH'					=> /*!$config['ppkbb_addfields_type'] && */$config['ppkbb_addfields_type'] ? false : $addfields_type_switch,
	'ADDFIELDS_INFORM_PLACE'					=> $addfields_inform_place,
перед

Код: Выделить всё

// Build custom bbcodes array
display_custom_bbcodes();
добавить

Код: Выделить всё

if($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']))
{
	if($array_addfields)
	{
			include_once($phpbb_root_path.'tracker/include/posting_addfields2_add2.'.$phpEx);
	}
}
styles/prosilver/template/posting_buttons.html после

Код: Выделить всё

	var panels = new Array('options-panel', 'attach-panel', 'poll-panel'
вставить

Код: Выделить всё

<!-- IF FORUM_ADDFIELDS -->, 'addfields-panel'<!-- ENDIF -->
styles/prosilver/template/posting_editor.html после

Код: Выделить всё

				<!-- IF S_SHOW_POLL_BOX || S_POLL_DELETE --><li id="poll-panel-tab"><a href="#tabs" onclick="subPanels('poll-panel'); return false;"><span>{L_ADD_POLL}</span></a></li><!-- ENDIF -->
добавить

Код: Выделить всё

				<!-- IF FORUM_ADDFIELDS and ADDFIELDS_TYPE --><li id="addfields-panel-tab"><a href="#tabs" onclick="subPanels('addfields-panel'); return false;"><span>{L_TRACKER_ADDFIELDS}</span></a></li><!-- ENDIF -->
styles/prosilver/template/posting_layout.html после

Код: Выделить всё

<!-- IF S_DISPLAY_PREVIEW --><!-- INCLUDE posting_preview.html --><!-- ENDIF -->
добавить

Код: Выделить всё

<!-- IF ADDFIELDS_TYPE_SWITCH and FORUM_ADDFIELDS -->
<div class="panel bg3" id="addfields-panel">
	<div class="inner"><span class="corners-top"><span></span></span>
	<h3>{L_POST_A}</h3>
	<!-- IF ADDFIELDS_DESCR -->
	<p style="width:100%;">
		<span>{ADDFIELDS_DESCR}</span>
	</p>
	<!-- ENDIF -->
	<fieldset class="fields2">
	<dl style="clear: left;">
		<dt><b>{L_TRACKER_ADDFIELDS}</b>:</dt>
		<dd><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></dd>
	</dl>
		<!-- BEGIN addfields_option -->
			<dl>
				<dt><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</dt>
				<dd>
				<!-- IF .addfields_option.fields -->
					<!-- BEGIN fields -->
						<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
						<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
						<!-- ENDIF -->
				<!-- ELSE -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
						<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
					<!-- ENDIF -->
				<!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP -->
					<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
					<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
						<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
					<!-- ELSE -->
						{addfields_option.ADDFIELD_HELP}
					<!-- ENDIF -->
				<!-- ENDIF -->
				</dd>
			</dl>
		<!-- END addfields_option -->
	</fieldset>

	<span class="corners-bottom"><span></span></span></div>
</div>
<div class="panel bg2">
	<div class="inner"><span class="corners-top"><span></span></span>
	<fieldset class="submit-buttons">
		<input type="hidden" name="addf_switch" value="1" />
		{S_HIDDEN_ADDRESS_FIELD}
		{S_HIDDEN_FIELDS}
		{S_FORM_TOKEN}
		<input type="submit" tabindex="5" id="pf_preview" name="preview" value="{L_PREVIEW}" class="button1"<!-- IF not S_PRIVMSGS --> onclick="document.getElementById('postform').action += '#preview';"<!-- ENDIF --> />&nbsp;
	</fieldset>

	<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ELSE -->
перед

Код: Выделить всё

<!-- IF S_SHOW_ATTACH_BOX --><!-- INCLUDE posting_attach_body.html --><!-- ENDIF -->
добавить

Код: Выделить всё

<!-- IF FORUM_ADDFIELDS and ADDFIELDS_TYPE -->
<div class="panel bg3" id="addfields-panel">
	<div class="inner"><span class="corners-top"><span></span></span>

	<!-- IF ADDFIELDS_DESCR -->
	<p style="width:100%;">
		<span>{ADDFIELDS_DESCR}</span>
	</p>
	<!-- ENDIF -->
	<fieldset class="fields2">
	<dl style="clear: left;">
		<dt><b>{L_TRACKER_ADDFIELDS}</b>:</dt>
		<dd><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></dd>
	</dl>
		<!-- BEGIN addfields_option -->
			<dl>
				<dt><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</dt>
				<dd>
				<!-- IF .addfields_option.fields -->
					<!-- BEGIN fields -->
						<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
						<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
						<!-- ENDIF -->
				<!-- ELSE -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
						<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
					<!-- ENDIF -->
				<!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP -->
					<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
					<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
						<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
					<!-- ELSE -->
						{addfields_option.ADDFIELD_HELP}
					<!-- ENDIF -->
				<!-- ENDIF -->
				</dd>
			</dl>
		<!-- END addfields_option -->
	</fieldset>

	<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->
перед

Код: Выделить всё

<!-- ENDIF -->
<!-- IF not S_PRIVMSGS -->
добавить

Код: Выделить всё

<!-- ENDIF -->
styles/subsilver2/template/posting_body.html перед

Код: Выделить всё

<!-- IF S_SHOW_TOPIC_ICONS or S_SHOW_PM_ICONS -->
добавить

Код: Выделить всё

<!-- IF ADDFIELDS_TYPE_SWITCH and FORUM_ADDFIELDS -->

<!-- ELSE -->
перед

Код: Выделить всё

<!-- IF not S_PRIVMSGS and S_DISPLAY_USERNAME -->
добавить

Код: Выделить всё

<!-- ENDIF -->
перед

Код: Выделить всё

<tr>
	<td class="row1" width="22%"><b class="genmed">{L_SUBJECT}:</b></td>
добавить

Код: Выделить всё

<!-- IF ADDFIELDS_TYPE_SWITCH and FORUM_ADDFIELDS -->
<tr>
	<td colspan="2" class="row1">
		<table cellpadding="1" width="100%">
		<!-- IF ADDFIELDS_DESCR -->
		<tr>
			<td colspan="2" class="row1"><span>{ADDFIELDS_DESCR}</span></td>
		</tr>
		<!-- ENDIF -->
		<tr>
			<td class="row1" width="22%"><b>{L_TRACKER_ADDFIELDS}</b>:</td>
			<td class="row2"><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></td>
		</tr>
		<!-- BEGIN addfields_option -->
		<tr>
			<td class="row1"><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</td>
			<td class="row2">
			<!-- IF .addfields_option.fields -->
				<!-- BEGIN fields -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
					[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
					[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
					<!-- ENDIF -->
			<!-- ELSE -->
				<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
					<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
				<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
					<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
				<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
					<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
				<!-- ENDIF -->
			<!-- ENDIF -->
			<!-- IF addfields_option.ADDFIELD_HELP -->
				<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
					<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
				<!-- ELSE -->
					{addfields_option.ADDFIELD_HELP}
				<!-- ENDIF -->
			<!-- ENDIF -->
			</td>
		</tr>
		<!-- END addfields_option -->
		</table>
	</td>
</tr>
<tr>
	<td class="cat" colspan="2" align="center">
		<input type="hidden" name="addf_switch" value="1" />
		<input class="btnlite" type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" />
	</td>
</tr>

<!-- ELSE -->
после

Код: Выделить всё

		<!-- DEFINE $CAPTCHA_TAB_INDEX = 4 -->
		<!-- INCLUDE {CAPTCHA_TEMPLATE} -->
		<!-- ENDIF -->
добавить

Код: Выделить всё

<!-- IF FORUM_ADDFIELDS and ADDFIELDS_TYPE -->
<tr>
	<th colspan="2">{L_TRACKER_ADDFIELDS}</th>
</tr>
<tr>
	<td colspan="2" class="row1">
		<table cellpadding="1" width="100%">
		<!-- IF ADDFIELDS_DESCR -->
		<tr>
			<td colspan="2" class="row1"><span>{ADDFIELDS_DESCR}</span></td>
		</tr>
		<!-- ENDIF -->
		<tr>
			<td class="row1" width="22%"><b>{L_TRACKER_ADDFIELDS}</b>:</td>
			<td class="row2"><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></td>
		</tr>
		<!-- BEGIN addfields_option -->
			<tr>
				<td class="row1"><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</td>
				<td class="row2">
				<!-- IF .addfields_option.fields -->
					<!-- BEGIN fields -->
						<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
						<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
						<!-- ENDIF -->
				<!-- ELSE -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
						<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
					<!-- ENDIF -->
				<!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP -->
					<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
					<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
						<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
					<!-- ELSE -->
						{addfields_option.ADDFIELD_HELP}
					<!-- ENDIF -->
				<!-- ENDIF -->
				</td>
			</tr>
		<!-- END addfields_option -->
		</table>
	</td>
</tr>
<!-- ENDIF -->
перед

Код: Выделить всё

</table>
<!-- IF not S_PRIVMSGS -->
добавить

Код: Выделить всё

<!-- ENDIF -->
4. Очистить кеш, обновить переделанные стили.

5. Настроить опции, адм. раздел - вкладка Общие - Размещение сообщений - Дополнительные поля/Положение дополнительных полей.

6. Установить модули:

6.1. Адм. раздел - вкладка Система - адм. раздел - ссылка Общие - ссылка Конфигурация - справа внизу ищем в форме напротив кнопки Добавить модуль: Управление конференцией [acp_board] -> Шаблоны дополнительных полей - жмём: Добавить модуль - Да - Вернуться на предыдущую страницу - напротив: Шаблоны дополнительных полей жмём ссылку: включить

6.2. Адм. раздел - вкладка Система - адм. раздел - ссылка Общие - ссылка Конфигурация - справа внизу ищем в форме напротив кнопки Добавить модуль: Управление конференцией [acp_board] -> Дополнительные поля - жмём: Добавить модуль - Да - Вернуться на предыдущую страницу - напротив: Дополнительные поля жмём ссылку: включить
--
Скриншоты:
Опция в адм. разделе


Шаблоны доп. полей


Поля в шаблоне


Выбор шаблона в форуме


Дополнительные поля


Опции дополнительного поля


Создание темы (доп. поля до формы сообщения)


Создание темы (доп. поля после формы сообщения)


Предпросмотр темы


Тема

--
Для пользователей ppkBB3cker - НЕ нужно устанавливать данный мод в трекер, он уже там установлен.
У вас нет необходимых прав для просмотра вложений в этом сообщении. Попробуйте зарегистрироваться или войти на форум.
PPK
barkovskii
Пользователь
Сообщения: 11
Зарегистрирован: 12 сен 2011, 21:23
Сообщение 04 сен 2013, 18:42
Один из пользователей моего форума попросил оформить все правки в нормальную инструкцию, оформил, если у автора мода будет время, то попрошу его проверить мои труды. (Загрузка архивов почему то отключена, видимо только для меня, разместил архив у себя на сервере). Ссылка на архив мода
barkovskii
dan9
Пользователь
Сообщения: 4
Зарегистрирован: 22 окт 2013, 13:54
Сообщение 23 окт 2013, 19:40
Данный мод будет работать на голом phpbb3?
Я очень плохо знаю phpbb* но "вроде" правки не значительные.

Код: Выделить всё

include_once($phpbb_root_path.'tracker/include/posting_addfields_add1.'.$phpEx);
include_once($phpbb_root_path.'tracker/include/posting_addfields_add2.'.$phpEx);
dan9
Аватара пользователя
PPK
Администратор
Сообщения: 10514
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 24 окт 2013, 10:16
В названии темы есть подсказка, если просто добавить эти две строчки - ничего не произойдёт, мод нужно ставить полностью.
PPK
dan9
Пользователь
Сообщения: 4
Зарегистрирован: 22 окт 2013, 13:54
Сообщение 24 окт 2013, 10:31
PPK писал(а):В названии темы есть подсказка, если просто добавить эти две строчки - ничего не произойдёт, мод нужно ставить полностью.
Я имел ввиду что у мненя на форуме не будет папки "tracker", а значит пути будут отличаться

Код: Выделить всё

        
include_once($phpbb_root_path.'includes/posting_addfields_add1.'.$phpEx);
include_once($phpbb_root_path.'includes/posting_addfields_add2.'.$phpEx);
dan9
Аватара пользователя
PPK
Администратор
Сообщения: 10514
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 24 окт 2013, 10:46
будет, когда скачаете архив.
PPK
demonx
Донатор
Сообщения: 515
Зарегистрирован: 02 апр 2011, 00:19
Сообщение 26 янв 2014, 16:24
Как создавать доп. поля, у меня ничего не создаеться, может надо где-то включить мод? Ставил сбарку форума версия 2.
demonx
Аватара пользователя
PPK
Администратор
Сообщения: 10514
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 27 янв 2014, 10:48
Обновление #44 2012.11.21 в конце сообщения.
PPK
8 сообщений
 • Страница 1 из 1

Вернуться в «Минимоды и хаки для phpBB3»

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2025 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Расширения в разработке ↳   База расширений ↳   Стили для phpBB 3.1-3.3 ↳   Переводы расширений для phpBB3.1-3.3 ↳   Поиск и запросы расширений ↳   Запросы расширений, функционала и переводов для подписчиков ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   F.A.Q. ↳   Ваши трекеры ↳   Оффтопик xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение phpBB 3.0 ↳   Другие моды для phpBB3 ↳   Минимоды и хаки для phpBB3 ↳   Вопросы по phpBB3 ↳   phpBB3 ppkBB3cker Edition ↳   Платные услуги, моды, стили ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo