Foren / National / Russian / Тех. поддержка / Проверить include на существование

Kopusha
#1 2. Juli 2020, 20:26
<!-- IF {FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/includes/countries/cu/menu.tpl"}   -->
{FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/includes/countries/cu/menu.tpl"}        
<!-- ENDIF -->

не работает, если там нет файла tpl мне выдает в основном тпл текст
themes/beta/includes/countries/cu/menu.tpl
Как сделать что бы была проверка и если файл есть то давало его, если нет то ничего.

Спасиб!

Edward
#2 3. Juli 2020, 06:39

Надо лезть в шаблонизатор.

А какой в этой проверке смысл? С таким же успехом может пропасть шалон page.system, например. И вместо него будет выведен треш по умолчанию. Этот шаблон должен быть на месте, если предусмотрен.

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

Решил так:

function seos_get_file_content($domain = 'default_domain', $cat = 'index', $file = '') {
    $file_path = 'datas/files/seos/' . $domain . '/' . $cat . '/' . $file;
     
    if (!is_file($file_path)){
        return false;
    }
     
    try {
        $content = file_get_contents($file_path);
 
        if ($content === false) {
            // Handle error
            return false;
        }
 
        return $content;
 
    } catch (Exception $e) {
        // Handle exception
        return false;
    }
}

Естественно в этом случае теги внутри включаемого файла не парсятся.

Email: ed.gabishev@gmail.com
Telegram: https://t.me/Ed_Gaba
jCube Group
#3 3. Juli 2020, 07:14
#44958 Kopusha:
<!-- IF {FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/includes/countries/cu/menu.tpl"}   -->
{FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/includes/countries/cu/menu.tpl"}        
<!-- ENDIF -->

не работает, если там нет файла tpl мне выдает в основном тпл текст
themes/beta/includes/countries/cu/menu.tpl
Как сделать что бы была проверка и если файл есть то давало его, если нет то ничего.

Спасиб!

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

<!-- IF {PHP|file_exists("themes/default/includes/countries/cu/menu.tpl")}   -->
{FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/includes/countries/cu/menu.tpl"}        
<!-- ENDIF -->
Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
Kopusha
#4 3. Juli 2020, 09:55

Ну я ночью поигрался пришел к примерно такому же сам выводу

Или костыли или тупо сделать 248 пустых инклудов что бы они были и заполнять по мере прихода контента эти инклуды