| |
|
|
| | Разместил на своем сайте несколько книг, но народ сетует, что файлы получились слишком большие, так что при коммутируемом доступе открываются долго. Я и сам это понимаю, и решил разбить каждую книгу на главы (разделы), разместив каждый раздел на отдельном файле. Человек прочитал эту главу, а внизу ссылочка – «Читать дальше». И если это был файл 01.htm, то переход на файл 02.htm и т.д. Ну, а еще в титлах вписываю номер главы, и вверху страницы для удобства. И верху ссылку на главную страницу для возврата. Получился вот такой шаблончик:
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Книга. Часть [m]</title>
</head>
<body>
<p><a href="http://www.site.ru">На главную страницу сайта</a></p>
<p>Часть <span lang="en-us">[m]</span></p>
<p align="left">Текст книги</p>
<p align="left"><a href="[m+1].htm">Читать далее</a></p>
</body>
</html>
Здесь только одна переменная, которую я обозначил [m]
И нужно, что бы каким-то образом формировалась цепочка таких шаблончиков, причем [m] линейно увеличивалось от 1 до некоей заданной мною величины.
До сего дня изготавливал эти шаблоны вручную, но цепочки по 100 и 140 шаблонов делать очень трудоемко, да и ошибок много!
А нельзя ли как то сделать это автоматически? Ввел название книги в титлы и длину цепочки (сколько страничек сделать), пуск – и цепочка из ста шаблонов готова! Как бы это осуществить? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 10:08)
| | | шаблон должен быть ОДИН, а содержимое - меняться в зависимости от страницы. не с той
стороны начинаете... | |
| |
|
|
| |
|
|
| |
для: elenaki
(15.11.2006 в 10:26)
| | | Согласен, можно и так. Шаблон один, я его заполняю текстом, а потом он сохраняется в виде странички, куда автоматически дописывается переменный параметр m, увеличенный на единицу. То есть при первой записи создается файл 01.htm с внутренней ссылкой на 02.htm, затем 02.htm с внутренней ссылкой на 03.htm, и т.д.
Вы это имели в виду? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 10:41)
| | | приклрепляю скрипт фотоальбома, где есть листание вперед-назад и установка общего
числа фоток и числа фоток на странице. PHP нет. только HTML и java-Script. всего 3 файла и
сам скрипт. фотки в отдельной папке. переделать с фоток на тексты легче легкого. | |
| |
|
|
| |
|
|
| |
для: elenaki
(15.11.2006 в 10:46)
| | | Мысль очень интересная!
Хотя я не все понял.
В файле script устанавливается количество картинок. Так.
Ну, а как применить все это для моих целей? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 11:00)
| | | а с PHP поработать никакой возможности нет? потому что делать в наше время CMS на JS
кажется тратой времени и сил. на каком этапе вы сейчас? тексты набраны и сверстаны в
html? нет только механизма управления готовыми текстами/страницами? или надо еще и
админский модуль делать для создания и сохранения страниц? вручную сегодня никто
электронные книги не делает. | |
| |
|
|
| |
|
|
| |
для: elenaki
(15.11.2006 в 11:48)
| | | Книга в виде одного .htm файла. Тематическое разбиение дало цепочку из 143 файлов. Вот я третий день и делаю под нее цепочку из 143 шаблонов. Чувствую, что это допотопный подход.
Доступ к рнр у меня есть. Но как это использовать? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 11:55)
| | | Самый тупой вариант
<?
$len=2000; //символов на странице
$book="index.htm"; //файл с книгой
$page=intval($_GET['page']); //номер текущей страницы получаем из url
$text=file_get_contents($book); //считываем файл целиком
$pages=str_split ($text, $len); //разбиваем книгу на страницы
echo $pages[$page]; //выводим текущую страницу
//а тут у нас навигация
if ($page) echo "<a href=".$_SERVER['PHP_SELF']."?page=".$page-1.">назад</a>"; //если страница не первая, то выводим ссылку на предыдущую
if ($page!=count($pages)-1) echo "<a href=".$_SERVER['PHP_SELF']."?page=".$page+1.">вперед</a>"; //если страница не последняя, то выводим ссылку на следующую.
|
Типа должно работать... | |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 12:09)
| | | Если я правильно понял, то этот рнр-код надо добавить в код моего шаблона, приведенный в начале темы. Верно?
Я так и сделал.
При запуске такого комбинированного шаблона вверху странички появляется сообщение:
назад"; if ($page!=count($pages)-1) echo "
Что-то не так? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 12:21)
| | | проверьте еще раз. В первоначальном варианте были опечатки | |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 12:24)
| | | Переделал заново.
Общий код страницы стал таким:
<?
$len=2000; //символов на странице
$book="index.htm"; //файл с книгой
$page=intval($_GET['page']); //номер текущей страницы получаем из url
$text=file_get_contents($book); //считываем файл целиком
$pages=str_split ($text, $len); //разбиваем книгу на страницы
echo $pages[$page]; //выводим текущую страницу
//а тут у нас навигация
if ($page) echo "<a href=".$_SERVER['PHP_SELF']."?page=".$page-1.">назад</a>"; //если страница не первая, то выводим ссылку на предыдущую
if ($page!=count($pages)-1) echo "<a href=".$_SERVER['PHP_SELF']."?page=".$page+1.">вперед</a>"; //если страница не последняя, то выводим ссылку на следующую.
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Книга. Часть [m]</title>
</head>
<body>
<p><a href="http://www.site.ru">На главную страницу сайта</a></p>
<p>Часть <span lang="en-us">[m]</span></p>
<p align="left">Текст книги</p>
<p align="left"><a href="[m+1].htm">Читать далее</a></p>
</body>
</html>
При запуске страницы выводится сообщение:
назад"; //если страница не первая, то выводим ссылку на предыдущую if ($page!=count($pages)-1) echo "вперед"; //если страница не последняя, то выводим ссылку на следующую.
Слово "вперед" является ссылкой, а слово "назад" ссылкой не является.
=======================
1. Спасибо за то, что ввели комментарий!
2. Ваша идея превосходна!
3. Я не нашел функции сохранения созданной страницы. Где она?
4. Мне кажется, забыт значок ?> Добавил его - нет изменений. Убрал его. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 12:40)
| | |
<?
$len=200; //символов на странице
$book="book.txt"; //файл с книгой (сюда надо вписать название файла с книгой!!!!)
$page=intval($_GET['page']); //номер текущей страницы получаем из url
$text=file_get_contents($book); //считываем файл целиком
$pages=str_split ($text, $len); //разбиваем книгу на страницы
?>
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Книга. Часть <?=$page+1 ?></title>
</head>
<body>
<p><a href="http://www.site.ru">На главную страницу сайта</a></p>
<p>Часть <span lang="en-us"><?=$page+1 ?></span></p>
<p align="left">
<?
echo $pages[$page]; //выводим текущую страницу
?>
</p>
<p align="left">
<?
//а тут у нас навигация
if ($page) echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\">назад</a>"; //если страница не первая, то выводим ссылку на предыдущую
if ($page!=count($pages)-1) echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\"> вперед</a>"; //если страница не последняя, то выводим ссылку на cледующую.
?>
</p>
</body>
</html>
|
уже проверил и уже даже работает... | |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 13:02)
| | | Ну а почему же у меня-то не работает???
Код перенес один в один - просто создал новую страничку с именем 1.htm
Имя книги так и оставил: book.txt
Что получилось:
Имя страницы после запуска - Книга. Часть <?=$page+1 ?> Прямо так и пишет вверху страницы на синем поле.
Содержание книги не выводит. А пишет только это:
=================
На главную страницу сайта
Часть
назад"; //если страница не первая, то выводим ссылку на предыдущую if ($page!=count($pages)-1) echo " вперед"; //если страница не последняя, то выводим ссылку на cледующую. ?>
=================
При этом слово "вперед" как ссылка (а за ней Not Found), а слово "назад" просто как слово!
Может код каким-то диковинным образом искажается при его переносе со страницы Форума в редактор? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 12:40)
| | | >3. Я не нашел функции сохранения созданной страницы. Где она?
добро пожаловать в мир динамических страниц:) | |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 13:13)
| | | а закешировать? :) | |
| |
|
|
| |
|
|
| |
для: Trianon
(15.11.2006 в 13:18)
| | | это в планах будущей CMS, начатой в предыдущем посте:) | |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 13:23)
| | | Может у меня в настройках поискать причину? Может код доступа к файлам не тот?
Можете ли Вы приложить созданный Вами файл и книгу, которые точно работают у Вас? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 13:26)
| | | Файл берите из поста выше, а книгу можете взять такую
book.txt
Smarty templates
Рано или поздно начинает как-то нервировать, когда при смене дизайна тебя отрывают от других проектов, потому что чтоб сменить дизайн, надо лезть внуть PHP-страниц и что-то там менять. А дизайнер этого делать и подавно не собирается (а может просто не умеет).
Собственно, для меня это и стало толчком в сторону концепции "разделения данных и представления".
В самом простом случае мы можем использовать HTML-шаблоны. Что это такое? Средство, позволяющее вынести из РНР весь HTML в отдельные файлы. Но данные туда вставлять все-равно надо, скажите вы. Да, надо, и для этого служит свой простой синтаксис, и никакого РНР-кода вперемежку с HTML!
Такова идея движка шаблонов Smarty. Я бы сказал, что это очень удобная штука, если применять ее с умом.
Итак, в первую очередь нам понадобится сам шаблонизатор. Берем и разваливаем его в какую-то папку в нашем www. После этого топаем сюда и читаем ускоренный курс обучения.
Как правило, все должно заработать. Если же все так просто с первого раза не запустилось, то давайте напишем обертку для класса Smarty.
Для начала, немного теории. Смарти при парсинге шаблона генерирует его PHP-код. Для увеличения быстродействия он его сохраняет в своем кеше и в следующий раз отдает его оттуда уже без повторной генерации (это папка template_c, у которой должны быть права на запись для апача).
| |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 13:52)
| | | Loki!
Дело в том, что этот скрипт (цепочка шаблонов) у меня не работает! Я перепробовал и перепроверил все, что только мог, но он не работает. Полную диагностику я написал на Форуме выше. Единственное, что мне осталось - это попросить Вас прислать Ваш файл и проверить его у себя. Иначе вся проделанная Вами работа для меня бесполезна... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 10:08)
| | | Созданный Loky скрипт показа книг прост и очень удобен. Я не исключаю возможности, что и кто-то другой захочет его использовать. И поэтому привожу окончательную редакцию скрипта, который Loky в последний момент немного поправил.
<?
$len=2000; //символов на странице
$book="book.txt"; //файл с книгой
$page=intval($_GET['page']); //номер текущей страницы получаем из url
$text=file_get_contents($book); //считываем файл целиком
$pages=explode("----##----", chunk_split($text, $len, "----##----")); //разбиваем книгу на страницы
?>
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Книга. Часть <?=$page+1 ?></title>
</head>
<body>
<p><a href="http://www.site.ru">На главную страницу сайта</a></p>
<p>Часть <span lang="en-us"><?=$page+1 ?></span></p>
<p align="left">
<?
echo $pages[$page]; //выводим текущую страницу
?>
</p>
<p align="left">
<?
//а тут у нас навигация
if ($page) echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\">назад</a>"; //если страница не первая, то выводим ссылку на предыдущую
if ($page!=count($pages)-1) echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\"> вперед</a>"; //если страница не последняя, то выводим ссылку на cледующую.
?>
</p>
</body>
</html> | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.11.2006 в 21:24)
| | |
$pages=explode("----##----", chunk_split($text, $len, "----##----")); //разбиваем книгу на страницы
|
Эта строчка для версий php < 5.
Для пятерки работает скрипт написанный выше. | |
| |
|
|
| |
|
|
| |
для: Loki
(15.11.2006 в 22:45)
| | | Именно так!
Код, составленный Loki, был правильным с самого начала, а моя проблема проистекала из того, что у меня установлена устаревшая версия рнр. Loki сделал наладку непосредственно на моем сайте, за что ему огромная благодарность и низкий поклон! Сейчас через деланный Loki скрипт люди уже читают книгу, над размещением которой я бился три дня, да и еще пришлось бы неизвестно сколько потратить времени! Большое спасибо Вам, Loki, за помощь и за отзывчивость! | |
| |
|
|