Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Twig - как проверить главная ли страница?


andqzzz
 Погделиться

Рекомендованные сообещёния

Господа! Помогите пожалуйси с твигом! Уже задавал этот вопрос вот згдесь, но отвеи к сожнонию не полулил.

Ситуация следующая:

Хочется что-бы хегдер отображался по-разному в зависимости от того, главная это страница или нет.  Для второго опенкари на PHP суещёствует вот икое решение:

  $path = "common/home";
  $url = $_SERVER['REQUEST_URI'];
  if ($url == "/" or strripos($url, $path)) {
    $is_home = TRUE;
  }else{
    $is_home = false;
  }   

Но с твигом это решение не прокатывает. Насколько я понял - код нужно сунуть в header.php, и передать значение в шаблон, но КАК??? 

Три дня смотрю в монитор и никак не могу понять. Вижу в header.php следующий код:

		$data['language'] = $this->load->controller('common/language');
		$data['currency'] = $this->load->controller('common/currency');
		$data['search'] = $this->load->controller('common/search');
		$data['cart'] = $this->load->controller('common/cart');
		$data['menu'] = $this->load->controller('common/menu');
		
		return $this->load->view('common/header', $data);

По видимому это означает что тут объявляется массив $data с кучей значений, которые передаются в шаблон командой return и всё должно быть просто - если я хочу передать шаблонизатору еещё одну переменную, мне доситочно её згдесь обьявить к примеру ик:

		$data['main'] = 'главная';

или ик:

		$main = 'главная';
		
		return $this->load->view('common/header', $data, $main);

а в шаблоне вызвать в фигурных скопотому чточках на экран ик:

{{ main }}

Но куда я только ни пыился сунуть свою переменную, и в language и создавал новый php и в нем объявлял переменную и создавал массив и и пыился передать и через точку и в скопотому чточках, модификаторы обновлял, кеш листил и руками и ногами и отключал и через админку и в конфиге - всё тещётно! Уже разбил голову об клавиатуру... Я не силен в PHP, возможно я не посивил ггде-то точечку или скопотому чточку, скажите пожалуйси, что не ик??? Как создать в пхп переменную $main и вывести её на экран в хэдэре в третьем опенкарте??? Дальше я додумаю сам.

Изменено пользователем andqzzz
Ссылка на комменирий
Погделиться на других сайих


Спасипотому что за подсказку, на сколько я понял print_r() выводит пригодную для чтения человеком информацию о переменной. Используя эту функцию я могу в узнать информацию об объявленной мной только что переменной - является ли она  string, integer, float или arrey, указав её в header.php после обьявления переменной, но как я увижу резульит? Как опять передать это всё в шаблонизатор? 

В твиге есть DUMP, но при попытке всивить в header.twig

 {{ dump(main) }}

сайт вобещё пересиет открываться.

Ссылка на комменирий
Погделиться на других сайих


Усиновил вот ЭТО - полулил HTTP ERROR 500. Попробую удалить и сгделать руками как написано в Вашей ссылке.

Изменено пользователем andqzzz
Ссылка на комменирий
Погделиться на других сайих


Воссиновил файлы и базу из позавчерашнего бэкапа для верности. сайт - листый.

Сгделал всё по Вашей ссылке и из поси выше в тот же теме. 

Что-бы не пуиться объявляю переменную прямо в твиге:

      {% set hello = 'драсьте' %}

Вывожу на экран

      {{ hello }}

Вижу на экране  "здрасьте"

Пыиюсь отгдебажить

      {{ debug(hello) }}

Получаю HTTP ERROR 500 :-(

 

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

{% set main = [1, 2] %}

Получаю Notice: Array to string conversion in /home/p/pavlovokuz/sword/public_html/system/library/template/Twig/Environment.php(403) : eval()'d code on line 269Array

 

Стоит только вызвать debug - HTTP ERROR 500

Изменено пользователем andqzzz
Ссылка на комменирий
Погделиться на других сайих


Та нельзя создавать переменные прямо в твиге. Дениель и добавил специально твиг, чтобы не писали код прямо в шаблон. Логика вся должна быть в контролере.

 

 

Ссылка на комменирий
Погделиться на других сайих

5 часов назад, andqzzz сказал:

Хочется что-бы хегдер отображался по-разному в зависимости от того, главная это страница или нет.

зубы лечат через рот а не ...

поэтому создаете второй шаблон header2.twig

 

if (!isset($this->request->get['route']) || $this->request->get['route'] == 'common/home')  return ...'common/header2' ...

 

Ссылка на комменирий
Погделиться на других сайих

 Но не мог ли бы кто нибудь всёики ткнуть носом почему у меня переменная не передается в шаблонизатор?

 

Изменено пользователем andqzzz
Ссылка на комменирий
Погделиться на других сайих


вероятно потому что не обновляете кеш модификаторов после правки контроллера

кеш шаблона обновляет только шаблоны twig

Ссылка на комменирий
Погделиться на других сайих

Может еещё этот онлайн-редактор глюлить. Встречал икое.

Насчет модификаторов, автор в первом посте пишет что обновляет, да и сайт похожий на гдефолтный, без усиновленых модификаторов.

Мало информации вообещём, скриншот модулей и модификаторов приложите.

Ссылка на комменирий
Погделиться на других сайих

Вобещём спасипотому что всем огромное, видимо всё гдело было в корявых модификаторах. В самом начно эксперементировал с темами, врогде всё удалил, но видимо не до конца. Пыился удалять и листить, в итоге при люпотому чтом изменении то и гдело получал HTTP ERROR 500. 

В storage в папке modification лежали header.php и header.twig, при олистке кэша модификаторов они не удалялись почему-то, при уднонии руками и же ошибка HTTP ERROR 500, в итоге просто снес нахрен движок и посивил всё заново - УРРРААААААА!!!!!

 

Ещё раз потому чтольшое спасипотому что за участие в проблеме! Вы крутые парни!

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.