使用jHtml :: _('grid.sort'更改“单击以按此列排序”默认文本

时间:2015-04-09 19:36:52

标签: php joomla

我正在编写一个后端组件,其列由以下内容生成:

<th><?php echo JHtml::_('grid.sort', 'Column Title', 'table_column', $listDirn, $listOrder) ?></th>

在后端,当您将鼠标悬停在列标题上时,会收到以下消息:“单击此按列排序。”

我们希望使用工具提示和标题标记来对每列进行更深入的解释,而不是默认消息。来自此页:https://docs.joomla.org/API17:JHtmlJGrid::action

public static function action (
    $i
    $task
    $prefix=''
    $text=''
    $active_title=''
    $inactive_title=''
    $tip=false
    $active_class=''
    $inactive_class=''
    $enabled=true
    $translate=true
    $checkbox='cb'
)

但是在获取该工具提示时未能成功。有关覆盖该默认消息的任何想法吗?

2 个答案:

答案 0 :(得分:1)

好的我调查了一下,似乎JHtml::_('grid.sort', 'Column Title', 'table_column', $listDirn, $listOrder)只是在JHtmlGrid::sort触发了libraries/cms/html/grid.php

这门课特别允许你改进&#34;工具提示中的文字。
我说&#34;改善&#34;因为文本&#34;点击按此栏排序。&#34;是硬编码的,您的自定义文本将高于该文本。

为此,您必须使用以下代码:

JHtml::_('grid.sort', 'Column Title', 'table_column', $listDirn, $listOrder, null, 'asc', '<h1>Here my custom code</h1> wow even <b>html</b>!');

好的,但我想删除&#34;点击按此栏排序。&#34; ,我该怎么办?

在组件中创建一个名为MySort.php的新文件,例如。 在那里需要libraries/cms/html/grid.php并创建扩展JHtmlGrid的新类MySort。

在那里只需从JHtmlGrid复制方法排序并删除此常量JGLOBAL_CLICK_TO_SORT_THIS_COLUMN

好了,现在你可以使用MySort::sort('Column Title', 'table_column', $listDirn, $listOrder, null, 'asc', '<h1>Here my custom code</h1> wow even <b>html</b>!');

class MyGrid extends JHtmlGrid
{
    public static function sort($title, $order, $direction = 'asc', $selected = '', $task = null, $new_direction = 'asc', $tip = '')
    {
        JHtml::_('behavior.core');
        JHtml::_('bootstrap.tooltip');

        $direction = strtolower($direction);
        $icon = array('arrow-up-3', 'arrow-down-3');
        $index = (int) ($direction == 'desc');

        if ($order != $selected)
        {
            $direction = $new_direction;
        }
        else
        {
            $direction = ($direction == 'desc') ? 'asc' : 'desc';
        }

        $html = '<a href="#" onclick="Joomla.tableOrdering(\'' . $order . '\',\'' . $direction . '\',\'' . $task . '\');return false;"'
            . ' class="hasTooltip" title="' . JHtml::tooltipText(($tip ? $tip : $title)) . '">';

        if (isset($title['0']) && $title['0'] == '<')
        {
            $html .= $title;
        }
        else
        {
            $html .= JText::_($title);
        }

        if ($order == $selected)
        {
            $html .= ' <i class="icon-' . $icon[$index] . '"></i>';
        }

        $html .= '</a>';

        return $html;
    }
}

答案 1 :(得分:0)

如果使用

调用方法,borracciaBlu的答案是有效的
MyGrid::sort('Column Title', 'table_column', $listDirn, $listOrder, null, 'asc', '<h1>Here my custom code</h1> wow even <b>html</b>!');

而不是

MySort::sort('Column Title', 'table_column', $listDirn, $listOrder, null, 'asc', '<h1>Here my custom code</h1> wow even <b>html</b>!');