mail: admin@shopos.ru
Обратная связь


Войти



Автор Тема: Как сделать вывод статей как новости на главной

Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
в файле themes\default\module\main_content.html

есть {$MODULE_latest_news}
хотелось бы иметь копию модуля только с статьями напр. {$MODULE_latest_articles}
« Последнее редактирование: 27 Октябрь 2009, 02:56:28 от Евгений »

Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
Евгений помоги а то самому такого не сделать  :(

Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
ткните если уже реализовано !

Оффлайн support

  • Администратор
  • Профи
  • *****
  • Сообщений: 6503
    • Просмотр профиля
    • Скрипты интернет-магазина
Это не так сложно сделать, т.е. модуль со списком статей по центру главной страницы.

1. Создавайте файл modules/articles.php с таким содержимым:
Цитировать
<?php
$module = new osTemplate;
$module->assign('tpl_path', 'themes/'.CURRENT_TEMPLATE.'/');

$sql = "select a.articles_id, ad.articles_name, ad.articles_description from " . TABLE_ARTICLES . " a left join " . TABLE_ARTICLES_DESCRIPTION . " ad on ad.articles_id = a.articles_id where a.articles_status = '1' ORDER BY articles_date_added DESC LIMIT " . MAX_NEW_ARTICLES_PER_PAGE . "";

$row = 0;
$module_content = array ();

$query = osDBquery($sql);
while ($one = os_db_fetch_array($query,true)) {
      $SEF_parameter = '';
      if (SEARCH_ENGINE_FRIENDLY_URLS == 'true')
         $SEF_parameter = '&headline='.os_cleanName($one['articles_name']);

    $module_content[]=array(
        'ARTICLES_NAME' => $one['articles_name'],
        'ARTICLES_DESCRIPTOIN' => $one['articles_description'],
        'ARTICLES_URL'    => os_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $one['articles_id'] . $SEF_parameter)
        );

}
if (sizeof($module_content) > 0) {
    $module->assign('language', $_SESSION['language']);
    $module->assign('module_content',$module_content);
   // set cache ID
    if (!CacheCheck()) {
      $module->caching = 0;
      $module= $module->fetch(CURRENT_TEMPLATE.'/module/articles_default.html');
   } else {
        $module->caching = 1;
        $module->cache_lifetime=CACHE_LIFETIME;
        $module->cache_modified_check=CACHE_CHECK;
        $module = $module->fetch(CURRENT_TEMPLATE.'/module/articles_default.html',$cache_id);
   }
   $default->assign('MODULE_articles', $module);
}
?>


2. Создавайте шаблон для модуля по центру, т.е. файл /themes/default/module/articles_default.html с таким содержимым:
Цитировать
{config_load file="$language/lang.conf" section="boxes"}
<h1><a href="{$ARTICLES_URL}">{#heading_articles#}</a></h1>

{foreach name=aussen item=module_data from=$module_content}
<div class="page">

<div class="pageItem">

<dl class="itemLatestNewsDefault">
<dt class="itemNews">
</dt>

<dd class="itemNews">
<strong><a href="{$module_data.ARTICLES_URL}">{$module_data.ARTICLES_NAME}</a></strong>
</dd>

<dd class="itemNews">
{$module_data.ARTICLES_DESCRIPTOIN|truncate:255:"...":true}
</dd>

</dl>

</div>

</div>
{/foreach}

<div class="clear"></div>
<p></p>


естественно для каждого шаблона код будет разным.

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

1. В файл /include/center_modules.php добавляйте:
  
Цитировать
require(DIR_WS_MODULES . FILENAME_ARTICLES)

;

например после:
  
Цитировать
require(DIR_WS_MODULES . FILENAME_FEATURED);


2. В шаблон главной страницы /themes/ваш_шаблон/module/main_content.html добавляйте:
Цитировать
{$MODULE_articles}


после:
Цитировать
{$MODULE_latest_news}


Всё, теперь после блока новостей будет блок со статьями.

Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
Работает, спасибо.

Интересует как вывести дату добавления статьи на главной, у новостей работает такой запрос {$module_data.NEWS_DATA} все перерыл не нашел как выводить для статей

Оффлайн support

  • Администратор
  • Профи
  • *****
  • Сообщений: 6503
    • Просмотр профиля
    • Скрипты интернет-магазина
еслиб все перерыл - нашел бы

в коде, который в первом посте

заменить

Цитировать
  $module_content[]=array(
        'ARTICLES_NAME' => $one['articles_name'],
        'ARTICLES_DESCRIPTOIN' => $one['articles_description'],
        'ARTICLES_URL'    => os_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $one['articles_id'] . $SEF_parameter)
        );


на

Цитировать
  $module_content[]=array(
        'ARTICLES_NAME' => $one['articles_name'],
        'ARTICLES_DESCRIPTOIN' => $one['articles_description'],
        'ARTICLES_URL'    => os_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $one['articles_id'] . $SEF_parameter),
        'ARTICLES_DATE'    => $one['articles_date_added]
        );


и метка

{$module_data.ARTICLES_DATE}

должна работать

Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
не работает

Оффлайн support

  • Администратор
  • Профи
  • *****
  • Сообщений: 6503
    • Просмотр профиля
    • Скрипты интернет-магазина
еще

заменить

Цитировать
$sql = "select a.articles_id, ad.articles_name, ad.articles_description from " . TABLE_ARTICLES . " a left join " . TABLE_ARTICLES_DESCRIPTION . " ad on ad.articles_id = a.articles_id where a.articles_status = '1' ORDER BY articles_date_added DESC LIMIT " . MAX_NEW_ARTICLES_PER_PAGE . "";


на

Цитировать
$sql = "select a.articles_id, articles_date_added, ad.articles_name, ad.articles_description from " . TABLE_ARTICLES . " a left join " . TABLE_ARTICLES_DESCRIPTION . " ad on ad.articles_id = a.articles_id where a.articles_status = '1' ORDER BY articles_date_added DESC LIMIT " . MAX_NEW_ARTICLES_PER_PAGE . "";


Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
Заработало! только как удалить 2010-01-01 01:01:01 то что выделил ?

Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
как заменить смешную дату 2010-01-01 01:01:01.
напр. так 2010.01.01

Оффлайн support

  • Администратор
  • Профи
  • *****
  • Сообщений: 6503
    • Просмотр профиля
    • Скрипты интернет-магазина
как заменить смешную дату 2010-01-01 01:01:01.
напр. так 2010.01.01


если сам еще не сделал.

Цитировать
$module_content[]=array(
        'ARTICLES_NAME' => $one['articles_name'],
        'ARTICLES_DESCRIPTOIN' => $one['articles_description'],
        'ARTICLES_URL'    => os_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $one['articles_id'] . $SEF_parameter),
        'ARTICLES_DATE'    => os_date_short($one['articles_date_added])
        );


Оффлайн foton

  • Опять с своими глупыми вопросами
  • Ветеран
  • *****
  • Сообщений: 886
    • Просмотр профиля
оо, работает, спасибо!

Оффлайн ProRab

  • Ветеран
  • *****
  • Сообщений: 613
    • Просмотр профиля
А как нужно изменить запрос к БД, чтобы на главной выводились не статьи, а только новые статьи? (articles_new)

Оффлайн support

  • Администратор
  • Профи
  • *****
  • Сообщений: 6503
    • Просмотр профиля
    • Скрипты интернет-магазина
а блоке новые статьи и так выводятся только новые статьи

там вот такой запрос

Цитировать
$sql = "select a.articles_id, ad.articles_name, ad.articles_description from " . TABLE_ARTICLES . " a left join " . TABLE_ARTICLES_DESCRIPTION . " ad on ad.articles_id = a.articles_id where a.articles_status = '1' and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' ORDER BY articles_date_added DESC LIMIT " . MAX_NEW_ARTICLES_PER_PAGE . "";


Оффлайн tulgha

  • Постоялец
  • ***
  • Сообщений: 244
    • Просмотр профиля
$query = osDBquery($sql);
while ($one = os_db_fetch_array($query,true)) {
      $SEF_parameter = '';
      if (SEARCH_ENGINE_FRIENDLY_URLS == 'true')
         $SEF_parameter = '&headline='.os_cleanName($one['articles_name']);


Вместо помеченного красным должно быть:
Цитировать
&article


 

Copyright 2016 ShopOS