форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
Перевод.
Оригинал текста и ссылка на скачивание плагина - здесь.
etz_pg
Делит статью на страницы и генерирует средства управления для навигации по этим страницам.
Это форк плагина hfw_pg_* Dark-а Wulf-а.
Использование:
Добавьте новую строку, метку [page] и затем еще одну новую строку там, где Вы хотели бы вставить разделитель страниц.
В форме вывода для этой статьи, замените тэгом <txp:etz_pg_body /> присутствующий у вас там тэг <txp:body />.
Кроме того, здесь же, добавьте <txp:etz_pg_pages />, для размещения навигации по страницам.
Добавьте необходимые стили в CSS.
Доступные тэги:
<txp:etz_pg_body /> заменяет <txp:body />.
Имеющиеся атрибуты:
pgerr – позволяет указать сообщение о неправильном указании номера страницы..
notrim – если установлено в ненулевое значение, запрещает the XHTML validation hack (прим. переводчика – не смог найти русскоязычное соответствие).
<txp:etz_pg_pages /> размещение навигации по страницам.
Имеющиеся атрибуты:
always - будет создавать навигационную панель даже если статья не разбита на страницы.
start, prev, next, end - определяют текст для соответствующих ссылок в навигации.
noextremes – если установлено в ненулевое значение, то запрещается отображение start и end - ссылок.
noadjacents – если установлено в ненулевое значение, то запрещается отображение prev и next - ссылок.
nonumbers - если установлено в ненулевое значение, то запрещается навигация по номерам страниц.
id – определяет имя HTML -идентификатора для <ul> (по умолчанию - pages).
<txp:etz_pg_switchmode /> - добавляет интеллектуальную ссылку, которая позволяет вам переключаться от от разделенного на страницы просмотра к просмотру неразделенной на страницы версии стаьи.
Доступные атрибуты:
id – определяет имя HTML -идентификатора для <ul> (по умолчанию: switchmode).
all – устанавливание текст ссылки для переключения на просмотр полной статьи (по умолчанию: “all pages”).
split - устанавливание текст ссылки для переключения на просмотр разбитой на страницы статьи (по умолчанию: “split in pages”).
<txp:etz_pg_if_split> и <txp:etz_pg_if_not_split> - условные тэги, которые определяют, в каком режиме отображается в настоящее время статья, постранично или нет.
<txp:etz_pg_if_paginated> и <txp:etz_pg_if_not_paginated> - условные тэги, которые определяют, в каком режиме отображается в настоящее время статья, постранично или нет.
(прим. переводчика – из текста оригинала не понял разницы между последними и предыдущими тэгами).
<txp:etz_pg_if_start> и <txp:etz_pg_if_not_start> - условные тэги, показывающие, начало ли статьи сейчас отображается или нет.
<txp:etz_pg_if_end> и <txp:etz_pg_if_not_end> - условные тэги, показывающие, завершение ли стаьи сейчас отображается или нет.
<txp:etz_pg_thispage /> - возвращает текущий номер странницы или “all”.
<txp:etz_pg_totalpages /> - возвращает общее количество страниц.
(прим. переводчика – перечисления улучшений родоначального плагина hfw_pg_* упускаю.)
Скачайте последнюю версию плагина (0.8 или выше), проинсталлируйте его в админ.панели, включите его. Это требует полных прав администратора.
Дайте имя пользовательскому полю (custom field) “etz_pg_subs”; регистр букв в имени имеет значение. Вы можете это сделать в «Продвинутых настройках» в вашей админ.панели.
Перейдите на статью, планируемую к разбиению на страницы и нажмите на «Продвинутые настройки».
В пользовательском поле “etz_pg_subs” , для статьи, состоящей из, например, 4 разделов, пишем: “This is section one|This is section two|This is section tree|And last but not least, section four”. Названия разделов разделяются вертикальными разделителями.
Обратите внимание, что количество вертикальных разделителей должно соответствовать количеству меток [page] в теле статьи.
Имеющиеся проблемы:
Relies on an ugly hack in order not to break XHTML validation. (прим. переводчика – не смог найти русскоязычное соответствие).
Метка [page] выводится в результатах работы поиска по сайту.
Неактивен
Версия плагина 0.8
Делим статью на страницы. Начиная со второй страницы сначала идут символы "/>" а потом уж текст.
на третьей, четвертой и последней страницах - аналогично. На первой все корректно.
Это глюк али руки кривые?
вывожу кодом (в форме default):
<txp:etz_pg_body />
Неактивен
Классный плагин! Опробовал. Жаль, что на url нельзя повлиять, чтобы было не url?pg=nn, а, например url/page-1/
Но это мелочи.
P.S. Кстати, создавать новое поле (custom_field) совсем необязательно ;)
Отредактированно ТВЭЛ (03-06-2007 23:13:06)
Неактивен
... и маленько пришлось в исходниках покопаться (почти с каждым плагином так). Все работает, просто на душе мерзко, когда лишние классы пихаются :) Кстати, вот участок кода, отвечающий за присвоение этих классов. Как вы умудряетесь понимать PHP?! Черт ногу сломит!
if (!($noextremes)) { $out[] = '<li class="pgStart'; if ($pg > 1) $out[] = '"><a href="'.$base_url.'">'; else $out[] = ' pgEmpty">'; $out[] = $start; if ($pg > 1) $out[] = '</a>'; $out[] = '</li>'; } if (!(($noadjacents) || ($pg > $max))) { $out[] = '<li class="pgPrev'; if ($pg == 2) $out[] = '"><a href="'.$base_url.'">'; if ($pg > 2) $out[] = '"><a href="'.$linkstub.($pg - 1).'">'; if ($pg == 1) $out[] = ' pgEmpty">'; $out[] = $prev; if ($pg > 1) $out[] = '</a>'; $out[] = '</li>'; } if (!($nonumbers)) { for ($i = 1; $i <= $max; $i++) { $out[] = '<li class="pgNum'; if ($pg != $i) { if ($i == 1) { $out[] = '"><a href="'.$base_url.'">'; }
Неактивен
Мда... Мне кажется, я сейчас сдамся. Еще 10 минут попыток, и все. Фиг с ними, с этим идиотским class=pgNum :(
P.S. Ура! Я все же победил. Еще немного, и мой мозг бы сломался. Решительно не понимаю, зачем там такая конструкция была. Кто у нас тут на форуме хороший программист? Nicck, вроде :) Оцени пожалуйста этот код, который я выложил в предыдущем посте, на каком уровне он сделан? Интересно.
Я теперь немножечко переделал, избавился от лишнего класса. Теперь так...
if (!($nonumbers)) { for ($i = 1; $i <= $max; $i++) { $out[] = '<li'; if ($pg != $i) { if ($i == 1) { $out[] = '><a href="'.$base_url.'">'; } else {$out[] = '><a href="'.$linkstub.($i).'">'; } } else { $out[] = ' class="pgCurrent">'; } $out[] = $subs[$i-1]; if ($pg != $i) $out[] = '</a>'; $out[] = ''; $out[] = '</li>'; } }
Кстати, если считать снизу, то во втором $out[] в кавычках был пробел, который, естественно, вылазил потом в HTML. Зачем так сделано? Я просто пробел убрал, а конструкцию оставил, побоявшись, как бы потом совсем все не поломалось нафиг :)
Жуть.
Евгений, извини, пожалуйста, что-то я нафлудил много. Ночью я немного неадекватен, похоже.
Постараюсь больше так не делать.
P.P.S.
Jack написал:
Версия плагина 0.8
Делим статью на страницы. Начиная со второй страницы сначала идут символы "/>" а потом уж текст.
на третьей, четвертой и последней страницах - аналогично. На первой все корректно.
Это глюк али руки кривые?
вывожу кодом (в форме default):Код:
<txp:etz_pg_body />
Действительно, руки кривоваты маленько :) Но не у Джека. Тоже столкнулся с подобным глюком. Textile включен, наверно? Лечится это таким образом: просто нужно ставить метку [page] в конце абзаца (без переноса строки), причем после трех или более пробелов, иначе плагин откусит окончание абзаца. Такой вот он голодный.
P.P.P. :) S. Прошу прощения, нельзя так делать. К сожалению, тогда Textile не успевает закрыть тэг абзаца. Оказалось, все еще проще, просто делаем двойной перевод строки, как обычно, ставим метку, потом снова двойной перевод строки, и вуаля. Мда, туплю я сегодня ужасно, правда?
Отредактированно ТВЭЛ (04-06-2007 02:58:07)
Неактивен
Оказалось, все еще проще, просто делаем двойной перевод строки, как обычно, ставим метку, потом снова двойной перевод строки, и вуаля. Мда, туплю я сегодня ужасно, правда?
Ага, тупишь Это в помощи по плагину написано, вообще-то
Отредактированно glebotr (04-06-2007 11:13:09)
Неактивен
Ребята, обьясните неучу как им пользоватся. Установить - установил, а вот что дальше делать?
Неактивен
odessit написал:
как им пользоватся. Установить - установил, а вот что дальше делать?
а так не пробовал?
Использование:
Добавьте новую строку, метку [page] и затем еще одну новую строку там, где Вы хотели бы вставить разделитель страниц.
В форме вывода для этой статьи, замените тэгом <txp:etz_pg_body /> присутствующий у вас там тэг <txp:body />.
Кроме того, здесь же, добавьте <txp:etz_pg_pages />, для размещения навигации по страницам.
Добавьте необходимые стили в CSS.
Неактивен
У меня небольшой вопрос. Мне в моём случае не нужна навигация, типа 1,2,next,prev и т.д. Мне нужно чтобы в конце статьи просто стояла ссылка с текстом: "а теперь переходим к фото отчёту выставки", которая вела бы на вторую страницу статьи.
Как такое сделать?
И ещё у меня в разметке статьи не используется textile, а стоит Обрабатывать перенос строки. И я всё никак не могу избавится от символов "/>" перед текстом на второй странице?
Неактивен
Номера страниц можно заменить на какой-либо текст.
Для этого нужно переименовать custom_field в etz_pg_subs.
Далее при редактировании материала в это поле нужно вписать названия, разделив их вертикальной чертой, которых должно быть столько, сколько [page] вставлено в документ, иначе будут отображаться номера страниц, а текст ни на что не повлияет. Пример:
Страница 1 | Страница 2 | Страница 3 | Страница 4 | Страница 5
Неактивен
aclorange
Ок, спасибо, получается.Но в таком случае текст "а теперь переходим к фото отчёту выставки" остаётся и на второй странице, но теперь уже не в виде ссылки, а просто как текст, некрасиво получается.
Нужно сделать чтобы в конце первой страницы была ссылка на вторую, а на второй лишь ссылка назад на первую, ну либо вообще ничего. Есть какие-нибудь идеи?
Неактивен
В css файл нужно добавить
.pgCurrent {display: none; }
Неактивен
aclorange
Это помогло, спасибо! Сделал то что мне нужно.
Неактивен
Если кому надо, то вот тут я его выложил etz_pg_v0.10.2.txt
Неактивен