Вывести скрипт по условию

Тема в разделе "Как сделать...", создана пользователем pobo3, 4 сен 2019.

  1. pobo3

    pobo3 Постоялец

    Регистр.:
    20 окт 2014
    Сообщения:
    60
    Симпатии:
    1
    Доброго дня.
    Модуль на сайте подключает скрипты в head.
    Код:
    public function addScripts() {
            $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
            $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
            $this->document->addScript('catalog/view/javascript/sdek.js');
        }
    
    Проблема в том что эти скрипты нужны только на странице оформления заказа.
    Хочу только там их и оставить.
    Пробую так

    Код:
    public function addScripts($route) {
           if($route = "checkout/order/addOrder")
            $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
            $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
            $this->document->addScript('catalog/view/javascript/sdek.js');
        }
    
    Не работает.
    Подскажите куда копать? Учусь.

    Спасибо
     
  2. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    235
    Симпатии:
    88
    Две ошибки
    1. "=" присваивает значение, т.е. $route все время будет равно тому что стоит после "="
    2. все удовлетворяет if нужно оборачивать в {} (если и другие варианты - но давай начнем с этого)

    Итого
    Код:
    public function addScripts($route) {
           if($route == "checkout/order/addOrder") {
                 $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
                 $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
                 $this->document->addScript('catalog/view/javascript/sdek.js');
           }
        }
    
     
  3. hydropericardium

    hydropericardium Постоялец

    Регистр.:
    20 июн 2018
    Сообщения:
    74
    Симпатии:
    20
    Выше сказано все правильно.
    Только проверьте еще что $route действительно отдает то что надо ( просто мне не знакома данная CMS).
    Можно костыльным методом проверять по самому uri
    Что-то вроде
    Код:
    If ($_SERVER['PHP_SELF'] == 'checkout/order/addOrder'){
    //код
    }
    
     
  4. pobo3

    pobo3 Постоялец

    Регистр.:
    20 окт 2014
    Сообщения:
    60
    Симпатии:
    1
    Спасибо

    Я пробовал == - в этом случае скрипты не выводятся ни где

    Это исправил, спасибо.

    CMS - Opencart

    Стараюсь сделать по аналогии создателей модуля, в этом же файле есть строки

    Код:
    public function orderCreate($route, $input_data, $order_id) {
            if($route = "checkout/order/addOrder" && (int)$order_id) {
                $this->rememberCdek($order_id);
            }
        }
    
    
     
  5. pobo3

    pobo3 Постоялец

    Регистр.:
    20 окт 2014
    Сообщения:
    60
    Симпатии:
    1
    пробовал так
    Код:
    public function addScripts($route) {
           if($route == "checkout") {
                 $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
                 $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
                 $this->document->addScript('catalog/view/javascript/sdek.js');
           }
        }
    и так
    Код:
    public function addScripts() {
            if ($_SERVER['PHP_SELF'] == "checkout"){
                 $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
                 $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
                 $this->document->addScript('catalog/view/javascript/sdek.js');
           }
        }
    
    не выводит скрипты ни на одной странице
     
    Последнее редактирование: 4 сен 2019
  6. pobo3

    pobo3 Постоялец

    Регистр.:
    20 окт 2014
    Сообщения:
    60
    Симпатии:
    1
    если = - выводит везде
     
  7. duxabilii

    duxabilii Создатель

    Регистр.:
    4 фев 2012
    Сообщения:
    17
    Симпатии:
    9
    Один знак равенства - это присваивание, переменной $route присваивается непустое значение, которое при приведении типов становится true.
    Просмотрите, что именно передается в функцию на нужной странице, а потом уже делайте сравнение.

    Простеший код:
    PHP:
    public function addScripts($route) {

           
    var_dump($route); // <= выводит переменную на экран

           
    if($route == "checkout") {
                 
    $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
                 
    $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
                 
    $this->document->addScript('catalog/view/javascript/sdek.js');
           }
        }
     
  8. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    235
    Симпатии:
    88
    100% проблема в условии, я вот не уверен что такой роут вообще есть "checkout/order/addOrder"