Hi
Beginning to pull my hair out trying to resolve this issue.
I am getting this error
Parse error: syntax error, unexpected ‘if’ (T_IF), expecting function (T_FUNCTION) or const (T_CONST) in /home/xxx/xxx_storage/modification/catalog/controller/common/footer.php on line 52
I am running Journal 3 on OC v3.0.3.2
All was going well, but not now … any help or suggestions would be appreciated
Code: Select all
<?php
class ControllerCommonFooter extends Controller {
public function index() {
if (defined('JOURNAL3_ACTIVE') && !$this->journal3->document->isPopup()) {
$this->journal3->settings->set('desktop_main_menu', $this->load->controller('journal3/main_menu', array('module_type' => 'main_menu', 'module_id' => $this->journal3->settings->get('headerMainMenu'), 'id' => 'main-menu')));
$this->journal3->settings->set('desktop_main_menu_2', $this->load->controller('journal3/main_menu', array('module_type' => 'main_menu', 'module_id' => $this->journal3->settings->get('headerMainMenu2'), 'id' => 'main-menu-2')));
$this->journal3->settings->set('desktop_top_menu', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerTopMenu'))));
$this->journal3->settings->set('desktop_top_menu_2', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerTopMenu2'))));
$this->journal3->settings->set('desktop_top_menu_3', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerTopMenu3'))));
if ($this->journal3->document->hasClass('mobile-header-active')) {
$this->journal3->settings->set('mobile_main_menu', $this->load->controller('journal3/main_menu', array('module_type' => 'main_menu', 'module_id' => $this->journal3->settings->get('headerMobileMainMenu'))));
$this->journal3->settings->set('mobile_top_menu', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerMobileTopMenu'))));
}
$data['footer_menu'] = $this->load->controller('journal3/footer_menu', array('module_type' => 'footer_menu', 'module_id' => $this->journal3->settings->get('footerMenu')));
}
$this->load->language('common/footer');
$this->load->model('catalog/information');
$data['informations'] = array();
foreach (defined('JOURNAL3_ACTIVE') ? array() : $this->model_catalog_information->getInformations() as $result) {
if ($result['bottom']) {
$data['informations'][] = array(
'title' => $result['title'],
'href' => $this->url->link('information/information', 'information_id=' . $result['information_id'])
);
}
}
$data['contact'] = $this->url->link('information/contact');
$data['return'] = $this->url->link('account/return/add', '', true);
$data['sitemap'] = $this->url->link('information/sitemap');
$data['tracking'] = $this->url->link('information/tracking');
$data['manufacturer'] = $this->url->link('product/manufacturer');
$data['voucher'] = $this->url->link('account/voucher', '', true);
$data['affiliate'] = $this->url->link('affiliate/login', '', true);
$data['special'] = $this->url->link('product/special');
$data['account'] = $this->url->link('account/account', '', true);
$data['order'] = $this->url->link('account/order', '', true);
$data['wishlist'] = $this->url->link('account/wishlist', '', true);
$data['newsletter'] = $this->url->link('account/newsletter', '', true);
$data['powered'] = sprintf($this->language->get('text_powered'), $this->config->get('config_name'), date('Y', time()));
}
// Whos Online
if ($this->config->get('config_customer_online')) {
$this->load->model('tool/online');
if (isset($this->request->server['REMOTE_ADDR'])) {
$ip = $this->request->server['REMOTE_ADDR'];
} else {
$ip = '';
}
if (isset($this->request->server['HTTP_HOST']) && isset($this->request->server['REQUEST_URI'])) {
$url = ($this->request->server['HTTPS'] ? 'https://' : 'http://') . $this->request->server['HTTP_HOST'] . $this->request->server['REQUEST_URI'];
} else {
$url = '';
}
if (isset($this->request->server['HTTP_REFERER'])) {
$referer = $this->request->server['HTTP_REFERER'];
} else {
$referer = '';
}
$this->model_tool_online->addOnline($ip, $this->customer->getId(), $url, $referer);
}
$data['scripts'] = $this->document->getScripts('footer');
return $this->load->view('common/footer', $data);
}
}
Last edited by straightlight on Tue Feb 11, 2020 7:13 am, edited 1 time in total.
-
Приветствую сообщество.
Я новенький, вникаю быстро и сознательно, постараюсь максимально изложить проблемуУстановил последнюю сборку Oc 2.1.0.1
Сразу начал устанавливать тему купленную на Themeforest
Всё делал по инструкции шаг за шагом.
Процессе, после добавления модулей выдаёт ошибку во фронтэнде
Parse error: syntax error, unexpected ‘elseif’ (T_ELSEIF) in /srv/users/serverpilot/apps/levillage/public/vqmod/vqcache/vq2-catalog_controller_common_seo_url.php on line 130Если файл модуля: vqmod/xml/simple_blog_catalog.xml
отключить (перенести в каталог vqmod/xml/disabled/simple_blog_catalog.xml) — то всё работает, значит вероятно проблема в нём.Подскажите куда копать что делать?
На оригинальной версии Opecart (не русская сборка) всё отличноВложения:
-
simple_blog_catalog.xml неправильно модифицирует файл .
Зайдите по пути catalog/controller/common/seo_url.php и найдите там файл seo_url.php и seo_url.php-original
Файл seo_url.php переименуйте во что нибудь, а seo_url.php-original переименуйте seo_url.php
Все заработает.Дело в том, что в русской сборке seo_url.php изменен для нормальной работы, а вкумод не может точно видимо изменить его, вот и проблема.
Хоть файл из русской сборке seo_url.php, составлен так что конфликтов должно быть минимум, но при левых вкумодах, они бывают.
-
Во вложении файл от русской сборки. Исправил переносы строк. Попробуйте..
Вложения:
Инна, Ален и Rig нравится это.
-
Спасибо большое, пока работает.
А что конкретно вы сделали?
(я до вашего сообщения пробовал менять seo_url.php на оригинальный, но у меня почему то результата не было.
а после вашего сообщения попробовал второй раз и сработало — видно магия форума!) -
я же говорю, добавил переносы в файл как и в оригинале. Теперь seo_url станет еще лучше ))
-
Muhin
Пользователь- Сообщения:
- 83
- Симпатии:
- 3
У меня тоже возникли ошибки в сео с модулем Multivendor от wabaay!
Помогите, пожалуйста найти ошибку на файле!
не работает seo-ссылки вендоров
если вести выходит site.com/seo_link(vendor)/?vendor=id
а должно site.com/seo_link(vendor)
и работает так index.php?route=module/vendorlogo/visitstore&vendor_id=8Вложения:
-
Muhin
Пользователь- Сообщения:
- 83
- Симпатии:
- 3
почему конфликт возникает — никто не знает?
-
После обновления модификатора , все возвращается назад.Может еще где надо поправить?
-
уточните, что возвращается?
-
в файл seo_url.php возвращает первоначальный код, который в последствии выводит ту-же ошибку о которой описывалось выше.
-
в файле не может возвращаться код, если вы не пытаетесь отредактировать файл в кеше модификатора
Широко распространенная ошибка: «PHP Parse error: syntax error, unexpected ‘?’ in …» Смысл ее понятен из формулировки — парсер PHP столкнулся с синтаксической ошибкой в скрипте.
В первую очередь, конечно же нужно проверить скрипт или указанную в ошибке его часть, нет ли там действительно опечатки — незакрытая или лишняя скобка, точка, все что угодно.
Если Вы проверили все и уверены в синтаксисе, то следующее, что я рекомендую проверить — это кодировка файла. Откройте скрипт в вашем любимом текстовом редакторе,
я использую notepad++, и проверьте в какой кодировке сохранен файл. Если просто в UTF-8, то в этом может и быть причина.
Дело в том, что при сохранении файла в кодировке UTF-8 в самое начало файла добавляется специальная сигнатура. Называется она BOM — Byte Order Mark, Маркер последовательности байтов.
Фактически это символ(его код U+FEFF), поэтому парсер и начинает разбор синтаксиса с него, а не, например, с открывающего тэга <?php, поэтому для него весь синтаксис и сбивается.
Для решения проблемы нужно просто преобразовать файл в кодировку UTF-8 без BOM, сделать это можно в том же текстовом редакторе.
То же самое можно сделать в командной строке на сервере, если так удобнее.
Смотрим наш скрипт в 16-ричном виде:
# head -n1 AppAsset.php | hexdump -C
00000000 ef bb bf 3c 3f 70 68 70 0a |…<?php.|
00000009
Видим, что перед тэгом <?php есть что-то. В Hex — это сигнатура «ef bb bf», что и указывает на то, что у нас в скрипте есть BOM.
Открываем скрипт в текстовом редакторе Vi, на многих серверах он есть.
# vi AppAsset.php
Далее, пока vi в командном режиме, набираем в нем команду
:set nobomb
Сохраняемся и выходим
:wq
Проверяем еще раз
# head -n1 AppAsset.php | hexdump -C
00000000 3c 3f 70 68 70 0a |<?php.|
00000006
Все отлично.
Хотя в некоторых случая причина ошибки может быть не в этом и придется искать дальше.
Опишу мой случай. После переноса сайта на другой хостинг вылетела эта ошибка. Причем парсер остановился именно на символе ‘?’.
Я, на всякий случай, проверил скрипт на наличие опечаток, но все было нормально. Парсер остановился на конструкции
$query = $_SERVER[‘QUERY_STRING’] ?? »;
Вроде бы все нормально, ошибок нет, вполне легально используется оператор ‘??’.
Дело оказалось в том, что изначально сайт был на хостинге с PHP версии 7, а переносился на версию 5.6.
А оператор объединения с null(??) был введен только в 7-й версии PHP, я это упустил.
http://php.net/manual/ru/migration70.new-features.php#migration70.new-features.null-coalesce-op
В итоге, после смены версии на 7-ю все заработало.