From d2da7a51ac455a1884509879babd6df5f7a282f7 Mon Sep 17 00:00:00 2001 From: Karel Wintersky Date: Thu, 27 Apr 2023 17:40:38 +0300 Subject: [PATCH] 1.0.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [*] метод `setTemplate` теперь может принимать значение null * [+] метод `addTitle` добавляет строку в массив заголовков * [+] метод `makeTitle` строит результирующий заголовок как строку --- src/Template.php | 26 ++++++++++++++++++++++++-- src/TemplateInterface.php | 25 +++++++++++++++++++++---- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/Template.php b/src/Template.php index b3fdd65..4812e4a 100644 --- a/src/Template.php +++ b/src/Template.php @@ -28,6 +28,8 @@ class Template implements TemplateInterface */ public array $titles = []; + public array $breadcumbs = []; //@todo like as title (set of ['uri' => ..., 'title' => ...], на основе его можно строить и title + private array $REQUEST = []; private array $template_vars = []; @@ -148,9 +150,9 @@ public function makeRedirect(string $uri = null, int $code = null, bool $replace exit(0); } - public function setTemplate(string $filename) + public function setTemplate($filename = null) { - $this->template_file = $filename; + $this->template_file = empty($filename) ? '' : $filename; } public function sendHeader(string $type = '') @@ -234,5 +236,25 @@ public function render($send_header = false, $clean = false):string } + public function addTitle(string $title_part) + { + $this->titles[] = $title_part; + } + + + public function makeTitle(string $separator = " ", bool $sort = true, bool $reverse_order = false) + { + $t = $this->titles; + + if ($sort) { + ksort($t); + } + + if ($reverse_order) { + $t = array_reverse($t); + } + return implode($separator, $t); + } + } \ No newline at end of file diff --git a/src/TemplateInterface.php b/src/TemplateInterface.php index 1e62bb3..95f9048 100644 --- a/src/TemplateInterface.php +++ b/src/TemplateInterface.php @@ -99,12 +99,13 @@ public function isRedirect():bool; public function makeRedirect(string $uri = null, int $code = null, bool $replace_headers = true); /** - * Устанавливает файл шаблона + * Устанавливает файл шаблона. + * Без него возможен только рендер Template::CONTENT_TYPE_JSON * - * @param string $filename + * @param string|null $filename * @return void */ - public function setTemplate(string $filename); + public function setTemplate($filename = null); /** * Посылает header, соответствующий типу контента @@ -131,7 +132,23 @@ public function assignJSON(array $json); */ public function clean(); + /** + * Добавляет title в цепочку title'ов + * + * @param string $title_part + * @return void + */ + public function addTitle(string $title_part); - + /** + * Строит результирующий title страницы с учетом вложенности. + * Может быть использован также для остройки og:title + * + * @param string $separator + * @param bool $sort + * @param bool $reverse_order + * @return string + */ + public function makeTitle(string $separator = " ", bool $sort = true, bool $reverse_order = false); } \ No newline at end of file