Есть несколько страниц находящихся на одном уровне. Необходимо сделать на кажной из них меню только в виде пунктов "следующая" и "предыдущая".
Подскажите, пожалуйста, как быть?
UPD Вобщем с вопросом я разобрася (см.окументация по тегу cms_selflink).
Но проблема в следующем: навигация сквозная по всем уровням, а мне надо чтобы была только на заданном. И дойдя до последней страницы, чтобы ссылка "Next" исчезла, а не предлагала шерстить подпункты следующего меню.
Как сделать постраничную навигацию?
Как сделать постраничную навигацию?
Last edited by seventh on Sun Jul 26, 2009 11:18 pm, edited 1 time in total.
Re: Как сделать постраничную навигацию?
{cms_selflink dir="prev"} <- предыдущаяseventh wrote: Есть несколько страниц находящихся на одном уровне. Необходимо сделать на кажной из них меню только в виде пунктов "следующая" и "предыдущая".
Подскажите, пожалуйста, как быть?
{cms_selflink dir="next"} <- следующая
Можно добавить разделитель меню или невидимый заголовок меню до и после.seventh wrote: UPD Вобщем с вопросом я разобрася (см.окументация по тегу cms_selflink).
Но проблема в следующем: навигация сквозная по всем уровням, а мне надо чтобы была только на заданном. И дойдя до последней страницы, чтобы ссылка "Next" исчезла, а не предлагала шерстить подпункты следующего меню.
Re: Как сделать постраничную навигацию?
Спасибо, но не совсем ясно.Sonya wrote: Можно добавить разделитель меню или невидимый заголовок меню до и после.
О разделителях (информации больше чем 3 предложения с кратким описанием о них не нахожу).
Я ставлю разделители, но картины это не меняет. Первая страница уровня на котром реализуется навигация (1) содержит ссылку ведущую на родительскую страницу(A) под видом предыдущей, что нежелательно. Последняя(7) как и ранее предлагает в качестве следующей перейти на верхний уроывень меню. (страницу B)
Какие-то параметры? Настройки?
С невидимым заголовком,извините, совсем всё непонятно в виду отсутствия информации.
Структура сайта такая
Главная страница (содержит информацию)
|
---------------- Раздел А (содержит информацию)
| |
| +-------------- 1
| |
| +-------------- 2
| |
| +-------------- 3
| |
| +-------------- 4
| |
| +-------------- 5
| |
| +-------------- 6
| |
| +-------------- 7
|
+--------------Раздел B (содержит информацию)
PS Хоть убейте, я немогу понять как работает сепаратор и "секция заголовка" читая в 10 раз описание "сепаратор делает то что в его названии..." яснее не становится. Это и ежу понятно, что он он разделяет. Но как имено правильно его ипользовать и в каких случаях?, тоже самое и с секцией загловка.
Last edited by seventh on Tue Jul 28, 2009 8:56 pm, edited 1 time in total.
Re: Как сделать постраничную навигацию?
На самом деле я ошиблась, разделители и заголовки не убирают родителей, только добавление "неактивных" dummy-страниц до и после решает проблему, но не элегантно, конечно.
Несколько других решений посредством смарти можно найти здесь http://forum.cmsmadesimple.org/index.ph ... 752.0.html
Несколько других решений посредством смарти можно найти здесь http://forum.cmsmadesimple.org/index.ph ... 752.0.html
Re: Как сделать постраничную навигацию?
Я когда то через заголовски секций + Smarty код делал.
unsigned double ZYV;
Re: Как сделать постраничную навигацию?
Большой спасибо 
Всё получилось. Я обобщу все моменты с которыми пришлось столкнуться, чтобы больше на эти грабли никто не наступал.
Лирическое отступление: Я не программист, а дизайнер. В связи с недопонимаем с моими прграммистами на тему "невозможности" пришлось месяц назад ознакомиться с PHP и работой СMS изнутри.
1 Вариант с 3 шаблонами
В первом для первой страницы есть только ссылка на следующую страницу
{cms_selflink dir="next" label=""}
Во втром, для всех страниц:
{cms_selflink dir="next" label=""}
{cms_selflink dir="previous" label=""}
Во третьем, для последней:
{cms_selflink dir="previous" label=""}
Однако это не очень хороший метод, подходит для "своего" сайта и то, если есть уверенность что изменений в шаблонах в дальнейшем не будет. Для редактора такие заморочки - лишняя суета и погрешности.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 Вариант с одним шаблоном но с передаваемыми ему данными
в шаблон вставляется следующее:
{if !isset($firstchild)}{cms_selflink dir="previous" label=""}{/if}
то есть не показывать сслыку на предыдущую страницу, если существует переменная firstchild
{if !isset($lastchild)}{cms_selflink dir="next" label=""}{/if}
аналогично, не показывать сслыку на следующую, если существует переменная lastchild.
Стало быть первой странице надо задать переменную firstchild, а последней lastchild.
Автор этого метода уверяет что делается это с помощью Metadata для данной страницы:,
однако у меня не сработало и я ввёл данные в Данные или логика Smarty для данной страницы:,
что какжется более логичным.
А данные такие - для первой страницы
{assign var='firstchild' value='1'}
Для последней
{assign var='lastchild' value='1'}
страницы посредине не трогаются
Это уже лучше, сохраняем единый макет и редактору будет проще понять, что от него требуется (всего лишь делать копи-паст иногда). Однако, всё равно решение не совсем для сайта "на экспорт"
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 Вариан с помощью CGSimpleSmarty
Тут было много граблей, может кто будет умнее и всё знает. Я не знал ничего, поэтому подробно.
1) То что это отдельный устанавливаемый модуль я не знал. Поэтому найденный код не сработал.
2)В менеджере модулей CGSimpleSmarty я нашел, но версия 1.4 была заявлена как несовместимая(у меня установлена система 1.5.4 "Carolina") и ничего более не предлагалось.
3)Находясь в менеджере в закладке Настройки я нашел чекбокс "Показывать только новейшие версии". Получил доступ к старым версиям.
4)Скачал предыдущую установил
5)В шаблон вставил такой код
определение наличия предыдущей страницы
{$cgsimple->get_sibling("prev","prev_sibling")}{if !empty($prev_sibling)}{cms_selflink page="$prev_sibling" text="Previous"}{/if}
и следующей
{$cgsimple->get_sibling("next","next_sibling")}{if !empty($next_sibling)}{cms_selflink page="$next_sibling" text="Next"}{/if}
Этот вариант, мне кажется идеальным. Процесс автоматизирован и редактору не нужно знать ничего лишнего.

Всё получилось. Я обобщу все моменты с которыми пришлось столкнуться, чтобы больше на эти грабли никто не наступал.
Лирическое отступление: Я не программист, а дизайнер. В связи с недопонимаем с моими прграммистами на тему "невозможности" пришлось месяц назад ознакомиться с PHP и работой СMS изнутри.
1 Вариант с 3 шаблонами
В первом для первой страницы есть только ссылка на следующую страницу
{cms_selflink dir="next" label=""}
Во втром, для всех страниц:
{cms_selflink dir="next" label=""}
{cms_selflink dir="previous" label=""}
Во третьем, для последней:
{cms_selflink dir="previous" label=""}
Однако это не очень хороший метод, подходит для "своего" сайта и то, если есть уверенность что изменений в шаблонах в дальнейшем не будет. Для редактора такие заморочки - лишняя суета и погрешности.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 Вариант с одним шаблоном но с передаваемыми ему данными
в шаблон вставляется следующее:
{if !isset($firstchild)}{cms_selflink dir="previous" label=""}{/if}
то есть не показывать сслыку на предыдущую страницу, если существует переменная firstchild
{if !isset($lastchild)}{cms_selflink dir="next" label=""}{/if}
аналогично, не показывать сслыку на следующую, если существует переменная lastchild.
Стало быть первой странице надо задать переменную firstchild, а последней lastchild.
Автор этого метода уверяет что делается это с помощью Metadata для данной страницы:,
однако у меня не сработало и я ввёл данные в Данные или логика Smarty для данной страницы:,
что какжется более логичным.
А данные такие - для первой страницы
{assign var='firstchild' value='1'}
Для последней
{assign var='lastchild' value='1'}
страницы посредине не трогаются
Это уже лучше, сохраняем единый макет и редактору будет проще понять, что от него требуется (всего лишь делать копи-паст иногда). Однако, всё равно решение не совсем для сайта "на экспорт"
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 Вариан с помощью CGSimpleSmarty
Тут было много граблей, может кто будет умнее и всё знает. Я не знал ничего, поэтому подробно.
1) То что это отдельный устанавливаемый модуль я не знал. Поэтому найденный код не сработал.
2)В менеджере модулей CGSimpleSmarty я нашел, но версия 1.4 была заявлена как несовместимая(у меня установлена система 1.5.4 "Carolina") и ничего более не предлагалось.
3)Находясь в менеджере в закладке Настройки я нашел чекбокс "Показывать только новейшие версии". Получил доступ к старым версиям.
4)Скачал предыдущую установил
5)В шаблон вставил такой код
определение наличия предыдущей страницы
{$cgsimple->get_sibling("prev","prev_sibling")}{if !empty($prev_sibling)}{cms_selflink page="$prev_sibling" text="Previous"}{/if}
и следующей
{$cgsimple->get_sibling("next","next_sibling")}{if !empty($next_sibling)}{cms_selflink page="$next_sibling" text="Next"}{/if}
Этот вариант, мне кажется идеальным. Процесс автоматизирован и редактору не нужно знать ничего лишнего.
Last edited by seventh on Thu Jul 30, 2009 10:33 am, edited 1 time in total.
Re: Как сделать постраничную навигацию?
Большой спасибо 
Всё получилось. Я обобщу все моменты с которыми пришлось столкнуться, чтобы больше на эти грабли никто не наступал.
Лирическое отступление: Я не программист, а дизайнер. В связи с недопонимаем с моими прграммистами на тему "невозможности" пришлось месяц назад ознакомиться с PHP и работой СMS изнутри.
1 Вариант с 3 шаблонами
В первом для первой страницы есть только ссылка на следующую страницу
{cms_selflink dir="next" label=""}
Во втром, для всех страниц:
{cms_selflink dir="next" label=""}
{cms_selflink dir="previous" label=""}
Во третьем, для последней:
{cms_selflink dir="previous" label=""}
Однако это не очень хороший метод, подходит для "своего" сайта и то, если есть уверенность что изменений в шаблонах в дальнейшем не будет. Для редактора такие заморочки - лишняя суета и погрешности.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 Вариант с одним шаблоном но с передаваемыми ему данными
в шаблон вставляется следующее:
{if !isset($firstchild)}{cms_selflink dir="previous" label=""}{/if}
то есть не показывать сслыку на предыдущую страницу, если существует переменная firstchild
{if !isset($lastchild)}{cms_selflink dir="next" label=""}{/if}
аналогично, не показывать сслыку на следующую, если существует переменная lastchild.
Стало быть первой странице надо задать переменную firstchild, а последней lastchild.
Автор этого метода уверяет что делается это с помощью Metadata для данной страницы:,
однако у меня не сработало и я ввёл данные в Данные или логика Smarty для данной страницы:,
что какжется более логичным.
А данные такие - для первой страницы
{assign var='firstchild' value='1'}
Для последней
{assign var='lastchild' value='1'}
страницы посредине не трогаются
Это уже лучше, сохраняем единый макет и редактору будет проще понять, что от него требуется (всего лишь делать копи-паст иногда). Однако, всё равно решение не совсем для сайта "на экспорт"
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 Вариан с помощью CGSimpleSmarty
Тут было много граблей, может кто будет умнее и всё знает. Я не знал ничего, поэтому подробно.
1) То что это отдельный устанавливаемый модуль я не знал. Поэтому найденный код не сработал.
2)В менеджере модулей CGSimpleSmarty я нашел, но версия 1.4 была заявлена как несовместимая(у меня установлена система 1.5.4 "Carolina") и ничего более не предлагалось.
3)Находясь в менеджере в закладке Настройки я нашел чекбокс "Показывать только новейшие версии". Получил доступ к старым версиям.
4)Скачал предыдущую установил
5)В шаблон вставил такой код
определение наличия предыдущей страницы
{$cgsimple->get_sibling("prev","prev_sibling")}{if !empty($prev_sibling)}{cms_selflink page="$prev_sibling" text="Previous"}{/if}
и следующей
{$cgsimple->get_sibling("next","next_sibling")}{if !empty($next_sibling)}{cms_selflink page="$next_sibling" text="Next"}{/if}
Этот вариант, мне кажется идеальным. Процесс автоматизирован и редактору не нужно знать ничего лишнего.

Всё получилось. Я обобщу все моменты с которыми пришлось столкнуться, чтобы больше на эти грабли никто не наступал.
Лирическое отступление: Я не программист, а дизайнер. В связи с недопонимаем с моими прграммистами на тему "невозможности" пришлось месяц назад ознакомиться с PHP и работой СMS изнутри.
1 Вариант с 3 шаблонами
В первом для первой страницы есть только ссылка на следующую страницу
{cms_selflink dir="next" label=""}
Во втром, для всех страниц:
{cms_selflink dir="next" label=""}
{cms_selflink dir="previous" label=""}
Во третьем, для последней:
{cms_selflink dir="previous" label=""}
Однако это не очень хороший метод, подходит для "своего" сайта и то, если есть уверенность что изменений в шаблонах в дальнейшем не будет. Для редактора такие заморочки - лишняя суета и погрешности.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 Вариант с одним шаблоном но с передаваемыми ему данными
в шаблон вставляется следующее:
{if !isset($firstchild)}{cms_selflink dir="previous" label=""}{/if}
то есть не показывать сслыку на предыдущую страницу, если существует переменная firstchild
{if !isset($lastchild)}{cms_selflink dir="next" label=""}{/if}
аналогично, не показывать сслыку на следующую, если существует переменная lastchild.
Стало быть первой странице надо задать переменную firstchild, а последней lastchild.
Автор этого метода уверяет что делается это с помощью Metadata для данной страницы:,
однако у меня не сработало и я ввёл данные в Данные или логика Smarty для данной страницы:,
что какжется более логичным.
А данные такие - для первой страницы
{assign var='firstchild' value='1'}
Для последней
{assign var='lastchild' value='1'}
страницы посредине не трогаются
Это уже лучше, сохраняем единый макет и редактору будет проще понять, что от него требуется (всего лишь делать копи-паст иногда). Однако, всё равно решение не совсем для сайта "на экспорт"
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 Вариан с помощью CGSimpleSmarty
Тут было много граблей, может кто будет умнее и всё знает. Я не знал ничего, поэтому подробно.
1) То что это отдельный устанавливаемый модуль я не знал. Поэтому найденный код не сработал.
2)В менеджере модулей CGSimpleSmarty я нашел, но версия 1.4 была заявлена как несовместимая(у меня установлена система 1.5.4 "Carolina") и ничего более не предлагалось.
3)Находясь в менеджере в закладке Настройки я нашел чекбокс "Показывать только новейшие версии". Получил доступ к старым версиям.
4)Скачал предыдущую установил
5)В шаблон вставил такой код
определение наличия предыдущей страницы
{$cgsimple->get_sibling("prev","prev_sibling")}{if !empty($prev_sibling)}{cms_selflink page="$prev_sibling" text="Previous"}{/if}
и следующей
{$cgsimple->get_sibling("next","next_sibling")}{if !empty($next_sibling)}{cms_selflink page="$next_sibling" text="Next"}{/if}
Этот вариант, мне кажется идеальным. Процесс автоматизирован и редактору не нужно знать ничего лишнего.
Re: Как сделать постраничную навигацию?
2 -> это устаревший метод, когда автор писал это секции для логики просто не было.
3 -> надо ставить последнюю версию CMSMS.
Вообще всё как-то очень замудрено.
Я бы сделал шаблон меню и вызывал его с collapse и ограничением уровня (2, 3 или как там надо), а потом просто ставил условие типа {if i 1} выводить_prev, а i там либо в foreach есть, либо можно сделать {assign } i = 0 и i++ на каждом шаге foreach.
В общем мутят, мутят... А программистов тех надо избить за профнепригодность. Хотя может они говорили, что невозможно за такие деньги.
3 -> надо ставить последнюю версию CMSMS.
Вообще всё как-то очень замудрено.
Я бы сделал шаблон меню и вызывал его с collapse и ограничением уровня (2, 3 или как там надо), а потом просто ставил условие типа {if i 1} выводить_prev, а i там либо в foreach есть, либо можно сделать {assign } i = 0 и i++ на каждом шаге foreach.
В общем мутят, мутят... А программистов тех надо избить за профнепригодность. Хотя может они говорили, что невозможно за такие деньги.
unsigned double ZYV;
Re: Как сделать постраничную навигацию?
На локальном серваке не поставилась, пока разбираться не стал, может я туплю. Посмотрим.надо ставить последнюю версию CMSMS
Я еще плохо говорю , со словарёмВообще всё как-то очень замудрено.

Да я тоже сразу же такой алгоритм представил, это логично и по-человечески, но я не сображаю еще всех возможностей ( я только с прошлой недели за СMSSM взялся) и теряюсь что и где можно делать.Я бы сделал шаблон меню и вызывал его с collapse и ограничением уровня (2, 3 или как там надо), а потом просто ставил условие типа {if i 1} выводить_prev, а i там либо в foreach есть, либо можно сделать {assign } i = 0 и i++ на каждом шаге foreach.
Пытался так делать, но синтаксис недопонял.
Я ж и выманиваю какие-то примеры, чтобы посмотреть как правильно пишется (логику-то я сам могу продумать, а именно чем оперировать пока учим)
В вопросе денег я никого никогда не ограничиваю, я просто включаю в бюджет стоимость работы людей, которую они сами заявляют, делать по-дешеве не уговариваю, потому что не люблю когда с аналогичными просьбами обращаются ко мне.А программистов тех надо избить за профнепригодность. Хотя может они говорили, что невозможно за такие деньги.
Там был камень преткновения - лишний шаблон - это "трудно" и блок контента "может быть только один".
Поюс визивиг - словами не описать. Для каких-то халтур это канало. Для текущих проектов мне приглянулась данная система.