Разбивка на страницы с помощью CCK и Contemplate.
Это НЕ АВТОМАТИЧЕСКАЯ разбивка - т.е. страницы формируются вручную.
1. Необходимо установить модули CCK и Contemplate. Включить их и настроить разрешения.
2. В разделе "Типы материалов" (САЙТ/?q=admin/content/types) напротив каждого типа (страница, страница подшивки, новость...) появляется две новых ссылки "add field" и "manage fields".
Нажимаем напротив нужного типа (например напротив "page") - "add field". Добавляем машинное имя (маленькими буквами) и "человеческое" имя. Я назвал поле соответственно: filed_next_page - Следующая страница.
Жмем "Продолжить", - выбираем параметры поля. Для Widget type - Text area (multiple rows). Опять нажимаем "Продолжить". Здесь важно назначить в параметрах поля два пункта: выбрать для "Обработка текста:" - фильтрованный текст, а перед ним "Number of values:" - неограниченно. Остальное можно оставить как есть.
Теперь в режиме редактирования материала "page" (страница) увидим новые текстовые поля. Их сразу два и если заполнить не только первое, но и второе поле, то после сохранения появится третье новое и т.д. - в неограниченном количестве.
В разделе: САЙТ/?q=admin/content/node-type/page/fields можно настроить внешний вид страницы в режиме редактирования так, чтобы новые поля появлялись под полем ввода основного содержания.
3. Теперь переходим к Contemplate.
Выбираем в разделе Content templates в админ-меню: САЙТ/?q=admin/content/templates, напротив соответствующего типа (в нашем случае page-страница) - "edit template".
Здесь для группы "Содержимое" ставим пометку напротив "Affect body output" и редактируем соответствующее текстовое поле (обязательно отключаем текстовый редактор для этого поля).
Теперь удаляем код который там прописан и всместо него вставляем свой.
Первым делом необходимо отловить содержмое URL. Дальше будем исходить из того что своих "дополнений" в URL нет и всё содержимое строки - стандартно. Т.е. там присутствует переменная "q", которую мы отловим и вернем наместо. К ней добавим свою - с нумерацией страниц. Пусть она будет называться "p".
Итак, - удаляем содержимое и вставляем свой код.
$q = $_GET['q'];
$p = $_GET['p'];
if ($node->field_next_page[0]['value']) {
$pages_c = count($node->field_next_page);
$pages_cx = 0;
$pages_lpre = ' <a href="/?q=' . $q;
if ($p > 1) {
$pages_l = $pages_lpre . '&p=1">1</a> ';
}
else {
$pages_l = '<font color="#сссссс"><b>1</b></font> ';
}
while ($pages_cx < $pages_c) {
$pages_cx = $pages_cx + 1;
$pages_cxl = $pages_cx + 1;
if ($p == $pages_cxl) {
$pages_l = $pages_l . '<font color="#993300"><b>' . $pages_cxl . '</b></font> ';
}
else {
$pages_l = $pages_l . $pages_lpre . '&p=' . $pages_cxl . '">';
$pages_l = $pages_l . $pages_cxl . '</a> ';
}
}
echo '<p align=right>Страницы: ' . $pages_l . '</p>';
}
else { /* Это можно убрать */
echo '<br>'; /* Это можно убрать */
} /* Это можно убрать */
if ($pages_c) {
if ($p > 1) {
$par = $p - 2;
echo $node->field_next_page[$par]['value'];
echo '<br>';
}
else {
echo $node->content['body']['#value'];
}
echo '<br><p align=right>Страницы: ' . $pages_l . '</p>';
}
else {
echo $node->content['body']['#value'];
}
?>
Из своего кода (для Drupal 6) я удалил свои не относящиеся к теме строки и проверил - должно работать.
Теперь, если при редактировании материала типа page-страница, заполнить дополнительные текстовые поля, то появляется нумерация. Если поля пустые, то всё остается как было.
Напоследок совет - в пустых полях отключайте встроенный редактор и очищайте поле при необходимости, иначе может вставить тег без вашего ведома и появится пустая страница.
P.S.
Есть один минус - страдает ссылка "Версия для печати". Но, например, у себя я все равно собирался ее переделывать...
Комментарии
Интересная тема. Если бы ты подробнее описал последовательность действий, покрасивее оформил пост и исправил грамматические и орфографические ошибки, то его можно было бы вытащить на главную страницу.
Не то чтоб интересная, а жутко интересная. Выложите хотя бы подробнее описание. И скриншоты.
Пжлст!
Перенес в шапку (отредактировал)