Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   автоматическое уведомление на сайте об изменении статьи (http://forum.typo3.ru/showthread.php?t=9552)

Anlov 27.06.2011 12:14

автоматическое уведомление на сайте об изменении статьи
 
привет.
есть вопрос? можно ли каждый раз после изменения какой-либо статьи/страницы выводить об этом уведомление типа новости на главной странице? если да, тот как это можно было бы сделать? а то я даже сообразить не могу, с чего начинать.

-=UncleByte=- 27.06.2011 13:25

Контент-элемент "Карта сайта", режим "Недавно измененные".

Anlov 27.06.2011 14:05

Спасибо.
Но давайте я уточню, чтобы было более понятно, что мне надо:
  • Меню 1
    • Меню 1.1
    • Меню 1.2
  • Меню 2
    • Меню 2.1
  • Меню 3
    • Меню 3.1
    • Меню 3.2
если статья в Меню 3.2 была отредактированна, то на странице Меню 3 должна появиться новость: "дд.мм.гг. Обновлена статья Меню 3.2"
притом, что на странице Меню 3 кроме таких новостей-уведомлений появляются и нормальные новости, которые пишутся редакторами от руки.

-=UncleByte=- 27.06.2011 14:20

Так все в ваших руках. Откройте setup.txt в папке css_styled_content и увидите все тот же TS, который используется везде. Дальше можно взяв за основу этот фрагмент сделать в своем TS шаблоне практически все что хочется.

Anlov 27.06.2011 16:00

странно, css_styled_content установлен, а самой этой папки и, соответственно, файла setup.txt нет... :confused:

-=UncleByte=- 27.06.2011 16:29

/typo3_src/typo3/sysext/css_styled_content/static/setup.txt

Anlov 27.06.2011 17:32

не совсем понял: там же css-стили. как они мне могут помочь а данном вопросе?

-=UncleByte=- 27.06.2011 17:59

Просто посмотрите. Там TS описание всех доступных по умолчанию контент-элементов. И видно как именно они устроены. И это можно взять за основу своего TS шаблона сайта.

Anlov 27.06.2011 18:27

Код:

# "Recently updated pages"
                5 < .default
                5 {
                        wrap = <ul class="csc-menu csc-menu-5">|</ul>
                        special = updated
                        special {
                                maxAge = 3600*24*7
                                excludeNoSearchPages = 1
                        }
                }

- вот и все, что там есть про sitemap... если изменить интервал на сутки, обертку, "надыбать" как-нибудь где-нибудь время update да потом все это еще и облагородить css....

-=UncleByte=- 27.06.2011 18:51

Ну так на то TSRef есть где описаны все функции доступные - этот кусок за основу, потом дописать свой конфиг к этому и далее взять и дописать css.

Anlov 28.06.2011 12:56

так, идем дальше с вашей помощью.
вот здесь
Код:

lib.updatedsites = HMENU
lib.updatedsites {
        special = list
        special.value.field = pages
        wrap = <ul class="csc-menu csc-menu-def">|</ul>
        1 = TMENU
        1 {
                target = {$PAGE_TARGET}
                NO {
                        stdWrap.htmlSpecialChars = 1
                        wrapItemAndSub = <li>|</li>
                        ATagTitle.field = description // title
                }
                noBlur = 1
        }
}
5 < .lib.updatedsites
5 {
        wrap = <ul class="csc-menu csc-menu-5">|</ul>
        special = updated
        special {
                maxAge = 3600*24*1
                excludeNoSearchPages = 1
        }
}

как мне сделать, чтобы выводились страницы, начиная только с текущего уровня меню? я хочу подключить этот код, как TSObject к определенным страницам и поэтому не могу жестко указать special.value = XX, потому что на каждом такой странице должны появляться записи об обновлении подстраниц только для этой страницы. и как мне здесь получить tstamp?

-=UncleByte=- 28.06.2011 15:34

Ну так сам по себе контент-элемент Sitemap позволяет же выбрать точки входа.
Правда я не уверен что это работает с обновленными страницами.

-=UncleByte=- 28.06.2011 15:38

Хотя сейчас посмотрел в TSRef - можно указать откуда беруться эти обновленные страницы и до какой глубины вложенности. Так что не вижу трудностей.

Anlov 28.06.2011 17:17

вот-вот, вот эту точку входа мне надо в вышеприведенном коде указать динамически, потому что для каждой страницы она, естественно, будет разной. а как - не знаю. то есть, по сути, мне надо внутри TS передать или установить значение текущей страницы, а еще бы - и ее родителя тоже... нужна помощь.

-=UncleByte=- 28.06.2011 17:32

Вот так можно написать:
Код:

          special = directory
          special.value = 0
          special.value.data = fullRootLine : 1, uid


Anlov 29.06.2011 18:17

а как мне здесь получить SYS_LASTCHANGED? и как мне его здесь же привести в нормальный вид ДД-ММ-ГГ?

-=UncleByte=- 29.06.2011 18:23

В TSRef все описано относительно работы с данными. Почти в самом начале.

Anlov 04.07.2011 15:50

на пхп все сделал легко и просто... а то бы еще месяц возился.
риторический вопрос: и на кой хрен надо было этот тс изобретать?...

-=UncleByte=- 04.07.2011 17:54

Вот уж действительно! Зачем вообще нужны всякие там cms и фреймворки к ним когда есть php?

Anlov 04.07.2011 18:25

не передергивайте, я сказал именно про TypoScript. Другие CMS прекрасно живут без таких костылей, нет?

-=UncleByte=- 04.07.2011 18:36

TypoScript не костыль и не язык программирования, но средство для конфигурирования уже готовых к использованию модулей. Если вам не удалось сделать что-либо с его помощью, то это характеризует только вас, но не TypoScript, который успешно применяется по всему миру.

Anlov 04.07.2011 19:19

я не говорил, что ТС - язык программирования, как средство для конфигурирования уже готовых модулей могу предложить xml, не правда ли, тоже очень неплохое решение, с одним отличием - его уже знают миллионы.

я не говорю, что ТС плохой, я говорю, что не совсем понимаю необходимость его создания, при наличии того же xml (повторяюсь)

да, действительно, не хватило терпения разбираться с костылями. решил бегом пробежаться.

и кстати, вы не ответили на вопрос: "Другие CMS прекрасно живут без таких костылей, нет?"

засим предлагаю здесть эту дискуссию закончить, бо не место, да и незачем. будем обсуждать только техническую сторону дела, а то что-то я не туда полез...

-=UncleByte=- 04.07.2011 21:56

Джумла живет без смарти? Вообще какая-либо cms живет без конфигов?

Андрей Аксенов 05.07.2011 11:49

А о чем собственно спор? Хорошо бы прочитать начало документов "TypoScript за 45 минут" (doc_tut_ts45) и "Синтаксис TypoScript и его всестороннее изучение" (doc_core_ts):
Цитата:

Почему TypoScript?
Строго говоря, TypoScript язык для настроек. Мы не можем при помощи него писать программы, но мы сможем с его помощь с легкостью настроить многое. Посредством TypoScript мы можем определить формирование сайта. Мы определяем навигацию, фиксированное содержимое, а также, как каждый элемент содержимого формируется на страницах.
TYPO3 представляет из себя систему управления содержимым на сайте, целью которой является отделение содержимого от дизайна, внешнего вида. TypoScript можно рассматривать как клей, заново объединяющий упомянутые части (содержимое и его внешний вид). Содержимое, хранящееся в базе данных, читается и обрабатывается TypoScript, а затем отдается во внешний интерфейс.
Для формирования сайта, нам нужно только лишь определить что и как нужно передать.
Ответ на вопрос "что" находится под контролем внутреннего интерфейса — здесь формируются страницы и их содержимое.
Ответ на вопрос "как" находиться во власти TypoScript.
Посредством TypoScript мы определяем, как каждый из элементов содержимого будет представлен во внешнем интерфейсе. Например, в каком div-контейнере будет содержаться элемент, и будет ли заголовок обозначен, как <h1>
TypoScript, определяющий то, как будут отдаваться страницы, находится в "основном" шаблоне. В нем установлен флаг "корень сайта".
При отдаче страницы во внешний интерфейс, TYPO3 ищет по дереву страниц основной шаблон. Обычно, кроме основного, имеются несколько шаблонов. Как они совместно используются, хорошо видно в модуле Анализ шаблона. На данный момент мы подразумеваем, что шаблон один.
Синтаксис TypoScript очень прост. Слева находятся объекты и определяющие их свойства, которые получают соответствующие значения. Объект отделяется от свойства (которое тоже может содержать другой объект) точкой ".".
Цитата:

Что такое TypoScript?
Так как обычно люди сомневаются, что же такое TypoScript (TS), где он может использоваться, ввиду чего имеют склонность думать о нем, как о чем-то сложном, этот документ написан для прояснения всех этих вопросов.
Сначала начнем с нескольких прописных истин:
TypoScript это синтаксис для представления информации в иерархической структуре, используя простое ASCII тек­стовое содержимое.
Что значит:
Сам по себе TypoScript ничего не "делает" – он просто содержит информацию.
TypoScript преобразуется в функции лишь, при поступлении в программу, разработанную с целью выполнять дей­ствия согласно информационной структуре, описанной TypoScript.
Таким образом? строго говоря TypoScript сам по себе не содержит функций, помимо использования в определен­ном контексте. Так как контекст – это почти всегда настройка чего-либо, TypoScript зачастую воспринимается как парамет­ры (или аргументы функции) переданные функции, действующей соответственно им (напр. "background_color = red"). И напротив, Вы, вероятно, никогда не увидите, чтобы TypoScript использовался для хранения информации, подобной базе данных адресов – для этого легче воспользоваться XML или SQL.
PHP массивы
В свете применения TypoScript может восприниматься как нестрогий способ ввода информации в многомерный массив. Фактически, при интерпретации TypoScript, производиться преобразование в массив PHP! Как бы Вы определяли ста­тическую информацию в PHP массивах? Вы сделали бы это в файлах настройки, но точно не стали бы делать базу дан­ных, подобной базе данных адресов!
Подведем итог:
При интерпретации TypoScript, информация преобразуется в массив PHP, которым и пользуются приложения TYPO3
Таким образом, та же информация, фактически может определятся как через TypoScript или непосредственно в PHP; естественно синтаксис в обоих случаях будет различным.
TypoScript предлагает удобные возможности, поэтому мы и не определяем информацию непосредственно с синтак­сисом и через массивы PHP. Среди особенностей следует отметить меньшую чувствительность к ошибкам в синтак­сисе, определение значений с использованием меньшего числа символов и возможность метафорического описа­ния объектов, их свойств и пр.
Вообщем здесь - вопрос удобства, кому и как удобнее определять свойства объектов... Вот и все...

luluxiu 19.07.2011 07:53

Существует описание TS, элементы содержимого по умолчанию. Посмотрите, как они работают. И, возможно, база TS шаблона сайта...

AlexMr 06.09.2012 14:14

Всем привет!
У меня стоит почти аналогичная задача, только получить я должен не страницы, а статьи (5 последних измененных).
Насколько я понял, автор вопроса написал PHP-функцию для решения вопроса.
Может существует все же возможность обойтись силами TS?

Следующий код дает последние страницы:
(источник)
Код:

20 = HMENU
20.special = updated
20.special.value = 35, 56
20.special {
  mode = tstamp
  depth = 2
  maxAge = 3600*24*3
  limit = 8
}

Я попробовал :
Код:

  10= RECORDS
  10.tables = tt_content
  10.select {
    #pidInList = this
    max=5
    orderBy = tstamp
    where = sys_language_uid = 0
    andWhere = colPos = 0 
  }
  10.wrap = <!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end-->

но без указания pid это не работает, а мне нужен поиск по всей таблице.

Заранее спасибо за ответы.

AlexMr 06.09.2012 17:47

Может кому пригодится - нашел расширение с ключом "gst_topcontent".
Выдает по умолчанию последний content из таблицы tt_content.
Гибко настраивается с помощью списка констант. Единственно - старовато.
Последнее изменение в 2006. Пришлось константы пр ftp настраивать,
т.к. ч/з новый менеджер расширений не получилось.

Вроде вопрос решился, но предыдущий вопрос не снимаю.
Было бы не плохо решать подобные вопросы силами TS и не зависеть
от дополнительных расширений.

-=UncleByte=- 06.09.2012 17:59

А просто настроить шаблон LATEST в tt_news что мешает? Для этого он и предназначен.

AlexMr 07.09.2012 17:13

Возможно Вас ввело в заблуждение слово "статьи".
Имелось ввиду содержимое всех страниц, а не только News.

-=UncleByte=- 08.09.2012 01:49

C одной стороны - ввело, с другой есть же возможность в tt_news делать новостной записью прямую ссылку на любой контент сайта.

AlexMr 08.09.2012 03:30

Честно говоря, не совсем представляю как можно настроить news-модуль таким образом. Вы имеете ввиду в ручную настраивать ссылки на одиночный контент?
Могли бы Вы подробней описать настройки или ссылку какую.
В любом случае спасибо за подсказку - буду копать.

-=UncleByte=- 08.09.2012 09:51

В tt_news есть три типа статей новостных: собственно статья, ссылка на страницу внутреннюю и ссылка на внешний адрес. Соответственно ссылка на внутреннюю страницу может вести на любой внутренний адрес, в том числе и на секции страниц.
А шаблон LATEST позволяет выводить именно самые последние (свежие) новости.

AlexMr 12.09.2012 20:20

Это хороший вариант для "нормального" сайта.
В этом же случае я писал для Интранет, где число редакторов довольно велико
и ответственного за назначение "последних" статей найти проблематично.

У меня получилось следующее:
на основе расширения gst_topcontent я получаю нужные поля из tt_content
(прямо в константах gst_topcontent можно добавить дополнительные условия
запроса или в коде добавить пару строк для опроса других таблиц)
и далее с помощью jquery.carousel получается неплохая бегущая строка с последними статьями.

Главное преимущество всего этого - редакторам не надо ничего делать вручную.
Главный недостаток - придется самому поддерживать в актуальном состоянии и новые функции не придут сами.

Вот если бы найти вариант делать подобную автоматизацию с помощью TS или настроить News ... :)

-=UncleByte=- 12.09.2012 20:48

Вообще ваш же код с RECORDS вполне подойдет, только использовать еще recursive для выборки записей и все - http://typo3.org/documentation/docum.../1/5/#id552862


Часовой пояс GMT +4, время: 09:00.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot