Prestashop быстрый адрес ссылки на внешний URL

Prestashop быстрый адрес ссылки на внешний URL

04.09.2018 12:45:00 Просмотров 54 Источник

У меня есть небольшая проблема на prestashop по добавлению пользовательского url-адреса в quick address.

Текущее состояние PrestaShop является 1.7.4.2 новую установку.

enter image description here

Как указано на изображении выше, я хотел бы перенаправить его на внешний URLhttp://www.google.com, после завершения создания он отображается в меню быстрого адреса, как показано ниже:

enter image description here

Но когда я нажал на него, просто перенаправить на: http://localhost:8080/prestashop_1.7.4.2/admin067c8ousl/index.php/http://www.google.com

Примечание. Я удалил маркер, поскольку он предоставил тот же результат

Другими словами токен генерируется самостоятельно и отличается каждый раз

Я видел оригинальную документацию для этой конкретной проблемы здесь .

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

Обратите внимание, что вы можете создавать ссылки на другие веб-сайты, например на свой аккаунт PayPal или на свою электронную почту. Просто вставьте полный URL-адрес в поле "URL", включая префикс http://.

Как я написал правильный url, но он все еще думает, что это контроллер.

Я еще не изменил код, есть ли способ исправить это.

Спасибо и хорошего дня.

У вопроса есть решение - Посмотреть?

Ответы - Prestashop быстрый адрес ссылки на внешний URL / Prestashop Quick Address Links to external URL

Является ответом!
sadlyblue

04.09.2018 03:25:11

Это было для v1.6, v1.7 не разрешает внешние URL-адреса по умолчанию. Я представил улучшение для этого, надеюсь, что они одобрят слияние. Между тем, если вы хотите использовать их, вы можете изменить classes/QuickAccess.phpили добавить к переопределению (лучший вариант) и изменить функцию getQuickAccessesWithTokenна следующую:

public static function getQuickAccessesWithToken($idLang, $idEmployee)
{
    $quickAccess = self::getQuickAccesses($idLang);

    if (empty($quickAccess)) {
        return false;
    }

    $baselink = Context::getContext()->link->getBaseLink();
    foreach ($quickAccess as $index => $quick) {
        if(strpos($quickAccess[$index]['link'], 'http') !== 0 or strpos($quickAccess[$index]['link'], $baselink) === 0){
            if ('../' === $quick['link'] && Shop::getContext() == Shop::CONTEXT_SHOP) {
                $url = Context::getContext()->shop->getBaseURL();
                if (!$url) {
                    unset($quickAccess[$index]);
                    continue;
                }
                $quickAccess[$index]['link'] = $url;
            } else{
                // first, clean url to have a real quickLink
                $quick['link'] = Context::getContext()->link->getQuickLink($quick['link']);
                $tokenString = $idEmployee;

                preg_match('/controller=(.+)(&.+)?$/', $quick['link'], $admin_tab);
                if (isset($admin_tab[1])) {
                    if (strpos($admin_tab[1], '&')) {
                        $admin_tab[1] = substr($admin_tab[1], 0, strpos($admin_tab[1], '&'));
                    }
                    $quick_access[$index]['target'] = $admin_tab[1];

                    $tokenString = $admin_tab[1].(int)Tab::getIdFromClassName($admin_tab[1]).$idEmployee;
                }
                $quickAccess[$index]['link'] = $baselink.basename(_PS_ADMIN_DIR_).'/'.$quick['link'];
                if (false === strpos($quickAccess[$index]['link'], 'token')) {
                    $separator = strpos($quickAccess[$index]['link'], '?') ? '&' : '?';
                    $quickAccess[$index]['link'] .= $separator.'token='.Tools::getAdminToken($tokenString);
                }

            }
        }
    }

    return $quickAccess;
}
https://stackoverflow.com/questions/52163426/prestashop-quick-address-links-to-external-url/52166318#comment91282510_52166318
да наконец, idk, почему они изменили его, и не обновили документ для него. Теперь я могу получить доступ к внешнему url-адресу, спасибо.
Mahdi Shad

05.09.2018 10:38:49

Переопределение не является чистым решением.

Вы можете использовать бесплатный модуль для добавления jquery в свой "admin header hook" и сделать это с помощью jquery, чтобы изменить URL-адрес нового созданного quickAccess

Закрыть X