Вопрос по xTemplate

VE
На сайте с 17.08.2006
Offline
76
1374

Решил немного поэкспериментировать с xTemplate. Что хотел от этого шаблонизатора, то в полном объеме и получил, кроме одного.

Нужна реализация простой навигации по страницам:

[ страница 1 ] линк

страница 2 - активная страница не линк

[ страница 3 ] линк

[ страница 4 ] линк

<!-- BEGIN: pages -->

<b>{MSG}</b>

<!-- BEGIN: activerow -->

<p><b>{PAGE_NAME}</b></p>

<!-- END: activerow -->

<!-- BEGIN: row -->

<p><a href="{PAGE_HREF}">{PAGE_NAME}</a></p>

<!-- END: row -->

<!-- END: pages -->

Собственно это все парсится, но активная страница прыгает вверх.

Вопрос:

Как сделать, чтобы выбранная страница не прыгала вверх (если активный блок поместить под неактивным, будет прыгать вниз)? В чем затык, если это вообще можно решить с помощью xTemplate.

Очень хотелось бы, а то стилями-то оно можно и выделить и подчеркивание линка убрать, но линк-то останется.

Пример и все файлы есть в архиве: http://script.ki-master.com/task.zip

-
На сайте с 07.12.2005
Offline
97
-K-
#1

Буквально вчера сделал такой пейджер себе и наткнулся сначала на теже грабли :)

Все очень просто, прыгает наверх потому что внутри PAGES парсится activerow и row отдельно внезависимости от текущей итерации, надо обернуть их в еще что-то, например PAGE:


<!-- BEGIN: pages -->
<b>{MSG}</b>
<!-- BEGIN: page -->
<!-- BEGIN: activerow -->
<p><b>{PAGE_NAME}</b></p>
<!-- END: activerow -->

<!-- BEGIN: row -->
<p><a href="{PAGE_HREF}">{PAGE_NAME}</a></p>
<!-- END: row -->
<!-- END: page -->

<!-- END: pages -->

Вот как это у меня выглядит:


if ($pages_num > 1)
{
for($i = 1; $i <= $pages_num; $i++)
{
$template->assign(array(
'PAGE' => $i,
'LINK' => 'plug.php?p=job&a=vaclist&r='.$r.'&pg='.$i
));
if ($i == $pg)
{
$template->parse('VACANCY_LIST.PAGER.PAGE.CURRENT');
}
else
{
$template->parse('VACANCY_LIST.PAGER.PAGE.LINK');
}
$template->parse('VACANCY_LIST.PAGER.PAGE');
}
$template->parse('VACANCY_LIST.PAGER');
}

и в шаблоне

	<!-- BEGIN: PAGER -->
<div style="background-color: #62788E; padding: 3px; color: #fff;">
<h3 style="padding: 0; margin: 0; font-weight: normal; display: inline;">Страницы: </h3>
<!-- BEGIN: PAGE -->
<!-- BEGIN: CURRENT -->
<h3 style="padding: 0; margin: 0 3px 0 3px; display: inline; font-weight: normal;">{PAGE}</h3>
<!-- END: CURRENT -->
<!-- BEGIN: LINK -->
<h3 style="padding: 0; margin: 0 3px 0 3px; display: inline;"><a href="{LINK}" style="color: #fff;">{PAGE}</a></h3>
<!-- END: LINK -->
<!-- END: PAGE-->
</div>
<!-- END: PAGER-->
Ayavryk
На сайте с 11.10.2003
Offline
209
#2

Плюньте на лебедевские заморочки. Оставьте ссылку как есть, но текущей задайте такой стиль, чтобы он не выглядел ссылкой.

==============================

if ($i == $pg) $class='current'; else $class='';

$template->assign(array('CLASS'=>$class;'PAGE' => $i....

=======================================

<!-- BEGIN: row -->

<p><a href="{PAGE_HREF}" class="{class}">{PAGE_NAME}</a></p>

<!-- END: row -->

==========================

<style>

a.current {font-weight:bold;text-decoration:none;color:black;cursor: default;}

</style>

Как вариант обработку стиля текущей страницы/раздела/подраздела в навигационных строках и меню можно навесить на js. В этом случае оформление вообще будет вынесено из движка. В этом случае можно ссылку заменить обычным текстом через js.

ЗЫ несколько лет назад одно из распространенных объяснений почему страница не должна ссылаться сама на себя было имхо совершенно идиотским - утверждалось, что роботы могут зациклиться.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
VE
На сайте с 17.08.2006
Offline
76
#3

Огромнейшее спасибо. А думалось, что никто такое и не делал :)

-K-:
Буквально вчера сделал такой пейджер себе и наткнулся сначала на теже грабли :)

Все очень просто, прыгает наверх потому что внутри PAGES парсится activerow и row отдельно внезависимости от текущей итерации, надо обернуть их в еще что-то, например PAGE:
VE
На сайте с 17.08.2006
Offline
76
#4

А кто такой Лебедев?

Вариант с парсингом одной строки и с разными стилями (тогда ве страницы линки) был самым первым решением. Но... нужно было именно так как спросил. Например, со спокойной совестью сделаю H2 на такую неактивную строчку + к H1 в начале страницы. Да и линков поуменьшится.

И естественно, что оформление выносится из кода.

Выносить что-то из меню в js - хороший вариант - только отключают его частенько.

А про ЗЫ :) Кто этих роботов поймет. Вон какие АПы выдают :) только клавы от постов гнутся.

Ayavryk:
Плюньте на лебедевские заморочки. Оставьте ссылку как есть, но текущей задайте такой стиль, чтобы он не выглядел ссылкой.

Как вариант обработку стиля текущей страницы/раздела/подраздела в навигационных строках и меню можно навесить на js. В этом случае оформление вообще будет вынесено из движка. В этом случае можно ссылку заменить обычным текстом через js.

ЗЫ несколько лет назад одно из распространенных объяснений почему страница не должна ссылаться сама на себя было имхо совершенно идиотским - утверждалось, что роботы могут зациклиться.
Ayavryk
На сайте с 11.10.2003
Offline
209
#5
view'er:
А думалось, что никто такое и не делал :)

Бывает нечто, о чем говорят: Смотри, вот, это -- новое! -- но это было уже в веках, бывших прежде нас (с) Екклизиаст

Вообще пейджер не нужно писать самому. Библиотек огромное количество. Еще лучше - перейти на какой-нибудь FrameWork. В них класс пейджера в обязательном порядке присутствует.

view'er:
А кто такой Лебедев?

Вы смеетесь?

view'er:
js - хороший вариант - только отключают его частенько.

Функционал при этом не нарушается.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий