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

Наследование дизайна шаблона

10.05.2016, 20:24. Показов 1218. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. На сайте есть множество однообразных страниц,которые отличаются лишь текстами в основном блоке. Хотелось бы сделать так,чтобы для всех этих страниц была общая страница с дизайном (шапка,меню),а уже сами блоки с текстами были отдельные страницы. Создала общий файл дизайна,в основном блоке написала следующее:
PHP
1
2
3
4
5
<div id="templatemo_main">
 
<?php echo isset($templatemo_main) ? $templatemo_main : ''; ?>
 
   </div> <!-- END of templatemo_main -->
В файле "текст1":
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php if(!isset($templatemo_main)){ ob_start(); ?>
<h1>Content
</h1>
<div id="templatemo_main"> //Как вставлять текст в наследуемой странице 
 
 
   </div> <!-- END of templatemo_main -->
 
<?php $title = ob_get_clean();} ?>
 
<?php require 'base.php'; 
 
function render($pathToTemplate, $data)
{
    extract($data);
    ob_start();
    require $pathToTemplate;
    return trim(ob_get_clean());
}
 
?>
Наследственная страница вывела дизайн,но как вставить текст в эту наследственную страницу? Я не могу понять,куда и как вставлять эти тексты.Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.05.2016, 20:24
Ответы с готовыми решениями:

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна в данном разделе т.к. у различных...

Обновление дизайна из шаблона
Вроде обсуждалось, но не нашел. В общем, вопросы первые: 1. Если база наследует изменения дизайна в шаблоне, почему в ней не появляются...

Как снять копии шаблона(дизайна) со списка баз? создать ntf
Подскажите пожалуйста - возникла необходимость снять шаблон с большого количества баз. хотелось бы автоматизировать процесс. пытался...

21
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
10.05.2016, 21:11
Не особо понял, что вы делаете в коде. Думаю, так будет понятно:

index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?
    function render($pathToTemplate, $data)
    {
        extract($data);
        ob_start();
        require $pathToTemplate;
        return trim(ob_get_clean());
    }
    
    $data = ['title' => 'Заголовок', 'content' => 'Контент страницы'];
    echo render('template.php', $data);
?>
template.php
PHP/HTML
1
2
3
4
<head>
    <title><?=$title?></title>
</head>
<div id="templatemo_main"><?=$content?></div>
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
11.05.2016, 14:44  [ТС]
Почему-то ругается на
PHP
1
$data = ['title' => 'Заголовок', 'content' => 'Контент страницы'];
Пишет Parse error: syntax error, unexpected '[' in C:\OpenServer\domains\tour\index.php on line 10
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
11.05.2016, 16:02
Вероника99, у вас старая версия PHP. Пишите так:
PHP
1
$data = array('title' => 'Заголовок', 'content' => 'Контент страницы');
1
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
11.05.2016, 16:29  [ТС]
Спасибо,помогло и весь код контента писать между кавычками?
PHP
1
'Контент страницы'
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
11.05.2016, 16:50
Вероника99, ... ну да, можно и переменную туда подставить. Или другие шаблоны. Нечто вроде:
PHP
1
2
3
$top_menu = render('top_menu.php');
$left_menu = render('left_menu.php');
echo render('template.php', array('left_menu' => $left_menu, 'top_menu' => $top_menu));
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
11.05.2016, 17:07  [ТС]
Подскажите еще пожалуйста,что тогда делать в случае,если в контенте будут еще одинарные кавычки?
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
11.05.2016, 17:29
Вероника99, ничего. Они никак не помешают.
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
11.05.2016, 17:35  [ТС]
У меня в контенте встречаются одинарные кавычки,выдает ошибку
PHP
1
Parse error: syntax error, unexpected T_STRING, expecting ')' in C:\OpenServer\domains\....php on line 40
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
11.05.2016, 17:51
Вероника99, судя по ошибке, вы где-то закрывающую скобку не поставили. Смотрите ваш скрипт на 40-вой строчке.
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
11.05.2016, 18:18  [ТС]
Все таки конфликт из-за кавычек происходит,я прочитала на форуме,что нужно ставить обратный слеш \' в таких ситуациях,но зато теперь при выводе sql неправильно выводятся данные с таблицы,пишу:
$res= mysql_query(\'SELECT * FROM `Даты` WHERE `Даты`.`Tour_date_id`=1\') OR die(mysql_error());
while($row = mysql_fetch_assoc($res)){
SQL
1
 <OPTION VALUE="\'.$row[\'Date_begin\'].\'">\'.$row[\'Date_begin\'].\'</option>;
и выводится: '.$row[\'Date_begin\'].\' . Можно как-то вывод организовать без кавычек?
0
17 / 17 / 8
Регистрация: 16.01.2016
Сообщений: 55
11.05.2016, 19:56
\ не надо ставить везде. " '123' 456 " - экранировать не нужно, $res= mysql_query('SELECT ... - экранировать не нужно.

'SELECT \'Дата\' FROM ...' - экранировать нужно, т.к. кавычка перед Дата становиться закрывающей для строки.
"SELECT "Дата" FROM ... " - а тут экранируется двойная кавычка.
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
11.05.2016, 20:16  [ТС]
Я не совсем поняла,что можно экранизировать,а что нет
Вот проблемный участок кода:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<SELECT SIZE="1" name="datesFF" TYPE="text">
<?php
            $dbname = \'admin\';
            $db = mysql_connect ("localhost","admin","1111");
    mysql_query("SET NAMES \'utf8\'");
            mysql_select_db ($dbname,$db);
            if (!$db) {
                echo \'Ошибка подключения к mysql\';
                exit;
            }  
 
$res= mysql_query("SELECT * FROM `Даты` WHERE `Даты`.`Tour_date_id`=1") OR die(mysql_error()); 
while($row = mysql_fetch_assoc($res)){
    ?>  
 
  <option value="\'.$row[\'Date_begin\'].\'">\'.$row[\'Date_begin\'].\'</option>;
    <?
}
Подскажите,пожалуйста,как надо.Спасибо
 
?>
</select>
0
17 / 17 / 8
Регистрация: 16.01.2016
Сообщений: 55
12.05.2016, 10:54
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<SELECT SIZE="1" name="datesFF" TYPE="text">
<?php
            $dbname = 'admin';
            $db = mysql_connect ("localhost","admin","1111");
    mysql_query("SET NAMES \'utf8\'");
            mysql_select_db ($dbname,$db);
            if (!$db) {
                echo 'Ошибка подключения к mysql';
                exit;
            }  
 
$res= mysql_query("SELECT * FROM `Даты` WHERE `Даты`.`Tour_date_id`=1") OR die(mysql_error()); 
while($row = mysql_fetch_assoc($res)){
    ?>  
 
  <option value=" <?= $row['Date_begin']?>"><?= $row['Date_begin']?></option>
    <?
}
 
?>
</select>
вроде так
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
12.05.2016, 11:24
Цитата Сообщение от Вероника99 Посмотреть сообщение
Все таки конфликт из-за кавычек происходит
Конфликта нет. Вы нарушаете синтаксис PHP, и он выдаёт на это ошибки.

Экранировать нужно, когда вы хотите подставить в текст такую же кавычку, как и те кавычки, которые обрамляют строку. Пример:
PHP
1
2
$var = 'Я иду в магазин \'Магнолия\'';
$var = "Я иду в кинотеатр \"Высота\"";
Если открывающая и закрывающая кавычки отличаются от кавычек, которые вы хотите использовать в тексте, экранировать не нужно:

PHP
1
2
$var = 'Я иду в магазин "Магнолия"';
$var = "Я иду в кинотеатр 'Высота'";
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
12.05.2016, 14:06  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Конфликта нет. Вы нарушаете синтаксис PHP, и он выдаёт на это ошибки.
Да,в этом и проблема, что тогда делать,если мне еще нужны одинарные кавычки? В каждом случае,когда мне еще в sql нужны одинарные кавычки -выдает ошибку
PHP
1
Parse error: syntax error, unexpected T_STRING, expecting ')'
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
12.05.2016, 14:15
Вероника99, почитайте какую-нибудь книжку про основы синтаксиса. Это слишком простой для понимания вопрос, не знаю, почему у вас с этим возникают проблемы.

Цитата Сообщение от Вероника99 Посмотреть сообщение
В каждом случае,когда мне еще в sql нужны одинарные кавычки -выдает ошибку
Покажите кусок кода, в котором возникает ошибка.
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
12.05.2016, 14:34  [ТС]
Я вижу,что в ошибке пишет,что не достает скобки.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
document.getElementById('feedback-form').addEventListener('submit', function(evt){
  var http = new XMLHttpRequest(), f = this;
  evt.preventDefault();
  http.open("POST", "http://tour/list_tour/contacts.php", true);
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  http.send("nameFF=" + f.nameFF.value + "&contactFF=" + f.contactFF.value + "&messageFF=" + f.messageFF.value+"&cityFF=" + f.cityFF.value+ f.messageFF.value+"&telFF=" + f.telFF.value+"&datesFF=" + f.datesFF.value);
  http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
      alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');    
      f.messageFF.removeAttribute('value); // очистить поле сообщения (две строки)
      f.messageFF.value='';
    }
  }
  http.onerror = function() {
    alert(\'Извините, данные не были переданы\');
  }
}, false[B]);[/B]//эти скобки от того начала наследования  'content' => '...
Например,в первой строке: ('feedback-form') присутствуют одинарные кавычки, и ошибка на эту строку следующая syntax error, unexpected T_STRING, expecting ')' on line 74
Для эксперимента делаю следующее:
JavaScript
1
document.getElementById(\'feedback-form\').addEventListener(\'submit\', function(evt){
после этого появляется ошибка уже на следующую строку с одинарными кавычками:
Parse error: syntax error, unexpected T_STRING, expecting ')' in C:\OpenServer\domains\....php on line 82
и эти ошибки появляются до тех пор,пока я не заэкранизирую все одинарные кавычки до той "закрывающей" наследования.Но благодаря такой экранизации, нарушается синтаксис внутреннего кода и он работает неправильно...
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
12.05.2016, 15:26
Вероника99, на 11-ой строчке нет закрывающей кавычки, после value. Подсветка синтаксиса это показывает.
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
12.05.2016, 16:58  [ТС]
Я случайно удалила,когда слеши удаляла. Ошибка осталась прежней,дальше выдает ошибку при встрече первой одинарной кавычки,после 'content' => '...
Насколько я понимаю, ошибка происходит из-за того,что считается,что первая одинарная кавычка -это закрытие наследования
$data = array('title' => 'Заголовок', 'content' => '...'....'

Вот весь код станицы
PHP
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
<?php
    function render($pathToTemplate, $data)
    {
        extract($data);
        ob_start();
        require $pathToTemplate;
        return trim(ob_get_clean());
    }
    
   $data = array('title' => 'Заголовок', 'content' => 
 
  
 
'<b>День 1. Львів</b><br>
текст
<br>
 
<button><a href="#openModal">Бронь</a></button>
 
 
<div id="openModal" class="modalDialog">
 
    <div>
 
        <a href="#close" title="Закрыть" class="close">X</a>
 
<!-- атрибут required говорит, что заполнение поля обязательно -->
<form method="POST" id="feedback-form">
<br>Имя :
<br><input type="text" name="nameFF" required placeholder="ФИО" x-autocompletetype="name">
<br>Email:
<br><input type="email" name="contactFF" required placeholder="Email" x-autocompletetype="email">
<br>Телефон:
<br><input name="telFF" required placeholder="например, 89000000000" x-autocompletetype="tel" type="tel">
<br>Город
<br><input name="cityFF" placeholder="например, Самара" x-autocompletetype="address-level2" type="text">
  <br>Дата
<br>
<select size="1" name="datesFF" type="text">
<?php
            $dbname = 'admin';
            $db = mysql_connect ("localhost","admin","1111");
    mysql_query("SET NAMES 'utf8'");
            mysql_select_db ($dbname,$db);
            if (!$db) {
                echo 'Ошибка подключения к mysql';
                exit;
            }  
 
$res= mysql_query('SELECT * FROM `Даты` WHERE `Даты`.`Tour_date_id`=1') OR die(mysql_error()); 
while($row = mysql_fetch_assoc($res)){
    ?>  
   <option value="<?=$row['Date_begin'],"-",$row['Date_end']?>"><?=$row['Date_begin'],"-",$row['Date_end']?></option>
 
    <?
}
 
 
?>
</select>
<br>Message
<br><textarea name="messageFF" required rows="5"></textarea>
<br><input type="submit" value="Бронь">
</form>
 
 
<script>
document.getElementById('feedback-form').addEventListener('submit', function(evt){
  var http = new XMLHttpRequest(), f = this;
  evt.preventDefault();
  http.open("POST", "http://tour/list_tour/contacts.php", true);
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  http.send("nameFF=" + f.nameFF.value + "&contactFF=" + f.contactFF.value + "&messageFF=" + f.messageFF.value+"&cityFF=" + f.cityFF.value+ f.messageFF.value+"&telFF=" + f.telFF.value+"&datesFF=" + f.datesFF.value);
  http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
      alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');    
      f.messageFF.removeAttribute('value'); // очистить поле сообщения (две строки)
      f.messageFF.value='';
    }
  }
  http.onerror = function() {
    alert('Извините, данные не были переданы');
  }
}, false);
</script>
 
 
    </div>
    </div>
');
 
    echo render('design.php', $data);
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2016, 16:58
Помогаю со студенческими работами здесь

Наследование шаблона
Есть два шаблона Array and NumericArray Хочется реализовать между ними иерархию типа NumericArray диревативынй класс а Array...

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

Шаблон параметр шаблона и наследование
Есть вот такой базовый класс, который описывает абстрактный доступ к контейнеру stl: template&lt; template&lt;typename, typename&gt;...

Наследование конструктора от переменного шаблона
В С++ 11 появилась возможность унаследовать конструктора базового класса при помощи конструкции using. class A { public: ...

Наследование шаблона с другого приложения
Всем доброго времени суток. Я только недавно начал разбираться в django, поэтому прошу простить за душные вопросы. Есть в проекте...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru