форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
Страниц: 1
Суть дела такова.
Статьи печатаются относительно нечасто но большими объёмами. Как выпуск газеты например )
Суть вопроса - каким макаром можно реализовать вывод статей по дате последней публикации??
Чтобы все это дело проходило автоматом из определённой категории (секции). Если кто сталкивался с подомным - поделитесь опытом... оч ндобно
Неактивен
Riff написал:
Суть вопроса - каким макаром можно реализовать вывод статей по дате последней публикации?
Если речь идет о выводе статей с помощью тэга txp:article, там есть атрибут сортировки sortby
Неактивен
нет... в том то и дело что сорт не подходит... дело в том, что статьи должны выводиться ТОЛЬКО опубликованные определённого числа, и это число должно быть последним числом публикации
Неактивен
"Счастье - это когда тебя понимают!" :-)) Так в каком-то древнем фильме было?
Riff, не знаю как другие, а я, к сожалению, не могу понять что ты хочешь сделать. Может быть попробуешь переформулировать вопрос?
Или пример поподробнее распишешь?
Неактивен
Riff написал:
нет... в том то и дело что сорт не подходит... дело в том, что статьи должны выводиться ТОЛЬКО опубликованные определённого числа, и это число должно быть последним числом публикации
Ниасилил ))
Нужны ВСЕ статьи от ТОГО ЧИСЛА, когда была опубликована ПОСЛЕДНЯЯ Статья?
Нужны ВСЕ СТАТЬИ от КАКОГО-ТО числа, отсортированные по времени?
Нужны ВСЕ СТАТЬИ за текущий день и только за него?
Неактивен
мдя... видимо формулировка у меня страдает ))) посыпаю голову пеплом - виноват.
нужны ВСЕ статьи от ТОГО ЧИСЛА когда была опубликованна ПОСЛЕДНЯЯ статья )
Неактивен
Riff написал:
мдя... видимо формулировка у меня страдает ))) посыпаю голову пеплом - виноват.
нужны ВСЕ статьи от ТОГО ЧИСЛА когда была опубликованна ПОСЛЕДНЯЯ статья )
Интересно, зачем такое? Пока не знаю, чем и помочь... Руководства смотреть надобно.
Неактивен
да блин... перерыл все, толкового решения не обноружил...этот гемор нужен тип для онлайн газеты, чтоб типа все материалы последнего выпуска офлайнового аналога были на главной.... честно говоря это скорее будет напрямую в темплейте править, а сами выпуски как разделы пускать
Неактивен
а если весь материал будет добавлять в 23:59 а продолжение материала в 00:00 то облом выйдет
имхо сложновато механизм будет выглядеть
определить последнюю статью>двиг двигу передаёт число посл. статьи>из этого числа выводится материал Сервак не выдержит
Неактивен
статьи от ТОГО ЧИСЛА когда была опубликованна ПОСЛЕДНЯЯ статья
Задача определена достаточно четко. если все статьи написаны в 23:хх а последние две в 00:хх то выводим последние две. Всё вроде ясно.
определить последнюю статью>двиг двигу передаёт число посл. статьи>из этого числа выводится материал Сервак не выдержит
Достаточно вобще-то лишь определить когда написана статья и в случае если вень тот же что и у последней разрешить её выводить.
кароче реализуем тэг <txp:if_article_тойже_даты_что_и_последняя_статья> и используем его в шаблоне формы для списка статей.
будет что-то типа:
function nck_if_article_curent($atts,$thing)
{
global $thisarticle;
//тут узнаем дату последней статьи (только число)
$condition = <дата последней статьи>==$thisarticle[<дата>];
return parse(Evalelse($thing, $condition));
}
?>
ну вот, а потом в форме <txp:if_наш>тело шаблона для статьи нужной даты[<txp:else/>тело шаблона для всех прочих]</txp:if_наш>
Вобщем это вполне по силам написать человеку знакомому с php и понимающему txp. Вперёд!
Неактивен
Все (не знающие пхп) дружно болеют за раждение первого русского плагина!
Неактивен
Решил вот подтверлить свои слова делом, написал я вам плагин
Плагин предназначен для вывода статей с датой равной дате последней статьи.
Использование
Создаём форму only_last_day:
<txp:nck_if_article_day>
<txp:title />
<hr />
<txp:body />
</txp:nck_if_article_day>
Используем её в шаблоне страницы:
<txp:article listform="only_last_day" />
Если мы точно пишем за день не больше допустим 10 статей то имеет смысл в шаблоне указывать лимит:
<txp:article listform="only_last_day" limit="10" />
Ну и собственно имеем только статьи с датой равной дате последней публикации.
Вобще плагин написан для примера, чтоб показать, что всё просто.
Вот код с комментариями:
// собственно начнём, необходимо некоторое знание php ;] function nck_if_article_day($atts,$thing) { // нам понадобятся данные о статье, чтоб определить выводить её или нет global $thisarticle; /* теперь выясним дату последней, необходимо некоторое знание sql в таблице textpattern (содержит все статьи) поле Posted определяет дату статьи Выбираем из таблицы textpattern поля Posted причём отсортированный в порядке убывания, нам же нужна последняя? Нужна только одна дата. Получаем примерно следующий запрос: SELECT Posted FROM textpattern ORDER BY Posted DESC LIMIT 1 В классе lib/txplib_db.php есть вобще несколько функция выборки данных, но я выбрал почему-то safe_row($things, $table, $where, $debug='') Вот это: ORDER BY Posted DESC LIMIT 1 мы засунем в $where. Оно там внутри используется как "where $where" потому конечный запрос будет выглядеть так: SELECT Posted FROM textpattern WHERE 1 ORDER BY Posted DESC LIMIT 1 Ну, вобщем вызываем: */ $rs = safe_row("Posted", "textpattern", "1 order by 'Posted' desc limit 1"); /* в $rs["Posted"] мы получили что-то вроде 2005-07-09 10:11:12, нас интересует только дата, тa что до пробела. Выкусим: */ list($date,$time) = split(' ',$rs["Posted"],2); /* UNIX timestamp текущей статьи содержит дату и время публикации текущей статьи находится в $thisarticle['posted']. Предобразуем к формату полученному из базы и сравниваем: */ $condition = date("Y-m-d",$thisarticle['posted']) == $date; /* Вот собственно и всё, теперь парсим то, что до <txp:else /> если даты совпадают и то что после него если не совпадают. */ return parse(Evalelse($thing, $condition)); }
Может конечно можно и оптимальней было решить эту задачу, не знаю. Меня и так устраивает.
Хотя мне то вобщем то никчему выводить статьи с датой как у последней публикации.
Отредактированно Nicck (04-10-2005 22:24:21)
Неактивен
ого.... ну вы ребята даёте джазу... я ток вопрос задал, а уже плагин написали... РЕСПЕКТ!! я то не настолько плотно с пхп знаком чтоб воротить что-то, скорее чисто базовые понятия... но вы молодцы... сча пойду поколупаю новоиспеченный плагин
Неактивен
Я тут выспался и придумал как улучшить плагин.
Вот, версия 0.2. nck_if_article_day_v.0.2.txt.
Теперь подробней:
Допустим мы в шаблоне страницы вызываем форму так: <txp:article listform="only_last_day" limit="10" />
Тогда функция nck_if_article_day вызывается 10 раз и 10 же раз выполняется запрос к базе для выяснения последней даты. Вобще говоря результат возвращается один и тот-же, и потому достаточно делать запрос лишь раз.
Модифицированный код:
function nck_if_article_day($atts,$thing) { static $date="first"; global $thisarticle; if("first"==$date) { $rs = safe_row("Posted", "textpattern", "1 order by 'Posted' desc limit 1"); list($date,$time) = split(' ',$rs["Posted"],2); } $condition = date("Y-m-d",$thisarticle['posted']) == $date; return parse(Evalelse($thing, $condition)); }
Я вобще говоря тоже плохо знаю и php и sql и постоянно лажу в мануал, потому думаю, что написание плагинов такого уровня вполне доступно любому текстпарттеру.
Отредактированно Nicck (04-10-2005 22:25:23)
Неактивен
Это довольно знаменательное событие. Предлагаю постить в новости, большими буквами на первую страницу сайта - "Вышел первый русский плангинЭ ;0)
Неактивен
Nicck - пойми, я специализируюсь совершенно на другом, и мне просто напросто банально не хватает времени разбираться с ПХП, но тебе действительно огромный респект иблагодарность от меня, хотя к сожалению пришлось от заказа этого отказаться но оперативность действий по отношению к ТП меня не вперфой приятно поражает всем огромное спасибо...
glebotr - согласен - ОГРОМНЫМИ буквами
Неактивен
Riff написал:
к сожалению пришлось от заказа этого отказаться
раз уж заказа этого нет, то, если не секрет, может быть расскажешь, для чего такой изощренный вывод статей можно приспособить?
Неактивен
да просто как божий день... банальный сайт газеты, и они хотели чтоб типа на главной странице были все материалы последнего выпуска
Неактивен
Страниц: 1