mirror of
https://github.com/anthonyaxenov/iptv.git
synced 2024-11-22 05:24:45 +00:00
Перевёрстан faq, удалены лишние файлы, composer-скрипнт для очистки кеша twig
This commit is contained in:
parent
bd0538854c
commit
11b45444c7
@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types = 1);
|
|
||||||
|
|
||||||
use App\Core\Bootstrapper;
|
|
||||||
|
|
||||||
// autoload composer packages
|
|
||||||
require 'vendor/autoload.php';
|
|
||||||
|
|
||||||
// load .env parameters
|
|
||||||
Bootstrapper::bootEnv();
|
|
||||||
|
|
||||||
// set up framework according to its config
|
|
||||||
Bootstrapper::bootSettings();
|
|
||||||
|
|
||||||
// set up Twig template engine
|
|
||||||
Bootstrapper::bootTwig();
|
|
||||||
|
|
||||||
// set up routes defined in config file
|
|
||||||
Bootstrapper::bootRoutes();
|
|
@ -10,9 +10,12 @@
|
|||||||
"App\\": "app/"
|
"App\\": "app/"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"helpers.php"
|
"app/helpers.php"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"scripts": {
|
||||||
|
"clear-views": "docker exec -ti iptv-php rm -rf cache/views"
|
||||||
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"optimize-autoloader": true,
|
"optimize-autoloader": true,
|
||||||
"sort-packages": true
|
"sort-packages": true
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types = 1);
|
|
||||||
|
|
@ -2,12 +2,28 @@
|
|||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types = 1);
|
||||||
|
|
||||||
|
use App\Core\Bootstrapper;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Bootstrap all classes, settings, etc.
|
| Bootstrap all classes, settings, etc.
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
require '../bootstrap.php';
|
|
||||||
|
// autoload composer packages
|
||||||
|
require '../vendor/autoload.php';
|
||||||
|
|
||||||
|
// load .env parameters
|
||||||
|
Bootstrapper::bootEnv();
|
||||||
|
|
||||||
|
// set up framework according to its config
|
||||||
|
Bootstrapper::bootSettings();
|
||||||
|
|
||||||
|
// set up Twig template engine
|
||||||
|
Bootstrapper::bootTwig();
|
||||||
|
|
||||||
|
// set up routes defined in config file
|
||||||
|
Bootstrapper::bootRoutes();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<p>
|
<p>
|
||||||
На этой странице собраны ссылки на IPTV-плейлисты, которые находятся в открытом доступе.
|
В этом сервисе собраны ссылки на IPTV-плейлисты, которые находятся в открытом доступе.
|
||||||
Они отбираются вручную и постоянно проверяются здесь автоматически.
|
Они отбираются вручную и постоянно проверяются здесь автоматически.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@ -24,8 +24,15 @@
|
|||||||
тем, кто несёт за них ответственность (см. источники плейлистов).
|
тем, кто несёт за них ответственность (см. источники плейлистов).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3>Как пользоваться сервисом?</h3>
|
<div class="accordion" id="faq-accordion">
|
||||||
<p class="mb-5">
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-howtouse">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howtouse" aria-expanded="false" aria-controls="howtouse">
|
||||||
|
Как пользоваться сервисом?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="howtouse" class="accordion-collapse collapse" aria-labelledby="h-howtouse" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
На главной странице отображается список доступных в плейлистов, их идентификаторы, статусы,
|
На главной странице отображается список доступных в плейлистов, их идентификаторы, статусы,
|
||||||
количество каналов и короткие ссылки.
|
количество каналов и короткие ссылки.
|
||||||
Для просмотра списка каналов следует нажать на ссылку <b>"Подробнее..."</b> под интересующим плейлистом.
|
Для просмотра списка каналов следует нажать на ссылку <b>"Подробнее..."</b> под интересующим плейлистом.
|
||||||
@ -34,17 +41,39 @@
|
|||||||
На странице детальной информации также есть прямая ссылка на сам плейлист от источника.
|
На странице детальной информации также есть прямая ссылка на сам плейлист от источника.
|
||||||
Можно использовать и её.
|
Можно использовать и её.
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
<h3>Эти плейлисты и каналы в них -- бесплатны?</h3>
|
</div>
|
||||||
<p class="mb-5">Возможно. По крайней мере, так утверждают источники. Но гарантий никаких никто не даёт.</p>
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-howtoconnect">
|
||||||
<h3>Как подключить плейлист?</h3>
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howtoconnect" aria-expanded="false" aria-controls="howtoconnect">
|
||||||
<p class="mb-5">
|
Как подключить плейлист?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="howtoconnect" class="accordion-collapse collapse" aria-labelledby="h-howtoconnect" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">Возможно. По крайней мере, так утверждают источники. Но гарантий никаких никто не даёт.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-isitfree">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#isitfree" aria-expanded="false" aria-controls="isitfree">
|
||||||
|
Эти плейлисты и каналы в них -- бесплатны?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="isitfree" class="accordion-collapse collapse" aria-labelledby="h-isitfree" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
<a href="https://www.google.com/search?q=%D0%BA%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20iptv%20%D0%BF%D0%BB%D0%B5%D0%B9%D0%BB%D0%B8%D1%81%D1%82%20%D0%BF%D0%BE%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5">
|
<a href="https://www.google.com/search?q=%D0%BA%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20iptv%20%D0%BF%D0%BB%D0%B5%D0%B9%D0%BB%D0%B8%D1%81%D1%82%20%D0%BF%D0%BE%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5">
|
||||||
Добавь в свой медиаплеер</a> "Ссылку для ТВ".
|
Добавь в свой медиаплеер</a> "Ссылку для ТВ".
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
<h3>Какие плейлисты попадают сюда?</h3>
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-which">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#which" aria-expanded="false" aria-controls="which">
|
||||||
|
Какие плейлисты попадают сюда?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="which" class="accordion-collapse collapse" aria-labelledby="h-which" data-bs-parent="#faq-accordion">
|
||||||
|
<div class="accordion-body">
|
||||||
<p>Есть некоторые критерии, по которым плейлисты отбираются в этот список:</p>
|
<p>Есть некоторые критерии, по которым плейлисты отбираются в этот список:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Прежде всего -- каналы РФ и бывшего СНГ, но не только</li>
|
<li>Прежде всего -- каналы РФ и бывшего СНГ, но не только</li>
|
||||||
@ -57,8 +86,17 @@
|
|||||||
(мульт)фильмов и передач, находящихся на чужих дисках (как если бы вы сами составили плейлист с музыкой,
|
(мульт)фильмов и передач, находящихся на чужих дисках (как если бы вы сами составили плейлист с музыкой,
|
||||||
например).
|
например).
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
<h3>Что означают статусы плейлистов?</h3>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-statuses">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#statuses" aria-expanded="false" aria-controls="statuses">
|
||||||
|
Что означают статусы плейлистов?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="statuses" class="accordion-collapse collapse" aria-labelledby="h-statuses" data-bs-parent="#faq-accordion">
|
||||||
|
<div class="accordion-body">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<span class="badge small text-dark bg-secondary">loading</span>
|
<span class="badge small text-dark bg-secondary">loading</span>
|
||||||
@ -81,35 +119,43 @@
|
|||||||
Ошибка при проверке плейлиста. Пора удалять плейлист отсюда.
|
Ошибка при проверке плейлиста. Пора удалять плейлист отсюда.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p class="mb-5">
|
<p>
|
||||||
На странице детального описания статус может отображаться только online/offline.
|
На странице детального описания статус может отображаться только online/offline.
|
||||||
Это временно. В некоем скором времени это будет доработано.
|
Это временно. В некоем скором времени это будет доработано.
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
<h3>Почему нельзя доверять результатам проверки?</h3>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-donttrust">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#donttrust" aria-expanded="false" aria-controls="donttrust">
|
||||||
|
Почему нельзя доверять результатам проверки?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="donttrust" class="accordion-collapse collapse" aria-labelledby="h-donttrust" data-bs-parent="#faq-accordion">
|
||||||
|
<div class="accordion-body">
|
||||||
<p>
|
<p>
|
||||||
Я не гарантирую корректность и актуальность информации, которую ты увидишь здесь.
|
Я не гарантирую корректность и актуальность информации, которую ты увидишь здесь.
|
||||||
Хотя я и стараюсь улучшать качество проверок, но всё же рекомендую проверять желаемые
|
Хотя я и стараюсь улучшать качество проверок, но всё же рекомендую проверять желаемые
|
||||||
плейлисты самостоятельно вручную, ибо нет никаких гарантий:
|
плейлисты самостоятельно вручную, ибо нет никаких гарантий:
|
||||||
</p>
|
</p>
|
||||||
<ul class="mb-5">
|
<ul>
|
||||||
<li>
|
<li>что это вообще плейлисты, а не чьи-то архивы с мокрыми кисками;</li>
|
||||||
что это вообще плейлисты, а не чьи-то архивы с мокрыми кисками;
|
<li>что плейлисты по разным ссылкам не дублируют друг друга и отличаются каналами хотя бы на четверть;</li>
|
||||||
</li>
|
<li>что плейлист работоспособен (каналы работают, корректно названы, имеют аудио, etc.);</li>
|
||||||
<li>
|
<li>что подгрузится корректное количество каналов и их список (хотя на это я ещё могу влиять и стараюсь как-то улучшить).</li>
|
||||||
что плейлисты по разным ссылкам не дублируют друг друга и отличаются каналами хотя бы на четверть;
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
что плейлист работоспособен (каналы работают, корректно названы, имеют аудио, etc.);
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
что подгрузится корректное количество каналов и их список (хотя на это я ещё могу влиять и
|
|
||||||
стараюсь как-то улучшить).
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
<h3>Какова гарантия, что я добавлю себе плейлист отсюда и он работать хоть сколько-нибудь долго?</h3>
|
</div>
|
||||||
<p class="mb-5">
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-guarantee">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#guarantee" aria-expanded="false" aria-controls="guarantee">
|
||||||
|
Какова гарантия, что я добавлю себе плейлист отсюда и он работать хоть сколько-нибудь долго?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="guarantee" class="accordion-collapse collapse" aria-labelledby="h-guarantee" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
Никакова.
|
Никакова.
|
||||||
Мёртвые плейлисты я периодически вычищаю, реже -- добавляю новые.
|
Мёртвые плейлисты я периодически вычищаю, реже -- добавляю новые.
|
||||||
ID плейлистов могут меняться, поэтому вполне может произойти внезапная подмена одного другим, однако
|
ID плейлистов могут меняться, поэтому вполне может произойти внезапная подмена одного другим, однако
|
||||||
@ -118,32 +164,76 @@
|
|||||||
новый.
|
новый.
|
||||||
Плюс читай выше про доверие результатам проверки (проблема может быть не стороне сервиса).
|
Плюс читай выше про доверие результатам проверки (проблема может быть не стороне сервиса).
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
<h3>Где взять программу передач (EPG)?</h3>
|
</div>
|
||||||
<ul class="mb-5">
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-epg">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#epg" aria-expanded="false" aria-controls="epg">
|
||||||
|
Где взять программу передач (EPG)?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="epg" class="accordion-collapse collapse" aria-labelledby="h-epg" data-bs-parent="#faq-accordion">
|
||||||
|
<div class="accordion-body">
|
||||||
|
<ul>
|
||||||
<li><b>https://iptvx.one/viewtopic.php?f=12&t=4</b></li>
|
<li><b>https://iptvx.one/viewtopic.php?f=12&t=4</b></li>
|
||||||
<li>https://iptvmaster.ru/epg-for-iptv</li>
|
<li>https://iptvmaster.ru/epg-for-iptv</li>
|
||||||
<li>https://google.com</li>
|
<li>https://google.com</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
<h3>Как часто обновляется этот список?</h3>
|
</div>
|
||||||
<p class="mb-5">
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-howoftenlist">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howoftenlist" aria-expanded="false" aria-controls="howoftenlist">
|
||||||
|
Как часто обновляется этот список?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="howoftenlist" class="accordion-collapse collapse" aria-labelledby="h-howoftenlist" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
Время от времени.
|
Время от времени.
|
||||||
Иногда я захожу сюда и проверяю всё ли на месте, иногда занимаюсь какими-то доработками.
|
Иногда я захожу сюда и проверяю всё ли на месте, иногда занимаюсь какими-то доработками.
|
||||||
Если есть кандидаты на добавление, то читай ниже.
|
Если есть кандидаты на добавление, то читай ниже.
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
<h3>Как часто обновляется содержимое плейлистов?</h3>
|
</div>
|
||||||
<p class="mb-5">Зависит от источника. Я этим не занимаюсь.</p>
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-howoftench">
|
||||||
<h3>Есть ли API? Как им пользоваться?</h3>
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howoftench" aria-expanded="false" aria-controls="howoftench">
|
||||||
<p class="mb-5">Есть, подробности <a href="https://github.com/anthonyaxenov/iptv2#api">здесь</a>.</p>
|
Как часто обновляется содержимое плейлистов?
|
||||||
|
</button>
|
||||||
<h3>Как пополнить этот список?</h3>
|
</h2>
|
||||||
<p class="mb-5">
|
<div id="howoftench" class="accordion-collapse collapse" aria-labelledby="h-howoftench" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
|
Зависит от источника. Я этим не занимаюсь.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-api">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#api" aria-expanded="false" aria-controls="api">
|
||||||
|
Есть ли API? Как им пользоваться?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="api" class="accordion-collapse collapse" aria-labelledby="h-api" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
|
Есть, подробности <a href="https://github.com/anthonyaxenov/iptv2#api">здесь</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="accordion-item bg-dark">
|
||||||
|
<h2 class="accordion-header bg-dark" id="h-howtoadd">
|
||||||
|
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howtoadd" aria-expanded="false" aria-controls="howtoadd">
|
||||||
|
Как пополнить этот список?
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="howtoadd" class="accordion-collapse collapse" aria-labelledby="h-howtoadd" data-bs-parent="#faq-accordion">
|
||||||
|
<p class="accordion-body">
|
||||||
Сделать pull-request в <a href="https://github.com/anthonyaxenov/iptv">репозиторий</a>.
|
Сделать pull-request в <a href="https://github.com/anthonyaxenov/iptv">репозиторий</a>.
|
||||||
Я проверю плейлист и добавлю его в общий список, если всё ок.
|
Я проверю плейлист и добавлю его в общий список, если всё ок.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -3,37 +3,41 @@
|
|||||||
<head>
|
<head>
|
||||||
<title>{{ config('app.title') }}</title>
|
<title>{{ config('app.title') }}</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="Самообновляемые бесплатные IPTV-плейлисты для домашнего просмотра по коротким ссылкам, списки каналов, проверка доступности">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
<link href="{{ base_url('css/bootstrap.min.css') }}" rel="stylesheet">
|
<link href="{{ base_url('css/bootstrap.min.css') }}" rel="stylesheet">
|
||||||
<style>.cursor-pointer {
|
<style>.cursor-pointer{cursor:pointer}</style>
|
||||||
cursor: pointer
|
|
||||||
}</style>
|
|
||||||
{% block head %}{% endblock %}
|
{% block head %}{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-dark text-light">
|
<body class="bg-dark text-light">
|
||||||
<div class="col-lg-8 mx-auto p-3 pt-md-5 pb-0">
|
<div class="col-lg-8 mx-auto p-3 pt-md-5 pb-0">
|
||||||
<header class="pb-3 mb-3">
|
<header class="mb-3">
|
||||||
<a href="/" class="text-light text-decoration-none">
|
<h1 data-bs-toggle="tooltip" data-bs-placement="top" title="На главную">
|
||||||
<h1>{{ config('app.title') }}</h1>
|
<a href="{{ base_url() }}" class="text-light text-decoration-none">
|
||||||
|
{{ config('app.title') }}
|
||||||
</a>
|
</a>
|
||||||
<p class="small text-muted">
|
</h1>
|
||||||
<a class="small" href="{{ base_url('faq') }}">FAQ</a> | <a
|
<p class="text-muted">
|
||||||
class="small" href="https://github.com/anthonyaxenov/iptv">GitHub</a> | <a
|
<a href="{{ base_url('faq') }}">FAQ</a> | <a
|
||||||
class="small" href="https://axenov.dev">axenov.dev</a>
|
href="https://github.com/anthonyaxenov/iptv">GitHub</a> | <a
|
||||||
|
href="https://git.axenov.dev/anthony/iptv">Gitea</a> | <a
|
||||||
|
href="https://axenov.dev">axenov.dev</a>
|
||||||
</p>
|
</p>
|
||||||
{% block header %}{% endblock %}
|
{% block header %}{% endblock %}
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container mx-auto">
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="py-4 text-center">
|
<footer class="py-4 text-center">
|
||||||
<a href="https://github.com/anthonyaxenov/iptv">GitHub</a> | <a href="https://axenov.dev">axenov.dev</a>
|
|
||||||
<script src="{{ base_url('js/bootstrap.bundle.min.js') }}"></script>
|
<script src="{{ base_url('js/bootstrap.bundle.min.js') }}"></script>
|
||||||
{% block footer %}{% endblock %}
|
{% block footer %}{% endblock %}
|
||||||
|
<a href="{{ base_url('faq') }}">FAQ</a> | <a
|
||||||
|
href="https://github.com/anthonyaxenov/iptv">GitHub</a> | <a
|
||||||
|
href="https://git.axenov.dev/anthony/iptv">Gitea</a> | <a
|
||||||
|
href="https://axenov.dev">axenov.dev</a>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user