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
guestebb21a
 
PDF
Jquery Framework
Luiz Carlos Chaves
 
TXT
New 3
William Avelar
 
PDF
Prototype UI
Sébastien Gruhier
 
PDF
Palestra PythonBrasil[8]
Thiago Da Silva
 
PDF
Як досвід компанії перетворився на фреймворк
Shtrih Sruleg
 
DOCX
Documentacion edderson callpa_ortiz
Edderson J. Ortiz
 
PDF
Sis quiz
Clesio Veloso
 
Quiz Component For Joomla
guestebb21a
 
Jquery Framework
Luiz Carlos Chaves
 
Prototype UI
Sébastien Gruhier
 
Palestra PythonBrasil[8]
Thiago Da Silva
 
Як досвід компанії перетворився на фреймворк
Shtrih Sruleg
 
Documentacion edderson callpa_ortiz
Edderson J. Ortiz
 
Sis quiz
Clesio Veloso
 

What's hot (9)

PDF
jQuery - Javascript para quem não sabe Javascript
Nando Vieira
 
PDF
Javascript and jQuery for Mobile
Ivano Malavolta
 
TXT
Index2
grateful7
 
PDF
Quiz Component For Joomla
guestebb21a
 
PDF
Drupal 8. Movement towards. Susikov Sergey
ADCI Solutions
 
PPT
Юнит тестирование в Zend Framework 2.0
zfconfua
 
PDF
Web2.0 with jQuery
Lau Bech Lauritzen
 
PDF
Test
SamQuiDaiBo
 
PDF
jQuery sans jQuery
goldoraf
 
jQuery - Javascript para quem não sabe Javascript
Nando Vieira
 
Javascript and jQuery for Mobile
Ivano Malavolta
 
Index2
grateful7
 
Quiz Component For Joomla
guestebb21a
 
Drupal 8. Movement towards. Susikov Sergey
ADCI Solutions
 
Юнит тестирование в Zend Framework 2.0
zfconfua
 
Web2.0 with jQuery
Lau Bech Lauritzen
 
jQuery sans jQuery
goldoraf
 
Ad

More from DrupalSib (20)

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

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