我正在编写一个后端组件,其列由以下内容生成:
<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'
)
但是在获取该工具提示时未能成功。有关覆盖该默认消息的任何想法吗?
答案 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>!');