|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|||||||||||
Шаблонизация сайта21.12.2019, 18:58. Показов 2361. Ответов 44
Метки нет (Все метки)
Сижу, вот, шаблонизирую сайт. Сверстал шаблон страницы с динамическими вставками типа
А теперь сижу и думаю, нафига я это всё нагородил вместо элементарного
0
|
|||||||||||
| 21.12.2019, 18:58 | |
|
Ответы с готовыми решениями:
44
XLS шаблонизация Шаблонизация вывода в html или как там это называют? Шаблонизация интерактивов |
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
|||||||
| 21.12.2019, 19:42 | |||||||
|
ChildOfFlowers, у вас правильно. Только при таком "echo" точку с запятой обычно не ставят.
Шаблонизатор над PHP обычно нужен для людей, далеких от Web-разработки, чтобы они ничего "не сломали глобально" и "не понаделали дыр". Разработчики же вполне могут использовать родной синтаксис PHP. (Для шаблонов обычно используется т.н. альтернативный синтаксис, элемент которого вы показали.) Добавлено через 11 минут Даже если вы уверены, что HTML-кодирование не требуется, могут понадобиться функции изменения формата, "обрезания" и т.п. Например, вот я недавно переводил с Ликуида (Liquid):
1
|
|||||||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
||
| 21.12.2019, 19:49 [ТС] | ||
|
0
|
||
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
|||||||||||||||||||||
| 21.12.2019, 20:52 | |||||||||||||||||||||
|
Тому, что "дёргается" из БД, может, специальные функции локализации в шаблоне и не нужны. Они скорее нужны тексту, который является частью шаблона. Например, при переводе того же шаблона я не сделал какую-либо локализацию текста "Related Posts" (хотя мог бы):
Добавлено через 30 минут В принципе к "Related Posts" можно было подойти, как к каким-нибудь общим данным шаблона/сайта (вроде того же телефона). Например:
0
|
|||||||||||||||||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 21.12.2019, 21:06 | |
|
Вообще в идеале, должен быть отдельный слой презентаторов, которые приводят все данные в нужный формат для вывода, но это в идеале, так сказать "по книжке". А в шаблоне вы просто выводите. Нужно для работы фронтендеров, чтоб не захламлять верстку излишней логикой. Тем более, что сайты могут писать не только на php. А фронтэндеров это вообще не должно касаться.
Еще шаблонизатор нужен для дисциплины. Если вы пишете для себя это одно, вы сами можете следить, чтоб в шаблоне не было ничего лишнего. А вот когда разрабатывается крупное приложение несколькими программистами, то там проще ограничить саму возможность, а то многие бывают ленивые и напишут прям в шаблоне всякую дичь. В любом случае, свой шаблонизатор не нужен. Ведь php изначально и есть шаблонизатор. Так что либо пишите на php, либо тогда уже используйте какой-нибудь популярный шаблонизатор типа twig, чтоб на нем могли работать не только вы) Причем это достаточно сложная система. Потратите кучу времени впустую. Еще к примеру при выводе нужно всегда обрабатывать данные, чтоб не было никаких Инъекций. В twig-е все выводы по умолчанию обрабатываются. А в php вам приходится постоянно оборачивать данные в какой-нибудь статический метод для вывода.
0
|
|
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
|
| 21.12.2019, 21:34 | |
|
estic,
а я сделал через {тег}, заменяемый итоговой $content, собираемой используемым модулем. В итоге html полностью чистый, только в нужных местах {тег} ставить нужно.
0
|
|
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
|
| 21.12.2019, 21:57 | |
|
AlexNewaro, насколько я понял автора, мы все же о полноценной шаблонизации говорим, а не о замене ":рhone:" на значение $phone и т.п., несмотря на его пример.
Добавлено через 5 минут К тому же, как верно заметил автор, {content} ненамного лучше <?= $content ?> (если вообще лучше), чтобы из-за этого добавлять дополнительный слой представления.
0
|
|
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
|
| 21.12.2019, 22:08 | |
|
estic,
Ну у меня набор tpl файлов, подключаемых к модулю (можно переназначать на любые). В них как раз {content} или {top_banner} или что угодно. А в модуле формируется наполнение для соответствующих переменных
0
|
|
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
||
| 21.12.2019, 22:17 | ||
|
В каких-то шаблонизаторах перестраховываются, кодируя все подряд (хотя там тоже нужны обходные пути, чтобы при необходимости не заниматься глупостями вроде декодирования после кодирования), в каких-то используют специальные скобки или дублирование скобок. В использовании отдельных шаблонизаторов определенно есть смысл, раз они получили достаточно большую популярность. Но автор писал немного о другом: зачем изобретать свой велосипед, когда можно использовать возможности самого PHP?! Добавлено через 6 минут AlexNewaro, я тебя не понимаю. Т.е. ничего сильно примечательного в твоих словах не вижу (извини за грубость ). В обычном PHP на месте <?= $content ?> тоже спокойно может отображаться результат выполнения какого-то другого шаблона. Если я правильно тебя понял.
0
|
||
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
|
| 21.12.2019, 22:31 | |
|
estic,
Какие обиды )Я просто поделился как у меня сделано, я ж никогда не претендую на звание умейки ![]() Я потому и стараюсь писать только в разделе для новичков, потому что сам новичок ))Но считаю пусть поисковик проиндексирует, вдруг кому-то пригодится )А отдельные файлики tpl я сделал для универсализации и для удобства дизайнера своего
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|||
| 21.12.2019, 22:34 | |||
|
0
|
|||
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
||
| 21.12.2019, 22:54 | ||
|
0
|
||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 21.12.2019, 23:07 | |
|
estic, Тут о ресурсах задумываться не стоит. Сейчас серваки достаточно мощные, да и железяки дешевле, чем работа программистов. Ну сколько вы выиграете микросекунд, стоит ли это потраченного вашего времени, да и в дальнейшем это только усложняет разработку, соответственно опять же удораживает поддержку.
Хранить нужно как есть. А следить при выводе. Даже если вы заморочитесь, и будете хранить в бд закодированный текст. В шаблоне вы все равно не будете уверены, какие данные у вас безопасные, а какие нет. И тут лучше еще раз будет подстраховаться. А смысл тогда хранить эти данные в таком виде?)
0
|
|
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
||||
| 21.12.2019, 23:34 | ||||
|
sad67man, если вы будете при выводе еще и фильтровать потенциально небезопасные теги (коими являются практически все теги, т.к. к ним можно добавить атрибуты с кодом на JS и т.п.), даже ресурсов достаточно мощного сервера может не хватить
![]() Например, как вы храните отформатированный текст, о котором я выше писал?Добавлено через 2 минуты ![]() Добавлено через 1 минуту
0
|
||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
||
| 21.12.2019, 23:43 | ||
|
estic,
0
|
||
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
|
| 21.12.2019, 23:45 | |
|
В общем я понимаю, о чем вы. Просто периодически приходится иметь дело с людьми, которые делают все шаблонно и не могут даже поверхностно обосновать, почему нужно делать именно так и никак иначе
Вы, видимо, к ним не относитесь. Поэтому подумайте над моими аргументами в пользу того, что это можно сделать иначе, нежели так, как вы привыкли.Не по теме: Спокойной ночи.
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 21.12.2019, 23:47 | |
|
estic,
Не по теме: Главное, чтоб мы не запутали автора темы)
0
|
|
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,890
|
||
| 21.12.2019, 23:55 | ||
|
BBCode - это лишь один из форматов хранения/редактирования. HTML тут тоже вполне уместен.
0
|
||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 21.12.2019, 23:59 | |
|
estic, Мне кажется это самый оптимальный вариант. Помню как-то давно, было у меня подобное тестовое задание. Типо гостевой книги, и там были разрешены определенные теги для написания сообщений. И что? Я буду вырезать все ненужное, думать о том, а что еще там может быть? Проще сделать через bbcode, просто сначала закодировать все, потом заменить разрешенные bbcode на теги при создании сообщения. То, что есть и редакторы, которые напрямую работуют с html я знаю, но они больше подходят для админки. А не для пользователей)
0
|
|
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
|
| 22.12.2019, 00:00 | |
|
estic,
я понял одно - я лопух ![]() Я храню в базе принятое от редактора, пропущенное только через фильтр нежелательных слов, trim, mysqli_real_escape_string и с заменой кавычек на двойные (в случае, если в редактор скопипастили что-то). И спокойно оттуда забираю в редактор обратно прямо из базы как есть.
0
|
|
| 22.12.2019, 00:00 | |
|
Помогаю со студенческими работами здесь
20
FastCGI и шаблонизация Шаблонизация указателя на метод класса Индексация сайта: можно ли настроить отображение сайта в Google при поиске Изменяю файл hosts, ставлю напротив сайта ip адрес другого сайта Интерактивный таймер обратного отчета на страницу сайта (не для сайта заглушки) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|