【问题标题】:How to make a Joomla Table sortable?如何使 Joomla 表可排序?
【发布时间】:2014-01-12 01:29:07
【问题描述】:

我在我的 Joomla 网络应用程序中添加了以下 PHP 代码。 这将创建一个用户组中所有用户的表

我怎样才能使这个表可排序?

是否有一些 Joomla/PHP 代码或插件可以按名称排序此列表? 我可以添加一个参数来按任何列排序吗?

<?php
$teachers = JAccess::getUsersByGroup(10); //change number in the brackets

echo "<table class=\"table table-striped\">";
echo "<thead>";
echo "<tr>";
echo "<th>Name</th>";
echo "<th>Street</th>";
echo "<th>Zip</th>";
echo "<th>City</th>";
echo "<th>Phone</th>";
echo "<th>Email</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>";
foreach($teachers as $user_id) {
    $user = JFactory::getUser($user_id);
    $profile = JUserHelper::getProfile($user->id);
    echo "<tr>";
    echo "<td>".$user->name."</td>";
    echo "<td>".$profile->profile['address1']."</td>";
    echo "<td>".$profile->profile['postal_code']."</td>";
    echo "<td>".$profile->profile['city']."</td>";
    echo "<td>".$profile->profile['phone']."</td>";
    echo "<td>".$user->email."</td>";
    echo "</tr>";
}
echo "</tbody>";
echo "</table>";
?>

【问题讨论】:

    标签: php sorting joomla html-table jquery-ui-sortable


    【解决方案1】:

    例如 如果您希望它使标题可排序,请使用类似于以下的代码来添加表头

      <?php echo JHTML::_('grid.sort', JText::_('TITLE'),  'title',
      $this->lists['order_Dir'],   $this->lists['order'] ); ?>
    

    并在模态中使用以下函数在 SQL 中构建您的 where 子句。

      getUserStateFromRequest(
      $option.'filter_order_Dir', 'filter_order_Dir', 'ASC'));
    

    以上函数将根据用户选择返回 ASC 或 DSC

    JHTML 和 JHTMLGRID 是构建交互式表格的有用类

    details 第 279 页

    【讨论】:

      【解决方案2】:

      我认为最简单的方法是使用 jquery 或使用 jquery 插件。您可以使用DataTablesTablesorter,它们是具有该功能的jquery 插件。

      【讨论】:

      • DataTables 是一个 大量 脚本。我一点也不建议将它与 CMS 一起使用。那里有更充分的解决方案
      • @Lodder 不确定你认为什么“庞大”,但数据表 js 的大小约为 70kb...
      • @mjayt - jquery.dataTables.js = 369kb, jquery.dataTables.min.js = 70kb ......当 Joomla 可以通过 API 调用处理可排序表时,这毫无意义跨度>
      • 同意,但同样,一个 70kb 的最小化脚本远非庞大......更不用说它很可能更强大,并且排序发生在客户端而不是来回运行到数据库进行查询有了新订单。
      【解决方案3】:

      我假设您希望表格在客户端可排序,这意味着您将需要一些 Javascript 代码。有一些 jquery 库可以做到这一点(比如 DataTables),但也有 Joomla 特定的扩展可以做到这一点,比如 http://www.tabulizer.com 的 Tabulizer for Joomla 具有许多排序选项,此外还可以避免任何 jQuery 与其他扩展的冲突。这是一个排序演示http://www.tabulizer.com/index.php/support-menu/tabulizer-tips/63-sort-second-row

      【讨论】:

        【解决方案4】:

        您也可以使用直接为 Joomla 开发的plugin Szaki Table(目前可用于 J!2.5 和 J!3.x)。 看看吧,它是功能强大且高度可定制的工具。

        【讨论】:

          猜你喜欢
          • 2014-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-18
          • 2017-11-06
          • 2015-02-02
          • 2012-06-14
          • 1970-01-01
          相关资源
          最近更新 更多