- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Имеется свой шаблонизатор skn. Если кратко описать его работу - он имеет методы compl (собирает в html-шаблоне теги вида [%tag%] и присваивает им значения) и метод load который загружает html-файл в строку для дальнейшей обработки. Этот шаблонизатор меня полностью устраивает, но возникла потребность идентификации методов compl.
Нример если взять один из классов-модулей моей cms, - Main. Здесь есть три метода compl которые нужно идентифицировать и как-то передать третий параметр идентичный имени параметру из метода load('main.tpl');
То есть должно быть так:
$this->skn->compl('[%info%]', 'INFORM', 'main.tpl');
$this->skn->compl('[%content%]', 'CONTENT', 'main.tpl');
$this->skn->compl('[%footer%]', 'FOOTER. 'main.tpl');
Можно этот третий параметр прописывать в ручную, но если таких методов compl десятки и больше и 'main.tpl' нужно постоянно добавлять и повторять - это будить не правильно.
Вопрос: Как методам compl можно передать третий параметр идентичный с именем параметра метода load('main.tpl'), который в еще добавок выполняется самом конце после всех compl ?
Использование __CLASS__ иил get_called_class() не подходить, поскольку всегда будет выдавать имя класса шаблонизатора - Skn
Используйте аргументы функции и переменные класса.
А вы сделайте, чтобы compl не "собирал тэги", а просто составлял массив (член класса вашего шаблонизатора) для замен в будущем. А метод load потом по этому массиву пусть "собирает", после чего делает что раньше делал.
А вы сделайте, чтобы compl не "собирал тэги", а просто составлял массив (член класса вашего шаблонизатора) для замен в будущем. А метод load потом по этому массиву пусть "собирает", после чего делает что раньше делал.
Не совсем понял что Вы имеете ввиду. По сути все методы compl в шаблонизаторе создает свойство- массив $this->skn->data;
далее происходить замены на основе массива $this->data в строке которая получена с помощью метода : load('main.tpl');
Не совсем понял что Вы имеете ввиду. По сути все методы compl в шаблонизаторе создает свойство- массив
Это я и имел ввиду - значит у вас уже так и есть. Тогда непонятно, зачем передавать в compl имя шаблона main.tpl, когда в методе load он становится известен и вся работа уже проводится там?
Это я и имел ввиду - значит у вас уже так и есть. Тогда непонятно, зачем передавать в compl имя шаблона main.tpl, когда в методе load он становится известен и вся работа уже проводится там?
Это связано с тем что мне нужно идентифицировать каждое compl своему шаблону, потому что если этого не сделать и рассматривать код в целом, происходят не контролированные подмены идентичных тегов в шаблонах. А нужно каждому шаблону html принадлежать только свои теги.
Ну например если взять выше мой пример можно увидеть тег [%info%] который встречается в двух модулях Login и Main, что в конечном результате приводит перезапись перемены из $this->skn->compl('[%info%]', 'INFORM222');
в $this->skn->compl('[%info%]', 'INFORM');
Я могу вам сбросить папку тестового скрипта с локального сервера для наглядности.