Лишняя строка "Заказы" в списке "Мой профиль" когда пользователь не вошёл на сайт

Когда покупатель не вошёл на сайт (не залогинился) при открытии меню “Мой профиль” он видит строку “Заказы”. Нажав на эту строку меню покупатель попадает на некую ПУСТУЮ страницу заказов. После этого он либо звонит нам и происходит странный разговор типа “сам дурак”, либо он уходит с сайта. Скорее всего навсегда.

Вопрос:
Как убрать эту строку “Заказы” из выпадающего меню “Мой профиль” когда пользователь ещё не залогинился?

1 лайк

включите модуль мои изменения, создайте файл

design\themes\responsive\templates\addons\my_changes\hooks\profiles\my_account_menu.override.tpl

с содержимым, т почистите кэш

{if $auth.user_id}
            {if $user_info.firstname || $user_info.lastname}
                <li class="ty-account-info__item  ty-account-info__name ty-dropdown-box__item">{$user_info.firstname} {$user_info.lastname}</li>
            {else}
                <li class="ty-account-info__item ty-dropdown-box__item ty-account-info__name">{$user_info.email}</li>
            {/if}
            <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"profiles.update"|fn_url}" rel="nofollow" >{__("profile_details")}</a></li>
            {if $settings.General.enable_edp == "Y"}
            <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"orders.downloads"|fn_url}" rel="nofollow">{__("downloads")}</a></li>
            <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"orders.search"|fn_url}" rel="nofollow">{__("orders")}</a></li>
            {/if}
        {elseif $user_data.firstname || $user_data.lastname}
            <li class="ty-account-info__item  ty-dropdown-box__item ty-account-info__name">{$user_data.firstname} {$user_data.lastname}</li>
        {elseif $user_data.email}
            <li class="ty-account-info__item ty-dropdown-box__item ty-account-info__name">{$user_data.email}</li>
        {/if}
       
        {if $settings.General.enable_compare_products == 'Y'}
            {assign var="compared_products" value=""|fn_get_comparison_products}
            <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"product_features.compare"|fn_url}" rel="nofollow">{__("view_comparison_list")}{if $compared_products} ({$compared_products|count}){/if}</a></li>
        {/if}

только если какой либо модуль добавляет в это меню свой пункт то он тогда исчезнет

2 лайка

Спасибо, но работает не так как хотелось бы - остаётся только пункт “Список сравнения”,
а “Отложенные” и “Заказы” пропали и с логином и без логина :frowning:

Это сделано для пользователей без регистрации. После размещения заказа в сессии хранится номер заказа и они через это меню могут найти свой заказ.

1 лайк

К сожалению, пользователи без регистрации сделать ничего не могут - в большинстве случаев посетители нашего сайта составляют возрастную группу 60+ и очень плохо ориентируются в интернет-магазине.
Практически каждый заказ приходится вести в ручном режиме вися с клиентом на телефонной трубке.
А CS-Cart за столько времени своего существования не умудрился сделать так, чтобы покупатель видел свое имя на месте (вместо, рядом) с кнопкой “Мой профиль” если он залогинен и кнопку “Войти” если нет.
http://joxi.ru/52ajEdWtkPLB9A
http://joxi.ru/12Mal0yFkepnG2

http://joxi.ru/52ajEdWtkPLN9A
http://joxi.ru/GrqPxN8tGXowVA

1 лайк

попробуйте так

{if $auth.user_id}
        {if $user_info.firstname || $user_info.lastname}
            <li class="ty-account-info__item  ty-account-info__name ty-dropdown-box__item">{$user_info.firstname} {$user_info.lastname}</li>
        {else}
            <li class="ty-account-info__item ty-dropdown-box__item ty-account-info__name">{$user_info.email}</li>
        {/if}
        <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"profiles.update"|fn_url}" rel="nofollow" >{__("profile_details")}</a></li>
        {if $settings.General.enable_edp == "Y"}
        <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"orders.downloads"|fn_url}" rel="nofollow">{__("downloads")}</a></li>
        {/if}
        <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"orders.search"|fn_url}" rel="nofollow">{__("orders")}</a></li>
    {elseif $user_data.firstname || $user_data.lastname}
        <li class="ty-account-info__item  ty-dropdown-box__item ty-account-info__name">{$user_data.firstname} {$user_data.lastname}</li>
    {elseif $user_data.email}
        <li class="ty-account-info__item ty-dropdown-box__item ty-account-info__name">{$user_data.email}</li>
    {/if}
   
    {if $settings.General.enable_compare_products == 'Y'}
        {assign var="compared_products" value=""|fn_get_comparison_products}
        <li class="ty-account-info__item ty-dropdown-box__item"><a class="ty-account-info__a underlined" href="{"product_features.compare"|fn_url}" rel="nofollow">{__("view_comparison_list")}{if $compared_products} ({$compared_products|count}){/if}</a></li>
    {/if}

Оверрайдить тут не очень правильно, в системе есть модули, которые свои пункты добавляют пост хуком

Да я об этом предупредил в первом сообщении, но оверрайдить все равно прийдется, либо хук, либо весь файл
ну либо сделать свой шаблон блока и заменить в макетах

у вас какая тема ?

вот еще вариант меню.zip (7,8 КБ)

закинуть на сервер

создать языковую переменную my_changes_my_account с удобным вам названием шаблона

почистить кэш

зайти в макет и переключить на новый шаблон

но он сделан на основе стандартной темы + я добавил вывод имени вместо “Мой профиль” но с длинными именами может поехать меню

если будет не нужно в начале файла /design/themes/responsive/templates/addons/my_changes/blocks/my_account.tpl

это

 {if $auth.user_id && ($user_info.firstname || $user_info.lastname)}
     {$user_info.firstname} {$user_info.lastname}
 {else}
    {$title}
  {/if}

замените на

 {$title}
1 лайк

Тема стандартная по умолчанию. Платных модулей нет. Несколько бесплатных от EcomLabs

Добрый день.

В более ранних версиях cs-cart (4.6.3, к примеру) при нажатии на кнопку заказы поведение было иным, предлагалось автоизироваться, чтобы получить доступ к заказам.
Подскажите, какие можно поправить шаблоны, чтобы вернуть данную логику.
@cs-cart_team

2 лайка

Вот, вот, вот!!!
Вот как надо решить эту коллизию!
Всё гениальное просто!

Обнаружилось, что никто не ищет свой заказ в строке “заказ” от слова “совсем”. Ни там, ни там.
Все смотрят на корзину, а она делается пуста после открытия заказа. Отсюда реакция: Я НЕ МОГУ НАЙТИ СВОЙ ЗАКАЗ!

2 лайка

Привет! Согласен, похоже на баг. Передал информацию разработчикам. Мы напишем в этом топике, как только появится новая информация

1 лайк

Всем привет! Поправили этот момент. С версии 4.13.2 если в сессии гостя нет гостевых заказов, ему будет предложено авторизоваться.

Для тех кто хочет применить изменения до выхода 4.13.2 я прикрепил .diff в архиве к этому сообщению.
8857ed2f233a16cecd9062ceada607fa0b929d50.zip (789 Байт)
Инструкция по применению в нашей документации

3 лайка

Большое спасибо! Выполнил по инструкции через SSH - всё работает отлично!

1 лайк

Что-то в DIFF-e перемудрили.

Думаю все просто. Сделали изменения, сверху прошлись форматером кода. Всё попало в один комит/ветку. Диф делали автоматически, поэтому попали все изменения. Собственно, плохо-то от этого не станет)

Согласен, что всё просто для тех кто в теме. Только вот ненужная информация в файле. Человек же, по простоте своей, будет считать этот кусок кода меганужным, лезть в файл, искать строку, менять что-то там, а по факту бесполезным делом заниматься. :wink: