Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9

Smarty include

07.05.2013, 16:16. Показов 2733. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть темплейт с версткой,
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
    <div id="main">
        <div id="header">
            <a href="/"id="header_logo"></a>
            <div id="header_logo_19"></div>
            <div id="header_slogan">Откройте жизнь без аллергии</div>
            <input id="search" type="text"/>
            
        </div>
        <div id="menu">
            {include file="build/menu.tpl"}
        </div>
и т.д.
я в эту верстку вставляю инклудом кусок из другого темплейта,

HTML5
1
2
3
4
5
<ul>
    {foreach from=$menu key=key item=i}
        <li><a href="{$i.link}">{$i.name}</a></li>
    {/foreach}
</ul>
но этот кусок вставляется не туда, где прописан инклуд, то есть после <div id="menu">, а после <body> в начале страницы. Почему? И как исправить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2013, 16:16
Ответы с готовыми решениями:

Warning: include(1) [function.include]: failed to open stream: No such file or directory in
Выдает вот такую ошибку Warning: include(1) : failed to open stream: No such file or directory in...

Warning: include(templates.php) [function.include]: failed to open stream: No such file or directory
Как исправить ошибку, этот текст выдает на главной странице

Warning: include(Z:/home/localhost/www/layout/header.php) [function.include]: failed to open stream: No such f
Столкнулся с такой проблемой не инклудится файл include $g_site_root.'/layout/header.php';?&gt;,пишет нет такого файла или папки,но все есть и...

17
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
07.05.2013, 17:31
Возможно тег где то не закрыли
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
07.05.2013, 18:23  [ТС]
Что самое интересное, теги ul до и после форича он рисует на нужном месте.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
07.05.2013, 18:27
мистика.. За два годы работы, у меня не было такого. Открывайте в браузере получившийся исходный html код страницы. Смотрите чтобы все парные теги были закрыты или не было лишних.

А второй шаблон который подключаете, это весь?
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
07.05.2013, 20:27  [ТС]
да, весь. С тегами порядок.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script src="js/jquery.anythingslider.js" type="text/javascript" charset="utf-8"></script>
    <link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700,700italic,400italic&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    <link rel="stylesheet" href="css/fonts.css" type="text/css" />
    <link rel="stylesheet" href="css/anythingslider.css" type="text/css" media="screen" />
</head>
<body>
    <div id="main">
        <div id="header">
            <a href="/"id="header_logo"></a>
            <div id="header_logo_19"></div>
            <div id="header_slogan">Откройте жизнь без аллергии</div>
            <div id="lupa"></div>
            <input id="search" type="text"/>
            
        </div>
        <div id="menu">
            {include file="build/menu.tpl"}
        </div>
        
        <div id="slider">
            <li><img src="img/slider_img1.png"/></li>
            <li><img src="img/slider_img2.png"/></li>
            <li><img src="img/slider_img3.png"/></li>
        </div>
        
        <div id="content">
            
            <div id="content_top">
                <div id="content_top_menu">
                    <ul>
                        <li>
                            <a href="#">
                                <div id="content_top_menu_img1"></div>
                                <div class="content_top_menu_text">
                                    <span class="menu_text_top">Семейство продуктов</span>
                                    <span class="menu_text_bottom">Информация</span>
                                </div>
                                <div class="content_top_menu_arrow">Ö</div>
                            </a>
                        </li>
                        <li>
                            <a href="#">
                                <div id="content_top_menu_img2"></div>
                                <div class="content_top_menu_text">
                                    <span class="menu_text_top">Преимуществ</span>
                                    <span class="menu_text_bottom">Почему украинцы</span>
                                </div>
                                <div class="content_top_menu_arrow">Ö</div>
                            </a>
                        </li>
                    
                        <li>
                            <a href="#">
                                <div id="content_top_menu_img3"></div>
                                <div class="content_top_menu_text">
                                    <span class="menu_text_top">Удивительные факты </span>
                                    <span class="menu_text_bottom">Всё ли мы знаем об аллергии?</span>
                                </div>
                                <div class="content_top_menu_arrow">Ö</div>
                            </a>
                        </li>
                    </ul>
                </div>
                <div id="content_top_img"></div>
            </div>
            
            
            <div id="content_bottom">
                <div class="content_bottom_block">
                    <div class="content_bottom_block_top_text">Сезонн</div>
                    <a href="#" id="content_bottom_block_top_left_img1"></a>
                    <div id="content_bottom_block_bottom_text_left">Дополни</div>
                    <a href="#" id="content_bottom_block_top_left_img2"></a>
                    <a href="#" id="content_bottom_block_top_left_img3"></a>
                </div>
                <div class="content_bottom_block">
                    <div class="content_bottom_block_top_text">Информаци</div>
                    <a href="#" id="content_bottom_block_top_right_img1"></a>
                    <a href="#" id="content_bottom_block_top_right_img2"></a>
                    <div id="content_bottom_block_bottom_text_right">Просту</div>
                    <a href="#" id="content_bottom_block_top_right_img3"></a>
                </div>
                
            </div>
        </div>
        
        
        <div id="footer">
            
            <div id="footer_logo"></div>
        
            <div id="footer_text">
                ТОВ "МСД Україна"03038, м.
            </div>
            
        </div>
        
    </div>
 
 
</body>
</html>
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2013, 21:01
Попробуйте начать убирать по частям блоки с цикла, затем и сам цикл, чтобы посмотреть, что так влияет на инклуд. Попробуйте захардкодить список. Что из этого выйдет?
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
09.05.2013, 20:12  [ТС]
Пробовал. Результат тот же. А не может влиять на это очередь вызываемых классов, которые генерят контент?
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
10.05.2013, 08:58
Странно-странно. Что-то видимо не так делаете. Очередь, думаю, не влияет, include выполнятся при парсинге общего шаблона. Если ничего не надумаете, попробуйте написать им на офф. сайта.
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
10.05.2013, 11:54  [ТС]
Я положил исходники сайта по этой ссылке http://us.ua/1113106/, без картинок, может гляньте. Я со смарти 3 день. Вдруг ошибка очевидна.
0
0 / 0 / 1
Регистрация: 08.05.2013
Сообщений: 7
10.05.2013, 13:28
Вы пробовали просто вставить кусок кода, без инклюда?
Во-вторых, <li></li> заключите в <ul></ul>.
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
10.05.2013, 13:38  [ТС]
Цитата Сообщение от webement Посмотреть сообщение
Вы пробовали просто вставить кусок кода, без инклюда?
Во-вторых, <li></li> заключите в <ul></ul>.
Кусок кода без инклуда не будет работать, потому, что переменная. которая формирует меню назначена другому шаблону, который инклудится и не доступна напрямую в текущем шаблоне. Тег <li> у меня уже заключен в <ul>, посмотрите первый пост. Или как?
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
10.05.2013, 13:44
Цитата Сообщение от oleg_46 Посмотреть сообщение
потому, что переменная. которая формирует меню назначена другому шаблону
Что значит назначена другому шаблону? Если вы передали в смарти какую то переменную
PHP
1
$smarty -> assign('var', 'value');
То она будет видна хоть в каком шаблоне
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
10.05.2013, 13:51  [ТС]
У меня в классе, который выводит меню код
PHP
1
2
3
$smarty = new Smarty();
$smarty->assign('menu', $menu);
$smarty->display('../templates/build/menu.tpl');
если не написать display, то меню вообще не выводит. А переменная меню в главном шаблоне не доступна, то есть тоже меню не выводится. Это если написать код из menu.tpl сразу в главном шаблоне.
0
0 / 0 / 1
Регистрация: 08.05.2013
Сообщений: 7
10.05.2013, 13:53
А в значение $smarty->display вы не ошиблись? Несколько странновато. Т.к. в конфиге смарти уже прописывается каталог для шаблонов по умолчанию.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
10.05.2013, 13:59
Поэтому меню и появляется в боди, потому что отдельно для него вызываете display();
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
10.05.2013, 14:06  [ТС]
Только что попробовал так:
PHP
1
2
3
$smarty = new Smarty();
        $smarty->assign('menu', $menu);
        $smarty->display('menu.tpl');
Такой же результат.
Все шаблоны лежат в папке templates, возле папки Smarty и templates_c
Может смарти надо как то настроить?
Кстати, статические <ul></ul> инклудятся нормально.

Добавлено через 6 минут
Цитата Сообщение от Dolphin Посмотреть сообщение
Поэтому меню и появляется в боди, потому что отдельно для него вызываете display();
Так, если не вызвать дисплей, то меню вообще нет
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
10.05.2013, 14:10
Цитата Сообщение от oleg_46 Посмотреть сообщение
Так, если не вызвать дисплей, то меню вообще нет
Для этого вы инклудите его в шаблоне. Скорее всего просто не правильно указываете путь до шаблона меню.
Если этот шаблон в этой же папке, то указывается просто шаблон. То есть путь указывается от папки с шаблонами, которая указана в инициализации смарти
0
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 9
10.05.2013, 16:05  [ТС]
Мммм. Что то я запутался. На данный момент: Все шаблоны лежат в одной папке.
index.tpl
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
    <div id="main">
        <div id="header">
            <a href="/"id="header_logo"></a>
            <div id="header_logo_19"></div>
            <div id="header_slogan">Откройте жизнь без аллергии</div>
            <input id="search" type="text"/>
            
        </div>
        <div id="menu">
            {include file="menu.tpl"}
        </div>
и т.д
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
session_start();
require_once 'smarty/Smarty.class.php';
require_once 'class/build/Menu.class.php';
$smarty = new Smarty();
if (isset($_REQUEST['page'])) {
    if (is_file("class/" . $_REQUEST['page'] . ".class.php")) {
        require_once("class/" . $_REQUEST['page'] . ".class.php");
        $page = new $_REQUEST['page']();
    } else {
        require_once("class/NotFound.class.php");
        $page = new NotFound();
    }
} else {
    $menu = new Menu();
//  $smarty->debugging = true;
    $smarty->display('index.tpl');
}
menu.tpl

HTML5
1
2
3
4
5
<ul>
    {foreach from=$menu key=key item=i}
        <li><a href={$i.link}>{$i.name}</a></li>
    {/foreach}
</ul>
menu.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
require_once('class/Settings.class.php');
 
class Menu extends Settings {
 
    public $query;
 
    public function __construct() {
 
        parent::__construct();
 
        $menu = $this->query->query("SELECT * FROM T_MENU")->fetchAll(PDO :: FETCH_ASSOC);
 
        $smarty = new Smarty();
        $smarty->assign('menu', $menu);
//      $smarty->debugging = true;
        $smarty->display('menu.tpl');
 
    }
 
}
Добавлено через 1 час 41 минуту
В общем, проблему решил глубокой переработкой ПХП кода. Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2013, 16:05
Помогаю со студенческими работами здесь

Как прописать Если time() >= a1 и <= b1 то include 'c1.php'; include 'd1.php';
Сейчас для вывода информации по временному графику пользуюсь кодом $a = mktime(23,59,59,12,31,2013); if(time()&lt;$a){ include...

smarty 3
кто пользуется smarty 3? есть ли смысл переходить с второй версии?

Smarty
В нем есть фукнция include которая позволять подключать файл но он может подключить любой файл - это небезапасно. Не кто не подскажет где...

Smarty {}
У меня появилась проблема с шаблонизатором Smarty. Он просто не желает выводить значений. Например вот я составил скрипт: ...

smarty
Здраствуйте! Помогите,пожалуйста,решить возникшую проблему!Пытаюсь запустить сценарий написанный на php c содержанием smarty : ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru