@demiancz

Как создать модуль для Joomla с фильтром таблицы?

Пытаюсь сделать модуль для Joomla который выводит таблицу. Нужно реализовать возможность отображения количества записей, сортировку при клике по колонке и поиск по таблице.
Решил использовать пример с этого сайта https://www.datatables.net/examples/basic_init/zer...
В обычном HTML все отлично работает.
В Joomla прописал так:
<?php
//запрет прямого доступа
defined( '_JEXEC' ) or die;

//Подключение стилей
$doc =& JFactory::getDocument();
$doc->addStyleSheet('https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css');
//Подключение JS
$doc->addScript('https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js');
$doc->addScript('https://code.jquery.com/jquery-3.5.1.js');
?>

<script>
$(document).ready(function() {
	$('#example').DataTable();
} );
</script>

<table id="example" class="display" style="width:100%">
						<thead>
							<tr>
								<th>Name</th>
								<th>Position</th>
								<th>Office</th>
								<th>Age</th>
								<th>Start date</th>
								<th>Salary</th>
							</tr>
						</thead>
						<tbody>
							<tr>
								<td>Tiger Nixon</td>
								<td>System Architect</td>
								<td>Edinburgh</td>
								<td>61</td>
								<td>2011/04/25</td>
								<td>$320,800</td>
							</tr>
							<tr>
								<td>Garrett Winters</td>
								<td>Accountant</td>
								<td>Tokyo</td>
								<td>63</td>
								<td>2011/07/25</td>
								<td>$170,750</td>
							</tr>
							<tr>
								<td>Ashton Cox</td>
								<td>Junior Technical Author</td>
								<td>San Francisco</td>
								<td>66</td>
								<td>2009/01/12</td>
								<td>$86,000</td>
							</tr>
							<tr>
								<td>Cedric Kelly</td>
								<td>Senior Javascript Developer</td>
								<td>Edinburgh</td>
								<td>22</td>
								<td>2012/03/29</td>
								<td>$433,060</td>
							</tr>
							<tr>
								<td>Airi Satou</td>
								<td>Accountant</td>
								<td>Tokyo</td>
								<td>33</td>
								<td>2008/11/28</td>
								<td>$162,700</td>
							</tr>
							<tr>
								<td>Brielle Williamson</td>
								<td>Integration Specialist</td>
								<td>New York</td>
								<td>61</td>
								<td>2012/12/02</td>
								<td>$372,000</td>
							</tr>
							<tr>
								<td>Herrod Chandler</td>
								<td>Sales Assistant</td>
								<td>San Francisco</td>
								<td>59</td>
								<td>2012/08/06</td>
								<td>$137,500</td>
							</tr>
							<tr>
								<td>Rhona Davidson</td>
								<td>Integration Specialist</td>
								<td>Tokyo</td>
								<td>55</td>
								<td>2010/10/14</td>
								<td>$327,900</td>
							</tr>
							<tr>
								<td>Colleen Hurst</td>
								<td>Javascript Developer</td>
								<td>San Francisco</td>
								<td>39</td>
								<td>2009/09/15</td>
								<td>$205,500</td>
							</tr>
						</tbody>
						<tfoot>
							<tr>
								<th>Name</th>
								<th>Position</th>
								<th>Office</th>
								<th>Age</th>
								<th>Start date</th>
								<th>Salary</th>
							</tr>
						</tfoot>
					</table>

Таблица выводится. Стили и файлы JS на странице подключены. Но ничего не работает. Может кто подскажет, что не так? Или может другой вариант решения этой задачи подскажите?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
@demiancz Автор вопроса
Я решил проблему по другому. В папку js и css (в шаблоне) добавил нужные мне файлы и подключил их следующим образом.
// Add Stylesheets
JHtml::_('stylesheet', 'jquery.dataTables.min.css', array('version' => 'auto', 'relative' => true));

// Check for a custom js file
JHtml::_('script', 'jquery-3.5.1.js', array('version' => 'auto', 'relative' => true));
JHtml::_('script', 'jquery.dataTables.min.js', array('version' => 'auto', 'relative' => true));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
iResource
@iResource
Разработчик IR XML2Ozon
Прежде всего, стоит иметь в виду, что datatable - это плагин к jQuery. Поэтому его скрипт нужно подключать ПОСЛЕ самого jQuery.
Кроме того, возможно, jQuery Вам и вовсе подключать не надо, если он уже итак присутствует (без Вашего подключения).
И Вы не указали версию Joomla. Непонятно, нет ли там конфликта с Mootools. Да и вообще непонятно, нет ли других конфликтов JS, не указали ссылку на проблемную страницу. Остаётся гадать )
Ответ написан
Комментировать
sergeytolkachyov
@sergeytolkachyov
https://web-tolk.ru
Может Вам не нужно писать свой модуль? Есть контент-плагин szaki table, который делает то же самое. В модулях можно включить обработку контент-плагинами, а табличку править вручную. Либо, если хочется возиться в коде, то прогонять модуль через content.prepare.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы