Textpattern - на русском языке

форум общения русскоязычных пользователей CMS Текстпаттерн

Вы не зашли.

#1 16-09-2005 23:55:00

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

как реализовать вывод статей автоматом по дате последней публикации?

Суть дела такова.
Статьи печатаются относительно нечасто но большими объёмами. Как выпуск газеты например smile)
Суть вопроса - каким макаром можно реализовать вывод статей по дате последней публикации??
Чтобы все это дело проходило автоматом из определённой категории (секции). Если кто сталкивался с подомным - поделитесь опытом... оч ндобно smile

Неактивен

 

#2 19-09-2005 11:43:29

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: как реализовать вывод статей автоматом по дате последней публикации?

Riff написал:

Суть вопроса - каким макаром можно реализовать вывод статей по дате последней публикации?

Если речь идет о выводе статей с помощью тэга txp:article, там есть атрибут сортировки sortby

Неактивен

 

#3 19-09-2005 22:35:35

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

Re: как реализовать вывод статей автоматом по дате последней публикации?

нет... в том то и дело что сорт не подходит... дело в том, что статьи должны выводиться ТОЛЬКО опубликованные определённого числа, и это число должно быть последним числом публикации

Неактивен

 

#4 20-09-2005 09:52:41

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: как реализовать вывод статей автоматом по дате последней публикации?

"Счастье - это когда тебя понимают!" :-)) Так в каком-то древнем фильме было?
Riff, не знаю как другие, а я, к сожалению, не могу понять что ты хочешь сделать. Может быть попробуешь переформулировать вопрос?
Или пример поподробнее распишешь?

Неактивен

 

#5 20-09-2005 12:08:36

glebotr
ять
Зарегистрирован: 25-06-2005
Сообщений: 1974
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Riff написал:

нет... в том то и дело что сорт не подходит... дело в том, что статьи должны выводиться ТОЛЬКО опубликованные определённого числа, и это число должно быть последним числом публикации

Ниасилил wink))
Нужны ВСЕ статьи от ТОГО ЧИСЛА, когда была опубликована ПОСЛЕДНЯЯ Статья?
Нужны ВСЕ СТАТЬИ от КАКОГО-ТО числа, отсортированные по времени?
Нужны ВСЕ СТАТЬИ за текущий день и только за него?


Пх’нглуи мглв’нафх Ленин Красная площадь вгах’нагл фхтагн
(В своем доме на Красной площади мертвый Ленин спит, ожидая своего часа (ктулх.))

Неактивен

 

#6 21-09-2005 11:45:19

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

Re: как реализовать вывод статей автоматом по дате последней публикации?

smile мдя... видимо формулировка у меня страдает smile))) посыпаю голову пеплом - виноват.
нужны ВСЕ статьи от ТОГО ЧИСЛА когда была опубликованна ПОСЛЕДНЯЯ статья smile)

Неактивен

 

#7 21-09-2005 12:13:33

glebotr
ять
Зарегистрирован: 25-06-2005
Сообщений: 1974
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Riff написал:

smile мдя... видимо формулировка у меня страдает smile))) посыпаю голову пеплом - виноват.
нужны ВСЕ статьи от ТОГО ЧИСЛА когда была опубликованна ПОСЛЕДНЯЯ статья smile)

Интересно, зачем такое? Пока не знаю, чем и помочь...  Руководства смотреть надобно.


Пх’нглуи мглв’нафх Ленин Красная площадь вгах’нагл фхтагн
(В своем доме на Красной площади мертвый Ленин спит, ожидая своего часа (ктулх.))

Неактивен

 

#8 21-09-2005 21:54:53

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

Re: как реализовать вывод статей автоматом по дате последней публикации?

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

Неактивен

 

#9 21-09-2005 22:33:56

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Напишите плагин, он видится мне не очень сложным.

Неактивен

 

#10 21-09-2005 23:25:04

cascad
буки
Зарегистрирован: 11-07-2005
Сообщений: 7

Re: как реализовать вывод статей автоматом по дате последней публикации?

а если весь материал будет добавлять в 23:59 а продолжение материала в 00:00 то облом выйдет big_smile smile
имхо сложновато механизм будет выглядеть
определить последнюю статью>двиг двигу передаёт число посл. статьи>из этого числа выводится материал Сервак не выдержит big_smile

Неактивен

 

#11 22-09-2005 08:48:10

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

статьи от ТОГО ЧИСЛА когда была опубликованна ПОСЛЕДНЯЯ статья

Задача определена достаточно четко. если все статьи написаны в 23:хх а последние две в 00:хх то выводим последние две. Всё вроде ясно.

определить последнюю статью>двиг двигу передаёт число посл. статьи>из этого числа выводится материал Сервак не выдержит big_smile

Достаточно вобще-то лишь определить когда написана статья и в случае если вень тот же что и у последней разрешить её выводить.
кароче реализуем тэг <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. wink Вперёд!

Неактивен

 

#12 22-09-2005 12:28:36

glebotr
ять
Зарегистрирован: 25-06-2005
Сообщений: 1974
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Все (не знающие пхп) дружно болеют за раждение первого русского плагина!


Пх’нглуи мглв’нафх Ленин Красная площадь вгах’нагл фхтагн
(В своем доме на Красной площади мертвый Ленин спит, ожидая своего часа (ктулх.))

Неактивен

 

#13 22-09-2005 20:50:42

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Решил вот подтверлить свои слова делом, написал я вам плагин wink

Плагин предназначен для вывода статей с датой равной дате последней статьи.

Использование

Создаём форму 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));
}

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

Отредактированно Nicck (04-10-2005 22:24:21)

Неактивен

 

#14 23-09-2005 00:50:04

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

Re: как реализовать вывод статей автоматом по дате последней публикации?

ого.... ну вы ребята даёте джазу... smile я ток вопрос задал, а уже плагин написали... РЕСПЕКТ!! smile я то не настолько плотно с пхп знаком чтоб воротить что-то, скорее чисто базовые понятия... но вы молодцы... сча пойду поколупаю новоиспеченный плагин smile

Неактивен

 

#15 23-09-2005 07:48:53

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Я тут выспался и придумал как улучшить плагин.

Вот, версия 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)

Неактивен

 

#16 23-09-2005 11:30:42

glebotr
ять
Зарегистрирован: 25-06-2005
Сообщений: 1974
Вебсайт

Re: как реализовать вывод статей автоматом по дате последней публикации?

Это довольно знаменательное событие. Предлагаю постить в новости, большими буквами на первую страницу сайта - "Вышел первый русский плангинЭ ;0)


Пх’нглуи мглв’нафх Ленин Красная площадь вгах’нагл фхтагн
(В своем доме на Красной площади мертвый Ленин спит, ожидая своего часа (ктулх.))

Неактивен

 

#17 24-09-2005 00:38:56

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

Re: как реализовать вывод статей автоматом по дате последней публикации?

Nicck - пойми, я специализируюсь совершенно на другом, и мне просто напросто банально не хватает времени разбираться с ПХП, но тебе действительно огромный респект иблагодарность от меня, хотя к сожалению пришлось от заказа этого отказаться sad но оперативность действий по отношению к ТП меня не вперфой приятно поражает smile всем огромное спасибо...

glebotr - согласен - ОГРОМНЫМИ буквами smile

Неактивен

 

#18 24-09-2005 16:21:46

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: как реализовать вывод статей автоматом по дате последней публикации?

Riff написал:

к сожалению пришлось от заказа этого отказаться

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

Неактивен

 

#19 25-09-2005 23:29:41

Riff
есть
Откуда: Минск
Зарегистрирован: 29-04-2005
Сообщений: 64

Re: как реализовать вывод статей автоматом по дате последней публикации?

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

Неактивен

 

Board footer

RSS   Rambler's Top100
Powered by PunBB
Textpattern.ru