число и месяц

#1 3 ноября 2009 в 20:26
Собственно как изменить падеж везде где выводятся число и месяц, например в ленте выводится: 04, Октябрь; хочу чтобы было 4 октября. Можно на примере ленты, думаю остальное по аналогии переделаю.
#2 3 ноября 2009 в 21:04
Насколько мне известно, в шаблоне smarty эту проблему можно решить с помощью модификатора spellcount
#3 3 ноября 2009 в 21:17
feba7, поподробней можно?
вот запрос к базе
  1. $sql = "SELECT DISTINCT p.id, p.title, p.file, p.user_id, u.id as user_id, u.nickname as nickname, u.login as login,
  2. IF(DATE_FORMAT(p.pubdate, '%d-%m-%Y')=DATE_FORMAT(NOW(), '%d-%m-%Y'), DATE_FORMAT(p.pubdate, '<strong>Cегодня</strong> в %H:%i'),
  3. IF(DATEDIFF(NOW(), p.pubdate)=1, DATE_FORMAT(p.pubdate, 'Вчера в %H:%i'),DATE_FORMAT(p.pubdate, '%d, %M') )) as pubdate
  4. FROM cms_photo_files p, cms_users u
  5. WHERE p.user_id = u.id AND ({$friends_sql})
  6. ORDER BY p.pubdate DESC
  7. ";
в базе в pubdate хранится дата в виде 2009-08-31 18:27:33.
#5 3 ноября 2009 в 22:08
все решилось проще)))
файл cms.php
  1. public function getRusDate($datestr){
  2. $datestr = str_replace('January', 'Января', $datestr);
  3. $datestr = str_replace('February', 'Февраля', $datestr);
  4. $datestr = str_replace('March', 'Марта', $datestr);
  5. $datestr = str_replace('April', 'Апреля', $datestr);
  6. $datestr = str_replace('May', 'Мая', $datestr);
  7. $datestr = str_replace('June', 'Июня', $datestr);
  8. $datestr = str_replace('July', 'Июля', $datestr);
  9. $datestr = str_replace('August', 'Августа', $datestr);
  10. $datestr = str_replace('September', 'Сентября', $datestr);
  11. $datestr = str_replace('October', 'Октября', $datestr);
  12. $datestr = str_replace('November', 'Ноября', $datestr);
  13. $datestr = str_replace('December', 'Декабря', $datestr);
  14. return $datestr;
  15. }
#6 3 ноября 2009 в 22:59
Эге… да ты умница! Очень изящное решение… и ничего склонять не надо)))))
#7 3 ноября 2009 в 23:23


Эге… да ты умница!

feba7
zst
на самом деле дошло, когда понял, что из базы месяца по английски выводятся)))
спасибо за ответы, по ссылке — почитаю.
вопрос к максисофту: ты употребляешь слово парсить, если не сложно объясни на примере, можно даже на этом joke
#8 4 ноября 2009 в 11:42
В таком случае в модуле архив новостей выводится: Ноября, 2009; Октября, 2009; Сентября, 2009; а при открытии ссылки на архив открывается страница с надписью Материалы за Ноября 2009 года.
#9 4 ноября 2009 в 15:26
Тогда самим прейдётся исправлять вид отображения новости (и нетолько) с Ноября, 2009 на — примерно такое новость опубликована 2009 года, Ноября месяца. v
#10 4 ноября 2009 в 16:30
можно сделать копию функции getRusDate, скажем getRusDate1 — с новым содержимым, и там, где необходимо использовать ее.
#11 19 ноября 2009 в 21:43


можно сделать копию функции getRusDate, скажем getRusDate1 — с новым содержимым, и там, где необходимо использовать ее.

fuze
Именно. Я так и сделала. Определила ее прямо в своем модуле, а из тела функции модуля вызываю эту функцию. И у меня теперь пишет: день рождения 3 июня 1978.
Спасибо тебе, дорогой, за идею. Я раньше пыталась решить эту проблему за счет шаблонизатора смарти, но вышла такая фигня, что и говорить стыдно. Теперь мой будущий модуль Дни рождения правильно все пишет)))))
#12 19 ноября 2009 в 23:06
рад, что приношу свежие мысли v
#13 20 ноября 2009 в 12:22

Далеко не самая эффективная и скоростная функция...

CrashCool
предложи лучше, поправим
#14 20 ноября 2009 в 12:29
CrashCool, никто не спорит, но предложи иной способ брать из базы днюху, и чтобы у тебя писало: день рождения 3 мая, а не 1980-05-03, как она там хранится. Если мысли есть — излагай, а то, что str_replace() не рекомендуют для обработки больших массивов информации — мы и так знаем)))))
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.