2016-06-28 3 views
0

Как написать модуль, который отображается в течение нескольких дней после публикации?Joomla Дата публикации

Я написал что-то подобное, но он, похоже, не работает каждый раз.

Не могли бы вы меня исправить?

{source} 

<?php 
    $option = JRequest::getCmd('option'); 
    $view = JRequest::getCmd('view'); 
    if ($option=="com_content" && $view=="article") { 
    $ids = explode(':',JRequest::getString('id')); 
    $article_id = $ids[0]; 
    $article =& JTable::getInstance("content"); 
    $article->load($article_id); 
    $date = new JDate($article->get("publish_up")); 

    $currentTime = new JDate('now'); 

    $interval = $date->diff($currentTime); 

    if($interval->d == 0) { 
      echo 'dzisiaj' . "<br>"; 
     } 
     else if($interval->d == 1) { 
      echo 'wczoraj' . "<br>"; 
     } 
     else if($interval->d > 1) { 
      echo $interval->format('%a dni temu') . "<br>"; 
     } 


} 

?> 

{/source} 

ответ

0

Способ, которым вы получаете идентификатор статьи, выглядит странно. Попробуйте вместо этого что-то вроде этого:

$app = JFactory::getApplication(); 
$article_id = $app->input->getInt('id'); 

Это использует текущий Joomla API для извлечения HTTP переменных (more info here)

Тем не менее, я не вижу, почему именно ваш код должен провалить, как вы делаете это ...

+0

Я сделал это, и теперь он работает, но он получает неправильный идентификатор статьи. Он должен получить 41, но получает 22. $ article_id = JFactory :: getApplication() -> input-> get ('id'); Я думаю, что эта строка не работает так, как должна работать; –

0

Спасибо, но теперь у меня есть что-то вроде этого

{source} 
<?php 


    $app = JFactory::getApplication(); 
    $article_id = $app->input->getInt('id'); 
    $article =& JTable::getInstance("content"); 
    $article->load($article_id); 
    $date = new JDate($article->get("published")); 
    $currentTime = new JDate('now'); 
    echo $date; 
    $interval = $date->diff($currentTime); 

    if($interval->d == 0) { 
      echo 'dzisiaj'; 
     } 
     else if($interval->d == 1) { 
      echo 'wczoraj'; 
     } 
     else if($interval->d > 1) { 
      echo $interval->format('%a dni temu'); 
     } 




?> 

{/source} 

и он работает сейчас, но он показывает incorect даты официального объявления.