Перейти к содержимому


- - - - -

баг? с рендерингом страниц модулем zmodule_listpages


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Alzent

Alzent

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 15.11.2009, 18:50

Есть страница, создаваемая через @@module=zmodule_listpages. Думаю, будет корректно назвать такую страницу "страницей категории"?
Страница категории содержит текст, который является некой аннотацией контента категории. Но не просто текст, а текст делёный тегом <!--more-->, чтобы страница категории анонсировалась на главной с небольшим текстом.

При обращении к самой странице категории, никакого текста аннотации контента нет вообще. Есть только анонсы вложенных в категорию страниц.
При обращении к главной странице сайта, текст страницы категории анонсируется правильно, однако ссылка "Читать запись полностью" получается ведущей на несуществующий "name" анкора (потому что см. выше - на странице категории нет текста аннотации, а есть только анонсы вложенных в категорию страниц).

Что-то тут, по моему, не сходится ;)

По моему, было бы логично показывать текст аннотации категории полностью, а затем уже писать анонсы вложенных в категорию страниц (как это сделано в Joomla!)
Как бы реализовать такое поведение?


И смежный вопрос:
А можно ли как-то сделать так, чтобы анонсом страницы являлся бы никак не связанный с основным контентом страницы текст? А то с <!--more--> получается дублирование контента, что для неуравновешенного Яши совсем не есть хорошо.

Спасибо.

PS: ZL 2.0.1, но аналогичное же (отсутствие всякой аннотации на странице категории) было на прошлой версии.

#2 support

support

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 1 140 сообщений

Отправлено 15.11.2009, 20:13

Просмотр сообщенияAlzent (15.11.2009, 18:50) писал:

Что-то тут, по моему, не сходится ;)

По моему, было бы логично показывать текст аннотации категории полностью, а затем уже писать анонсы вложенных в категорию страниц (как это сделано в Joomla!)
Как бы реализовать такое поведение?
Это планировалось, но затерялось и не тестировалось, поэтому без патча не обойтись :)

В шаблоне вывода статей (listpages.php) нужно после вывода заголовка и перед циклом по страницам сделать вывод контента <?php z_content(); ?>. Это контент той страницы, на которой ввыводятся дочерние страницы.

В папке zengine/classes/zmodule нужно заменить файлы allpages.php и listpages.php на файлы из прикрепленного архива.
Прикрепленный файл  zmodule.tar.gz   1,36К   12 Количество загрузок:

Просмотр сообщенияAlzent (15.11.2009, 18:50) писал:

И смежный вопрос:
А можно ли как-то сделать так, чтобы анонсом страницы являлся бы никак не связанный с основным контентом страницы текст? А то с <!--more--> получается дублирование контента, что для неуравновешенного Яши совсем не есть хорошо.
Наверное, единственная причина, по которой не была добавлена возможность самому указывать текст аннотации, это вопрос с форматом ее задания. Если задавать текст тезиса как свойство страницы, то там нет возможности использовать переходы на новую строку (или придется прописывать знаки \n). Без этого потребуется указывать текст в формате HTML.

Реализовать то, что Вы хотите, можно и сейчас. Для этого нужно использовать свое свойство для задания текста тезиса, например, @@_teaser, а вместо z_teaser() выводить его (если указан). Ссылку же придется выводить самому, но проблем с этим быть не должно. Для этого можно сделать свою функцию, чтобы ее можно было использовать на разных сайтах.

#3 Alzent

Alzent

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 16.11.2009, 05:13

Просмотр сообщенияsupport (15.11.2009, 20:13) писал:

В шаблоне вывода статей (listpages.php) нужно после вывода ...
... на файлы из прикрепленного архива.
Ога, спасибо, всё как надо!


Просмотр сообщенияsupport (15.11.2009, 20:13) писал:

Наверное, единственная причина, по которой не была добавлена возможность самому указывать текст аннотации, это вопрос с форматом ее задания. Если задавать текст тезиса как свойство страницы, то там нет возможности использовать переходы на новую строку (или придется прописывать знаки \n). Без этого потребуется указывать текст в формате HTML.
Ну, если это единственная причина, тогда я предлагаю взять пример с пхпшного hereDoc и задавать аннотацию посредством свойства, значение которого заключать в "мегакавычки", которые позволяют и HTML-разметку и перевод строк. Например:

@@annotation=<<<ZEBRUM
Это длинная аннотация страницы текста,
выполненная на нескольких строках шаблона и
допускающая <strong>HTML</strong> разметку и много чего ещё,
включая указание фильтра, которым она парсится (смотри свойство @@annotation.filter ниже)
<<<ZEBRUM
@@annotation.filter=text2html

Соответственно, при парсинге значения свойства, если оказывается, что оно начинается и оканчивается символами <<<ZEBRUM - значит эти символы вырезаем и применяем к результату фильтр из под-свойства .filter

У вас там всё довольно грамотно построено и полагаю, что добавить такое несложное расширение больших сложностей не доставит, а вот польза от него сама по себе большая, ибо решает проблему многострочных свойств, что наверняка ещё для каких других возможностей пригодится :)




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей