Ваш помощник вызывается, потому что вы объявили sample
в качестве вспомогательного модуля, который должен быть вызван для перевода названий вашего меню. Но проблема в том, что в вашем config.xml
вы объявили своих помощников для вашего модуля, вызываемого через строку helloworld
, а не sample
. Два способа исправить это.
Первый способ (и наиболее согласованный здесь, учитывая имя вашего модуля), изменить вызов вашего помощника следующим образом:
<helpers>
<sample>
<class>Lern_Sample_Helper</class>
</sample>
</helpers>
ИЛИ второй способ, изменить помощник модуля, вызванный в вашем объявлении меню, например:
<menu>
<sample module="helloworld">
<title>Sample Module</title>
<sort_order>100</sort_order>
<children>
<sample module="helloworld">
<title>Sample Module</title>
<sort_order>0</sort_order>
<action>admin_sample/adminhtml_index</action>
</sample>
</children>
</sample>
</menu>
Я бы даже не стал заморозить элементы (если я правильно понимаю, что вы собираетесь делать). Скорее создайте функцию, которая клонирует N рядов строк вместе с заголовком и расположите их абсолютно поверх оригиналов. Возможно, при необходимости добавьте фильтр невидимости на оригиналы.
РЕДАКТИРОВАТЬ:
Я снова смотрел на код. Вы можете получить некоторое повышение производительности, переместив столько же, сколько общие атрибуты за пределы цикла jquery. Примерно так:
$.fn.newFreeze = function(num) {
var left = 0;
for (var i = 1; i < num + 1; i++) {
left += i === 1 ? 0 : $(`th:nth-child(${i - 1})`).outerWidth();
$(`th:nth-child(${i}),td:nth-child(${i})`).each(function() {
$(this).css({
left,
zIndex: 4,
})
})
}
}
th, td {
position: sticky;
position: -webkit-sticky;
}