SlideShare a Scribd company logo
Возводим динамическую таблицу:
No views, no problem
Michael Krainiuk
Michael Krainiuk
Drupal Senior Developer
Мой опыт в Drupal разработке
●  Разработка
●  Управление проектами
●  Drupal аудит
●  Консультация
●  Локализация Drupal
●  Разработка Drupal модулей
Вывод
Вывод
Вывод
Что делать?
Views
Views
Views
Или
Или
DB -> Page
DB -> Page
DB -> Page
Page
hook_menu() {
$items[‘admin/dashboard/testing’] = array(
‘page callback’ => ‘my_site_testing’,
…,
);
return $items;
}
/**	
	*	Page	callback	for	admin/dashboard/testing.	
	*/	
function	my_site_testing()	{		
		drupal_set_title('Nodes');	
	
		$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);	
	
		$rows	=	array(	
				array(5,	‘First’,	‘John’,	10),	
		);	
	
		$tab['table']	=	array(	
				'#theme'	=>	'table',	
				'#header'	=>	$head,	
				'#rows'	=>	$rows,	
				'#empty'	=>	'No	data	available.',	
		);	
		$tab['table_pager']	=	array('#theme'	=>	'pager');	
	
		return	drupal_render($tab);	
}
/**	
	*	Page	callback	for	admin/dashboard/testing.	
	*/	
function	my_site_testing()	{		
		drupal_set_title('Nodes');	
	
		$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);	
	
		$rows	=	array(	
				array(5,	‘First’,	‘John’,	10),	
		);	
	
		$tab['table']	=	array(	
				'#theme'	=>	'table',	
				'#header'	=>	$head,	
				'#rows'	=>	$rows,	
				'#empty'	=>	'No	data	available.',	
		);	
		$tab['table_pager']	=	array('#theme'	=>	'pager');	
	
		return	drupal_render($tab);	
}
/**	
	*	Page	callback	for	admin/dashboard/testing.	
	*/	
function	my_site_testing()	{		
		drupal_set_title('Nodes');	
	
		$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);	
	
		$rows	=	array(	
				array(5,	‘First’,	‘John’,	10),	
		);	
	
		$tab['table']	=	array(	
				'#theme'	=>	'table',	
				'#header'	=>	$head,	
				'#rows'	=>	$rows,	
				'#empty'	=>	'No	data	available.',	
		);	
		$tab['table_pager']	=	array('#theme'	=>	'pager');	
	
		return	drupal_render($tab);	
}
/**	
	*	Page	callback	for	admin/dashboard/testing.	
	*/	
function	my_site_testing()	{		
		drupal_set_title('Nodes');	
	
		$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);	
	
		$rows	=	array(	
				array(5,	‘First’,	‘John’,	10),	
		);	
	
		$tab['table']	=	array(	
				'#theme'	=>	'table',	
				'#header'	=>	$head,	
				'#rows'	=>	$rows,	
				'#empty'	=>	'No	data	available.',	
		);	
		$tab['table_pager']	=	array('#theme'	=>	'pager');	
	
		return	drupal_render($tab);	
}
/**	
	*	Page	callback	for	admin/dashboard/testing.	
	*/	
function	my_site_testing()	{		
		drupal_set_title('Nodes');	
	
		$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);	
	
		$rows	=	array(	
				array(5,	‘First’,	‘John’,	10),	
		);	
	
		$tab['table']	=	array(	
				'#theme'	=>	'table',	
				'#header'	=>	$head,	
				'#rows'	=>	$rows,	
				'#empty'	=>	'No	data	available.',	
		);	
		$tab['table_pager']	=	array('#theme'	=>	'pager');	
	
		return	drupal_render($tab);	
}
Header
$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);
Header
$head	=	array(	
		array('data'	=>	'ID',	'field'	=>	'n.nid'),	
		array('data'	=>	'Title'),	
		array('data'	=>	'User'),	
		array('data'	=>	'UID',	'field'	=>	'u.uid'),	
);	
$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);
Header
$head	=	array(	
		array('data'	=>	'ID',	'field'	=>	'n.nid'),	
		array('data'	=>	'Title'),	
		array('data'	=>	'User'),	
		array('data'	=>	'UID',	'field'	=>	'u.uid'),	
);	
$head	=	array(	
				'ID',	
				'Title',	
				'User',	
				'UID',	
		);
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,		
						$row->name,		
						$row->uid,	
				),	
		);	
}
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}	
1
1
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}	
1
1
2
2
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}	
1
1
2
2
3
3
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}	
1
1
2
2
3
3
4
4
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,		
						$row->name,		
						$row->uid,	
				),	
		);	
}
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,		
						$row->name,		
						$row->uid,	
				),	
		);	
}
Table
10 строк
А где?
Rows
$query	=	db_select('node',	'n’);	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}
Rows
$query	=	db_select('node',	'n')->extend('PagerDefault')->extend('TableSort');	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}
Rows
$query	=	db_select('node',	'n')->extend('PagerDefault')->extend('TableSort');	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->orderByHeader($head)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}
Rows
$query	=	db_select('node',	'n')->extend('PagerDefault')->extend('TableSort');	
$query->fields('n',	array('nid',	'title'));	
$query->fields('u',	array('name',	'uid'));	
$query->leftJoin('users',	'u',	'u.uid	=	n.uid');	
$query->condition('u.uid',	0,	'<>');	
$result	=	$query	
		->limit(10)	
		->orderByHeader($head)	
		->execute();	
	
foreach	($result	as	$row)	{	
		$rows[]	=	array(	
				'data'	=>	array(	
						$row->nid,	
						$row->title,	
						$row->name,		
						$row->uid,	
				),	
		);	
}	
$head	=	array(	
		array('data'	=>	'ID',	'field'	=>	'n.nid'),	
		array('data'	=>	'Title'),	
		array('data'	=>	'User'),	
		array('data'	=>	'UID',	'field'	=>	'u.uid'),	
);
Результат
Результат
Результат
возводим динамическую таблицу, No views, no problem. Крайнюк Михаил
возводим динамическую таблицу, No views, no problem. Крайнюк Михаил
Michael Krainiuk
Drupal Senior Developer
kraynuk.m@i20.biz
При поддержке:
Организаторы:
Thank you!

More Related Content

PDF
Quiz Component For Joomla
PDF
Jquery Framework
TXT
PDF
Prototype UI
PDF
Palestra PythonBrasil[8]
PDF
Як досвід компанії перетворився на фреймворк
DOCX
Documentacion edderson callpa_ortiz
PDF
Sis quiz
Quiz Component For Joomla
Jquery Framework
Prototype UI
Palestra PythonBrasil[8]
Як досвід компанії перетворився на фреймворк
Documentacion edderson callpa_ortiz
Sis quiz

What's hot (9)

PDF
jQuery - Javascript para quem não sabe Javascript
PDF
Javascript and jQuery for Mobile
TXT
Index2
PDF
Quiz Component For Joomla
PDF
Drupal 8. Movement towards. Susikov Sergey
PPT
Юнит тестирование в Zend Framework 2.0
PDF
Web2.0 with jQuery
PDF
PDF
jQuery sans jQuery
jQuery - Javascript para quem não sabe Javascript
Javascript and jQuery for Mobile
Index2
Quiz Component For Joomla
Drupal 8. Movement towards. Susikov Sergey
Юнит тестирование в Zend Framework 2.0
Web2.0 with jQuery
jQuery sans jQuery
Ad

More from DrupalSib (20)

PDF
SSO авторизация - Татьяна Киселева, DrupalJedi
PDF
XML в крупных размерах - Михаил Крайнюк, DrupalJedi
PPTX
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
PDF
Drupal в школе - Борис Шрайнер
PDF
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
PDF
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
PDF
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
PDF
Вадим Валуев - Искусство ИТ
PDF
Андрей Юртаев - Mastering Views
PDF
Migrate drupal 6 to drupal 8. Абраменко Иван
PDF
Entity возрождение легенды. Исай Руслан
PDF
Реализация “гибких” списков Жамбалова Намжилма
PDF
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
PDF
Сергей Синица. Разработка интернет-магазинов на Drupal
PDF
Eugene Ilyin. Why Drupal is cool?
PDF
Ivan Kotlyar. PostgreSQL in web applications
PDF
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
PDF
Anton Shloma. Drupal as an integration platform
PDF
Руслан Исай - Проповедуем Drupal разработку
PDF
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
SSO авторизация - Татьяна Киселева, DrupalJedi
XML в крупных размерах - Михаил Крайнюк, DrupalJedi
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
Drupal в школе - Борис Шрайнер
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
Вадим Валуев - Искусство ИТ
Андрей Юртаев - Mastering Views
Migrate drupal 6 to drupal 8. Абраменко Иван
Entity возрождение легенды. Исай Руслан
Реализация “гибких” списков Жамбалова Намжилма
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
Сергей Синица. Разработка интернет-магазинов на Drupal
Eugene Ilyin. Why Drupal is cool?
Ivan Kotlyar. PostgreSQL in web applications
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Anton Shloma. Drupal as an integration platform
Руслан Исай - Проповедуем Drupal разработку
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
Ad

возводим динамическую таблицу, No views, no problem. Крайнюк Михаил