Как закомментировать строку в twig
Перейти к содержимому

Как закомментировать строку в twig

  • автор:

Странный редирект

Прошу помочь с одной проблемой. У меня сайт интернет-магазин. В шапке сайта логотип. Клик на него перебрасывает на недавно созданную страницу из каталога магазина, а раньше открывалась главная страница сайта. Робот Яндекса определяет эту страницу как условно https://site.ru/, и при каждом переобходе через раз ставит её как «в поиске» и как «редирект». В .htaccess я нашел строки, которые возможно отвечают за этот процесс. Однако попытка их закомментировать приводит к тому, что страница совсем не находится на сервере. В чём тут может быть дело? Я не великий специалист в этой области, поэтому прошу ногами больно не бить)).

BaNru
Пацифизжу

Команда форума
Регистрация 13.11.2010 Сообщения 4 135

htaccess тут не при чём. Ищите файл типа header.php (.tpl, .twig) в папке с темой и там можете исправить.
Либо в настройках магазина это тоже наверняка где-то возможно.

Подробнее можно будет подсказать только узнав что за CMS.
Как понимаю магазин работает на какой-то CMS, типа opencart, magento, woocommerce.

Также можно обратиться к тому, кто делал магазин или на форму с вашей CMS.

Grav – Часто используемые настройки и сниппеты кода (MarkDown, Twig, редактор Atom)

Grav – HEADER по умолчанию для всех страниц сайта

title: '' date: '2018-11-01 20:23' published: true media_order: poster.jpg metadata: description: '' taxonomy: category: - WordPress tag: - 'WordPress - Плагины' - 'WordPress - Админка' page-toc: active: true template: blog_item highlight: enabled: true lines: true page-addon: ifarmelazy: true

MARKDOWN настройки – для заголовков страниц записей

Title (Название) страницы

title: 'Grav + Gantry 5 - Самые необходимые дополнения и ресурсы для работы'

Description (Описание) страницы

metadata: description: 'Из данной записи Вы узнаете о 7 веселых расширениях для Chrome которые были разработаны веселыми людьми из Github'

Дата создания страницы (Auto Date)

date: '2018-09-15 05:19'

Для автоматической записи даты в hedaer страницы необходимо установить плагин:

Таксономии страницы

Вариант №1 в случае одиночного использования таксономий
taxonomy: category: WEB tag: Markdown
Вариант №2 в случае использования таксономий более одной штуки
taxonomy: category: - Grav tag: - Grav - Gantry 5 - Grav - Плагины

Автоматические заголовки на основе H1-H6 в теле страницы (Page Toc)

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

Шаблон дочерней страницы блога

template: blog_item

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

Кастомные настройки контента для страниц

 page-addon: ifarmelazy: true

Данные настройки на самом деле придуманы мной для упрощения работы с выводом того или иного типа контента. Например в данной записи хедера я активировал ленивую загрузку iframe. И в случае если данная опция активна, в файле userthemesg5_heliumcustomtemplatespartialsblog_item.html.twig

скрипт отложенной загрузки будет подключен:

 script async src="//cdn.iframe.ly/embed.js" charset="utf-8"> script> 

Но естественно что для отображения iframe необходимо добавить например видео с YouTube:

div class="YouTubeVideo" style="background:linear-gradient(rgba(0, 0, 0, 0.752), rgba(0, 0, 0, 0.52)), transparent url(/user/images/YouTubeVideoPreloader.gif);left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;">div class="iFrameLazyLoad" style="background:linear-gradient(rgba(0, 0, 0, 0.752), rgba(0, 0, 0, 0.52)), transparent url(/wp-content/plugins/sds-uapa-wpallimp/preloader.svg);left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;background-position: 50% 50%;background-repeat: no-repeat;margin-bottom: 25px;">iframe data-iframely-url="https://www.youtube.com/embed/54WI1XSilb4" style="border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;" allowfullscreen scrolling="no"> iframe> div> div>

Активация TWIG и MARKDOWN препроцессоров в теле страницы

Данная опция активирует или дезактивирует обработчики TWIG и MARKDOWN в теле страницы.

process: markdown: true twig: true twig_first: true

Подсветка синтаксиса кода (Highlight)

В данном случае срабатывает подсветка синтаксиса которая зависит от плагина:

highlight: enabled: true lines: true 

TWIG настройки – для тела страниц записей

Автоматические заголовки на основе H1-H6 в теле страницы (Page Toc)

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

В идеале лучше всего прописать данный код:

# PAGE TOC START #> # page-toc: active: true #> if attribute(page.header, 'page-toc').active %> if table_of_contents is not empty %> Содержаниежание# PAGE TOC END #>
userthemesg5_heliumcustomtemplatespartialsblog_item.html.twig

Галерея изображений плагина Unitegallery

Естественно для начала устанавливаем сам плагин, его можно установить из списка доступных плагинов в панели администрирования Grav или загрузить здесь: https://github.com/variar/grav-plugin-unitegallery

После установки и активайии плагина добавляем в нужную страницу изображения данный код:

 div class="modular-row gallery-container >"> > div>

ATOM настройки – для работы с контентом страниц для Grav

Поиск и замена всех изображений по маске для Writage экспортов *.md файлов

При помощи данной операции поиска и замены мы удаляем “media/” в marcdown формате изображений после экспорта из WordPress. Плюс присваиваем классы figure-img и img-fluid для активации отложенной загрузки изображений. За отложенную загрузку изображений ответчает плагин:

Найти (в режиме регулярных выражений):

(![.*]()(media/)(.*)())

Заменить кодом ниже для отображения картинки с ленивой загрузкой и с прмменением лайтбокса плагина FeatherLight:

Заменить кодом ниже только для отображения картинки с ленивой загрузкой:

$1$3?classes=figure-img,img-fluid)

Реультат:

Работа с изображениями

Эскиз страницы:
![ALT Image](https://mediadoma.com/wp-content/uploads/2017/10/VueJs-Click-Events-and-Scrolls-to-Elements-Component-FreebiesMall-768x433.jpg?thumbnail=default&display=thumbnail)

Подробнее о работе с изображениями здесь:

Ubuntu 16.0.4 важные команды

Сборка важных команд для установки обвязки в Grav

Установка PDO sqlite на PHP 7.3

sudo apt-get install php7.3-sqlite sudo service apache2 restart

Установка Memcached на Ubuntu 18.04 & 16.04 LTS

sudo apt-get update sudo apt-get install memcached sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install -y php php-dev php-pear libapache2-mod-php sudo apt-get install -y php-memcached sudo service apache2 restart

Если после смены версии php на 7.3 php файлы загружаются а не исполняются в VebMin & Virtualmin

По сути необходимо закомментировать данные строки:

SetHandler application/x-httpd-php SetHandler application/x-httpd-php-source

Для это окрываем консоль и вводим комманду:

nano /etc/apache2/mods-enabled/php7.3.conf

Дале откроется редактор файлов VebMin, здесь нужно закомментировать сроки приведенные выше. В итоге для исполнения php, файл php7.3.conf должен выглядеть так:

 ".+.ph(ar|p|tml)$"> # SetHandler application/x-httpd-php  ".+.phps$"> # SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied # Deny access to files without filename (e.g. '.php') "^.ph(ar|p|ps|tml)$"> Require all denied # Running PHP scripts in user directories is disabled by default # # To re-enable PHP in user directories comment the following lines # (from to .) Do NOT set it to On as it # prevents .htaccess files from disabling it. /*/public_html> php_admin_flag engine Off 

Далее перезагружаем апачь:

Twig

Этот документ описывает синтаксис и семантику шаблона и будет наиболее полезен для тех, кто создает шаблоны TWIG.

Краткий обзор

Шаблон — это просто текстовый файл. Он может генерировать любой текстовый формат (HTML, XML, CSV, Latex, и т.д.). Он не обязан иметь особого расширения, .html, или .xml расширения подойдут.

Шаблон содержит переменные или выражения, которые будут заменяться значениями, когда шаблон вычисляется, и теги, которые контролируют логику шаблона.

Ниже приводится минимальный шаблон, который иллюстрирует основы. Мы рассмотрим детали позже:

Есть два вида разделителей: И >. Первый из них используется для выполнения операторов, таких как for-циклы , последний печатает результат выражения в шаблон.

Интеграция со средами разработки.

Многие среды разработки поддерживают подсветку синтаксиса и автодополнение для TWIG.

  • Textmate с помощью Twig bundle
  • Vim с помощью Jinja syntax plugin или vim-twig plugin
  • Netbeans с помощью Twig syntax plugin (до версии 7.1, нативно , начиная с версии 7.2)
  • PhpStorm (нативно , начиная с версии 2.1)
  • Eclipse с помощью Twig plugin
  • Sublime Text с помощью Twig bundle
  • GtkSourceView с помощью Twig language definition (используется в gedit и других проектах)
  • Coda иSubEthaEdit с помощью Twig syntax mode
  • Coda 2 с помощью other Twig syntax mode
  • Komodo и Komodo Edit с помощью Twig highlight/syntax check mode
  • Notepad++ с помощью Notepad++ Twig Highlighter
  • Emacs с помощью web-mode.el

Переменные

Приложение передает переменные, с которыми вы можете работать в шаблоне. Переменные могут иметь атрибуты или элементы, к которым вы можете иметь доступ. Как выглядит переменная определяется приложением, которое ее предоставило. Вы можете использовать точку (.) чтобы получить доступ к атрибутам переменной (методы или свойства PHP-объекта или элементы PHP- массива), или так называемый индекс ([]):

Когда атрибут содержит специальные символы (такие как — что будет интерпретировано как оператор вычитания ), используйте функцию attribute вместо доступа к атрибуту переменной.

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

Если переменная или атрибут не существует, вы получите значение null , когда опция strict_variables установлена false, в обратном случае Twig выбросит ошибку.

Реализация

Для удобства foo.bar делает следующие вещи на уровне PHP:

  • проверяет является ли foo массивом и bar верным выражением;
  • если нет, и foo является объектом, проверяется что bar является допустимым свойством
  • если нет, и foo является объектом, проверяется что bar является допустимым методом (даже если bar является конструктором — используйте use__construct() вместо этого)
  • если нет, и foo является объектом, проверяется что getBar является допустимым методом
  • если нет, и foo является объектом, проверяется что isBar является допустимым методом
  • если нет, то возвращает значение null

С другой стороны, foo[‘bar’] работает только с массивами PHP:

  • проверяется, является ли foo массивом и bar допустимым элементом
  • если нет , то возвращает значение null

Если вы хотите получить динамический атрибут для переменной, используйте функцию attribute вместо этого.

Глобальные переменные

Следующие переменные всегда доступны в шаблонах:

  • _self : ссылается на текущий шаблон;
  • _context : ссылается на текущий контекст;
  • _charset : ссылается на текущую кодировку.

Присвоение переменных

Вы можете придать значения переменных внутри блоков кода. Присвоения используют тег set :

Фильтры

Переменные могут быть изменены с помощью фильтров filters. Фильтры отделяются от переменных с помощью pipe-символа (|) и могут иметь дополнительные аргументы в скобках. Можно объединять несколько фильтров. Выход одного фильтра направляется в следующий.

Следующий пример удаляет все HTML-теги и title из name:

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

Чтобы применить фильтр для секции в коде, оберните его с тегом filter:

 This text becomes uppercase

Чтобы узнать больше о встроенных фильтрах зайдите на страницу filters.

Функции

Можно вызывать функции чтобы генерировать контент. Функции могут быть вызваны по имени со скобками после него и могут иметь аргументы.

Например, функция range возвращает список, содержащий арифметическую прогрессию целых чисел:

Чтобы узнать больше о встроенных функциях зайдите на страницу functions.

Именованные аргументы

Использование именованных аргументов помогает понять значение переменных, которые вы передаете как аргументы.

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

Вы также можете использовать позиционные и именованные аргументы в одном вызове, и в этом случае позиционные аргументы должны идти впереди именованных аргументов.

Каждая страница документации по функциям и фильтрам имеет раздел, где имена всех аргументов выписаны, если они поддерживаются.

Управляющая структура

Управляющая структура относится к тем вещам, которые управляют программой — условия (i.e. if/elseif/else), for-циклы и блоки. Управляющая структура появляется внутри блоков .

Например, чтобы показать список всех пользователей, которые записаны в переменной users , используйте тег for:

Тег if можно использовать чтобы проверить выражение:

Чтобы узнать больше о встроенных тегах зайдите на страницу tags.

Комментарии

Чтобы закомментировать часть строки шаблона, используйте комментарий . Это полезно для отладки или для добавления информации для других разработчиков или для себя:

Включение других шаблонов

Тэг include используется для включения шаблона и включению использованного контента к текущему:

По умолчанию включенные шаблоны передаются в текущий контекст.

Контекст, который передается во включенный шаблон включает переменные, определенные в шаблоне:

Включенный шаблон render_box.html может получить доступ к box.

Имя файла шаблона зависит от загрузчика шаблона. Например, Twig_Loader_Filesystem позволяет получить доступ к другим шаблонам по имени. Вы можете включить шаблоны в ниже лежащих директориях используя знак слэша:

Это поведение зависит от приложения, в которое встраивается Twig.

Наследование шаблонов

Наиболее мощное средство Twig это наследование шаблонов. Оно позволяет вам построить базовый «скелет» шаблона,который содержит все общие элементы вашего сайта и определяет блоки, которые дочерние шаблоны могут замещать.

Звучит сложно, но на самом деле все очень просто. Это легко понять с помощью следующего примера.

Давайте определим базовый шаблон, base.html, который определяет простой HTML скелетный документ, который вы можете использовать для простой страницы с двумя колонками:

      - My Webpage   © Copyright 2011 by you.  

В этом примере, теги block определяют четыре блока , которые дочерние шаблоны могут занять. Все , что делает тег block это то, что он говорит механизму шаблонов,что ребенок может замещать те части шаблона.

Шаблон-потомок может выглядеть так:

 Index  > .important  

Index

Тег extends очень важен здесь. Он говорит механизму шаблонов, что этот шаблон «расширяет» другой шаблон. Когда система шаблонов вычисляет этот шаблон, сначала он ищет родителя. Тег extends должен быть первым тегом в шаблоне. Следует заметить, что так как шаблон-ребенок не определяет блок footer , используется значение из родительского шаблона.

Возможно передать содержание родительского шаблона используя функцию parent.

Это дает результаты родительского блока:

 

Table Of Contents

. >

Страница документации для тега extends описывает более сложные особенности , такие как вложенные блоки, области видимости, динамическое наследование и условное наследование.

Twig также поддерживает множественное наследование с так называемым горизонтальным повторным использованием с помощью тега use. Эта сложная особенность вряд ли понадобится в обычных шаблонах.

Экранирование HTML

При генерации HTML из шаблонов всегда есть риск , что переменная будет включать символы, которые будут влиять на конечный HTML. Существует два подхода: вручную сохранять каждую переменную или автоматически сохранить все по умолчанию.

Twig поддерживает оба, автоматическое сохранение включено по умолчанию.

Автоматическое сохранение поддерживается только если расширение escaper включено (что так и есть по умолчанию).

Работа с экранированием вручную

Если сохранение вручную включено, это ваша обязанность сохранить все переменные если это нужно. Что нужно сохранить? Все переменные, которым вы не доверяете.

Сохранение работает , если пропустить переменную через escape или e фильтр:

По умолчанию, фильтр escape использует html метод, но в зависимости от сохраняемого контекста, вы возможно захотите использовать другие методы:

Автоматическое экранирование

Вне зависимости от того, включено ли автоматическое сохранение или нет, вы можете выделить секцию шаблона, которую нужно или не нужно сохранить, используя тег autoescape:

 Everything will be automatically escaped in this block (using the HTML strategy)

По умолчанию, авто-сохранение сохраняет html. Если выводить переменные в других контекстах, нужно явно сохранить их, используя подходящий метод:

 Everything will be automatically escaped in this block (using the JS strategy)
Экранирование

Иногда желательно или даже необходимо заставить Twig игнорировать те части, которые в противном случае он воспримет как переменные или как блоки.

Самым простым способом для вывода переменной разделитель

Макросы

поддержка значений аргументов была добавлена по умолчанию в Twig 1.12.

Макросы сравнимы с функциями в обычных языках программирования. Они полезны для повторного использования часто используемых HTML — фрагментов чтобы не повторять себя. Макрос определяется через macro теги. Вот небольшой пример (впоследствии называемый forms.html) макроса, который представлен в виде элемента формы:

Макрос может быть определен в любом шаблоне, и должен быть «импортирован» через тег import до использования:

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

 Username > Password > 

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

Выражения

Twig позволяет выражения везде. Такая работа очень похожа на обычный PHP и даже если вы не работаете с PHP, вы почувствуете себя с ним комфортно.

Литеры

Самой простой формой выражений являются литералы. Литералы представлены для таких типов PHP, как строки, числа и массивы. Существуют следующие литералы:

  • «Hello World» : Все между двумя двойными или одинарными кавычками является строкой. Они полезны, когда вам нужна строка в шаблоне (например, как аргументы функций,фильтры или для того чтобы просто расширить или включить шаблон). Строка может содержать разделитель, если ему предшествует обратный слеш () — как в ‘It’s good’
  • 42 / 42,23 : Целые числа и числа с плавающей точкой создаются написанием чисел . Если точка есть в числе то это float, в противном случае integer.
  • [«foo», «bar»] : Массивы определяются последовательностью выражений, разделенных запятыми (,) и окруженных квадратными скобками ([]).
  • : Хэши определяется списком ключей и значений, разделенных запятыми (,) и взятых в фигурные скобки (<>):
  • true/false : true представляет истинное значение, false представляет ложное значение.
  • null : null не представляет никакого определенного значения. Это значение возвращается, когда переменной не существует. none является синонимом null.

Массивы и хэши могут быть вложенными:

Использование двойных кавычек или одиночных кавычек не имеет никакого ьвлияния на производительность, но строки интерполяции поддерживается только для строк в двойных кавычках.

Вычисления

Twig позволяет оперировать значениями. Это редко используется в шаблонах, но существует ради полноты. Поддерживаются следующие операторы:

  • + : Добавляет два объекта вместе (операнды преобразованы в числа). > равно 2.
  • — : Вычитает второе число из первого. > равно 1.
  • / : Деление двух чисел. Возвращенное значение будет числом с плавающей точкой. > есть 0,5.
  • % : Вычисляет остаток от целочисленного деления. > есть 4.
  • // : Деление двух чисел и возвращает (в виде дроби) целый результат. > = 2 , > является -3
  • * : Умножает левый операнд на правый. > возвратится 4.
  • ** : Генерирует левый операнд в степень правого операнда. > возвратится 8.

Логика

Вы можете объединить несколько выражений со следующими операторами:

  • and : Возвращает истину, если левый и правый операнды оба истинны.
  • or : Возвращает истину, если левый или правый операнд истинны.
  • not : Отрицает выражение.
  • (expr) : Групипровка вырожений.

Twig также поддерживает побитовые операторы (b-and, b-xor, and b-or).

Сравнения

Следующие операторы сравнения поддерживаются в любом выражении: == , != , < , >, >= и

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

Для сложных сравнений строк, оператор matches позволяет вам использовать регулярные вырожения:

Оператор in

Оператор in осуществляет проверку содержания.

Он возвращает true если левый операнд содержится в правом:

Вы можете использовать этот фильтр, чтобы выполнить проверку на содержание со строками, массивами или объектами, осуществляющих Traversable интерфейс.

Чтобы выполнить проверку на то, что левый операнд не содержится в правом, нужно использовать not in оператор.

Операторы проверки

Оператор is выполняет тесты. Тесты могут быть использованы для тестирования переменной в отношении общего выражения. Правый операнд является именем теста:

Тесты также используют аргументы:

Тесты могут быть инвертированы при использовании is not оператора:

Перейдите на страницу tests чтобы узнать больше о встроенных тестах.

Другие операторы

Поддержка расширенного тройного оператора была добавлена в Twig 1.12.0.

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

  • .. : Создает последовательность, основанную на операнде до и после оператора.
  • | : Применяет фильтр.
  • ~ : Преобразует все операнды в строки и объединяет их. Hello ! вернется (при условии, имя является «John») Hello John!.
  • . , [] : Получает атрибут объекта.
  • ? : : Тернарный оператор оператор: >

Строка интерполяции

Строка интерполяции была добавлена в Twig 1.5.

Строка интерполяция (#) позволяет любое допустимое выражение появляться в двойных кавычках. Результатом вычисления является то что вставляется в строку:

 baz" >> baz" >> 

Управление пробелами

Первая новая строка после тега шаблона удаляется автоматически (как в PHP). Пробелы больше не изменяются механизмом шаблонов, поэтому каждый пробел (пробелы, табуляции, новые строки и т.д.) возвращается без изменений.

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

Twig поддерживает два модификатора:

  • Обрезка пробелов с помощью модификатора — : удаляет все пробелы (включая переводы строк);
  • Обрезка пробелов строк с помощью модификатора ~ : Удаляет все пробелы (за исключением новых строк). Использование этого модификатора справа отключает удаление по умолчанию первой новой строки, унаследованной от PHP.

Модификаторы можно использовать с любой стороны тегов, например, и они занимают все пробелы для этой стороны тега. Можно использовать модификаторы на одной стороне тега или на обеих сторонах:

В дополнение к модификаторам пробелов, Twig также имеет фильтр spaceless , который удаляет пробелы между тегами HTML:

  
foo bar
foo bar
#>

Метка apply была введена в Twig 2.9; используйте тег filter с предыдущими версиями.

Расширения

Twig может быть легко расширен.

Если вы ищете новые теги, фильтры или функции, посмотрите это в официальном хранилище расширений Twig extension repository.

Если вы хотите создать свой собственный, прочтите главу Creating an Extension.

Начните разработку WordPress с помощью Twig: блоки и вложение

В предыдущей статье я писал об интеграции движка шаблонов Twig с WordPress через Timber и о том, как разработчики могут отправлять данные из файлов PHP в файлы Twig. Давайте поговорим о том, как создать базовый шаблон с помощью Twig, о преимуществах этой технологии DRY и о WordPress Cheatsheet Timber-Twig.

Создание базового шаблона в Twig

Twig работает по принципу СУХОЙ (не повторяйся). Одна из наиболее важных особенностей Twig – базовые шаблоны с вложенностью и множественным наследованием . Хотя большинство людей использует PHP линейно, вы можете создавать бесконечные уровни вложенных блоков, чтобы особенно контролировать свои шаблоны страниц.

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

Давайте рассмотрим пример родительского или базового шаблона, файл base.twig . Вы можете поместить его с другими шаблонами Twig в папку представлений. Вы вызываете этот файл в любом из ваших шаблонов Twig, где он используется в качестве родительского шаблона для этого конкретного файла Twig. Введите следующие строки кода, чтобы создать папку представлений. Этот базовый шаблон предоставит базовую структуру для вашей темы WordPress. Вот код простого файла base.twig .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *