Удаление кнопки Help для всех сотрудников, кроме Super-User и независимо от шаблона?

Byteman

Мой дом здесь!
Регистрация
18 Мар 2008
Сообщения
484
Реакции
242
Всем привет.

Нужно удалить кнопку Help для всех сотрудников, кроме Super-User и независимо от шаблона.

Тут товарищи предлагают удаление с помощью модификации стандартного шаблона - это не то, что нужно. Но в этой же ветке товарищ предлагает идею с помощью условия if различать между SuperUser и остальными:

Для просмотра ссылки Войди или Зарегистрируйся

А здесь товарищ bellini132 предлагает решение независимое от шаблона с помощью оверрайда, но опять же для всех пользователей без различия и не очень понятно как именно:

Для просмотра ссылки Войди или Зарегистрируйся

Может кто-нибудь написать нужный код, с учётом двух условий: независимость от шаблонов и различие между суперпользователем и остальными и объяснить куда код вставить?

Речь идёт о Prestashop 1.6.1.14.
 
Последнее редактирование:
Извиняюсь, первая ссылка была неправильная. Сейчас исправил.
 
Задача:
Проверить, что зашедший в админку сотрудик -- Суперадмин.
Решение (без оверрайдов):
Файл .../classes/controllers/AdminController.php
Находим строку:
PHP:
        'employee' => $this->context->employee,
После нее, на следующей строке вставляем:
PHP:
       'employee_sa' => $this->context->employee->isSuperAdmin(),
Добавили переменную в Smarty. Теперь ее можно использовать в шаблонах.

В вашем случае файл .../папка_админа/themes/default/template/page_header_toolbar.tpl
Находим:
PHP:
                   {if isset($help_link)}
                       <li>
                          <a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
                              <i class="process-icon-help"></i>
                              <div>{l s='Help'}</div>
                          </a>
                       </li>
                    {/if}
Вставляем проверку на Суперадмина:
PHP:
                {if $employee_sa == 1}
                   {if isset($help_link)}
                       <li>
                          <a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
                              <i class="process-icon-help"></i>
                              <div>{l s='Help'}</div>
                          </a>
                       </li>
                   {/if}
                {/if}
 
Последнее редактирование:
........................................
........................................

Теперь ее можно использовать в шаблонах.

В вашем случае файл .../папка_админа/themes/default/template/page_header_toolbar.tpl
Находим:
PHP:
                   {if isset($help_link)}
                       <li>
                          <a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
                              <i class="process-icon-help"></i>
                              <div>{l s='Help'}</div>
                          </a>
                       </li>
                    {/if}
Вставляем проверку на Суперадмина:
PHP:
                {if $employee_sa == 1}
                   {if isset($help_link)}
                       <li>
                          <a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
                              <i class="process-icon-help"></i>
                              <div>{l s='Help'}</div>
                          </a>
                       </li>
                   {/if}
                {/if}

Супер!
Извиняюсь, был в отпуске, не мог ответить.
А как тоже самое проделать в Prestashop 1.7.2.0?
 
Задача:
Проверить, что зашедший в админку сотрудик -- Суперадмин.
Решение (без оверрайдов):
Файл .../classes/controllers/AdminController.php
Находим строку:
PHP:
        'employee' => $this->context->employee,
После нее, на следующей строке вставляем:
PHP:
       'employee_sa' => $this->context->employee->isSuperAdmin(),
Добавили переменную в Smarty. Теперь ее можно использовать в шаблонах.

В вашем случае файл .../папка_админа/themes/default/template/page_header_toolbar.tpl
Находим:
PHP:
                   {if isset($help_link)}
                       <li>
                          <a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
                              <i class="process-icon-help"></i>
                              <div>{l s='Help'}</div>
                          </a>
                       </li>
                    {/if}
Вставляем проверку на Суперадмина:
PHP:
                {if $employee_sa == 1}
                   {if isset($help_link)}
                       <li>
                          <a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
                              <i class="process-icon-help"></i>
                              <div>{l s='Help'}</div>
                          </a>
                       </li>
                   {/if}
                {/if}

C большой задержкой возвращаюсь к вопросу.
В прошлый раз как-то по другому решил этот вопрос, хотя твоё решение выглядело более изящным.

Теперь снова назрел этот же вопрос и я воспользовался твоим советом, но он не работает как задумано:
к сожалению, кнопка помощи исчезает и у суперадминистратора.

Вот я скопировал строки из первого файла, чтобы видно было как и куда я внёс изменения:

['view'],
'employee' => $this->context->employee,
'employee_sa' => $this->context->employee->isSuperAdmin(),
'search_type' => Tools::getValue('bo_search_type'),

и строки из второго файла:

</li>
{/if}
{if $employee_sa == 1}
{if isset($help_link)}
<li>
<a class="toolbar_btn btn-help" href="{$help_link|escape}" title="{l s='Help'}">
<i class="process-icon-help"></i>
<div>{l s='Help'}</div>
</a>
</li>
{/if}
{/if}
</ul>

Можно данный вариант доработать?
<-------------- добавлено через 2799 сек. -------------->


Извиняюсь, уже не надо ничего дорабатывать. Нашёл правильное решение.

В файле /classes/controller/AdminController.php со строки 1545 эти строки:

$this->context->smarty->assign('help_link', 'Для просмотра ссылки Войди или Зарегистрируйся'
.Tools::getValue('controller').'?version='._PS_VERSION_.'&country='.Language::getIsoById($this->context->employee->id_lang));

меняем на эти:

if (Context::getContext()->employee->id_profile == 1) {
$this->context->smarty->assign('help_link', 'Для просмотра ссылки Войди или Зарегистрируйся'
.Tools::getValue('controller').'?version='._PS_VERSION_.'&country='.Language::getIsoById($this->context->employee->id_lang));
}

то есть добавляем одну строчку сверху и одну снизу - фактически производим проверку на суперюзера с помощью дополнительного if условия.

После этого не забываем в бэкоффисе стереть кэш.

И вуаля - всё работает как и задумано.

Кстати, есть возможность как-то отметить ветку, что проблема решена и пометить ответ с правильным решением?
Так это, например, в родном престашоп-форуме возможно.
Было бы полезно при поиске решений.
 
Последнее редактирование:
Назад
Сверху