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

pobo3

Постоялец
Регистрация
20 Окт 2014
Сообщения
61
Реакции
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');
    }

Не работает.
Подскажите куда копать? Учусь.

Спасибо
 
Две ошибки
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');
       }
    }
 
Выше сказано все правильно.
Только проверьте еще что $route действительно отдает то что надо ( просто мне не знакома данная CMS).
Можно костыльным методом проверять по самому uri
Что-то вроде
Код:
If ($_SERVER['PHP_SELF'] == 'checkout/order/addOrder'){
//код
}
 
Спасибо

1. "=" присваивает значение, т.е. $route все время будет равно тому что стоит после "="
Я пробовал == - в этом случае скрипты не выводятся ни где

2. все удовлетворяет if нужно оборачивать в {} (если и другие варианты - но давай начнем с этого)

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

Только проверьте еще что $route действительно отдает то что надо ( просто мне не знакома данная CMS).

CMS - Opencart

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

Код:
public function orderCreate($route, $input_data, $order_id) {
        if($route = "checkout/order/addOrder" && (int)$order_id) {
            $this->rememberCdek($order_id);
        }
    }
 
пробовал так
Код:
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');
       }
    }
не выводит скрипты ни на одной странице
 
Последнее редактирование:
если = - выводит везде
 
если = - выводит везде
Один знак равенства - это присваивание, переменной $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');
       }
    }
 
100% проблема в условии, я вот не уверен что такой роут вообще есть "checkout/order/addOrder"
 
Назад
Сверху