Модуль Модуль статьи

Sam Jack

Капитан-Узурпатор
Команда форума
Созидатель
5 Май 2015
13.917
4.897
113
Россия
null-prog.ru
1. Файл .htaccess, добавляем строчки:
RewriteRule ^articles\.html$ index.php?articles=yes [L] RewriteRule ^show_articles_([0-9]+)\.html$ index.php?fullarticles=$1 [L]

Обрати внимание на articles и fullarticles. Дальше ты их увидишь.
2. Создаем в БД таблицу аналогичную по структуре новостям (news_table) articles_table (не забываем о префиксе БД).
Код:
-- Структура таблицы `articles_articles` DROP TABLE IF EXISTS `articles_table`; CREATE TABLE IF NOT EXISTS `articles_table` ( `NID` int(11) NOT NULL AUTO_INCREMENT, `add_date` date DEFAULT NULL, `title` text, `textToPrePublication` text, `textToPublication` mediumtext, `textToMail` text, `add_stamp` int(11) DEFAULT NULL, PRIMARY KEY (`NID`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=0 ; COMMIT;
3. Вносим изменения в файл core/config/tables.inc.php: находим
Код:
if ( !defined('NEWS_TABLE') ) { define('NEWS_TABLE', 'sun_news_table'); и копируем - меняем - добавляем, и получаем if(!defined('ARTICLES_TABLE')) { define('ARTICLES_TABLE', 'articles_table'); }
4. core/languages/russian.php - тут все копируем, что касалось новостей и переименовываем, например: define('ADMIN_ARTICLES', 'Статьи');
5. setting_constants.sql добавляем
Код:
insert into SETTINGS_TABLE (settings_groupID, settings_constant_name, settings_value, settings_title, settings_description, settings_html_function, sort_order) VALUES (2, 'CONF_ARTICLES_COUNT_IN_CUSTOMER_PART', '3', 'Количество записей в блоках статей', 'Пожалуйста, укажите, сколько ссылок показывать в блоках статей магазина.', 'setting_TEXT_BOX(2,', 11); insert into SETTINGS_TABLE (settings_groupID, settings_constant_name, settings_value, settings_title, settings_description, settings_html_function, sort_order) VALUES (2, 'CONF_ARTICLES_COUNT_IN_ARTICLES_PAGE', '10', 'Количество записей на странице статей', 'Пожалуйста, укажите, сколько последних статей показывать на странице с аннотациями', 'setting_TEXT_BOX(2,', 12); insert into BLOCKS_TABLE (title, content, bposition, active, which, sort, html, url, admin, about, pages, dpages, categories, products) VALUES ('Статьи', '', 4, 1, 0, 9, 1, 'articles.tpl.html', 0, 'Краткий блок статей. Без вывода краткого текста статьи.', 'a:0:{}', 'a:0:{}', 'a:0:{}', 'a:0:{}'); insert into BLOCKS_TABLE (title, content, bposition, active, which, sort, html, url, admin, about, pages, dpages, categories, products) VALUES ('Обзор статей', '', 2, 0, 1, 17, 1, 'articles_center.tpl.html', 0, 'Центральный блок статей. Выводит заголовок и краткое описание статьи.', 'a:1:{i:0;s:13:"home.tpl.html";}', 'a:0:{}', 'a:0:{}', 'a:0:{}');
6. core/functions/news_function.php копируем в core/functions/articles_function.php
В нем хранятся все функции по работе с новостями(для нас уже будут для работы со статьями), в этом файле (articles_function.php) переименовываем функции, например так:
было function newsGetNewsToCustomer() стало articlesGetArticlesToCustomer(), не забываем также о константах в файле, их нужно так же переименовать, например, NEWS_TABLE переименовываем на ARTICLES_TABLE (эта константа у нас нами была прописана в core/config/tables.inc.php). В принципе, во всех файлах, что я правил я заменял news на articles, для унификации так сказать.
7. Копируем core/includes/news.php в core/includes/articles.php . Правим его (переименовываем функции, константы, переменные). Именно этот скрипт и отвечает за обработку темплейтов статей (потом скопируем и их show_articles.tpl.html, show_full_articles.tpl.html). В этом же скрипте указаны имена GET POST переменных (см. выше .htaccess)!!!!!!! они сквозные по всему движку (articles, fullarticles)
ну и т.д.
8. И чтоб добавить в админку - core/tpl/admin/menu.tpl.html
после 501 строчки (примерно так

/table> ) добавляем
Код:
<table class="adn"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=articles">{$smarty.const.ADMIN_ARTICLES}</a></td></tr></table>
9. core/includes/admin/modules.php добавляем так чтоб получилось:
Код:
$admin_dpt = array( "id" => "modules", //department ID "sort_order" => 40, //sort order (less `sort_order`s appear first) "name" => ADMIN_MODULES, //department name "sub_departments" => array ( array("id"=>"news", "name"=>ADMIN_NEWS), array("id"=>"articles", "name"=>ADMIN_ARTICLES), array("id"=>"survey", "name"=>ADMIN_VOTING), array("id"=>"shipping", "name"=>ADMIN_STRING_SHIPPING_MODULES), array("id"=>"payment", "name"=>ADMIN_STRING_PAYMENT_MODULES), array("id"=>"linkexchange", "name"=>ADMIN_STRING_MODULES_LINKEXCHANGE), array("id"=>"yandex", "name"=>"Яндекс.Маркет" ) ) ); add_department($admin_dpt);
В темплайтах тоже самое творим.
10. core\tpl\admin\modules_articles.tpl.html
11. core\includes\head.php после строки 25
elseif (isset($_GET["fullnews"])) // fullnews => get title ....

добавить по аналогии
Код:
elseif (isset($_GET["fullarticles"])) // fullarticles => get title { $fullnews_array_head = articlesGetFullArticlesToCustomer($_GET["fullarticles"]); if ($fullnews_array_head["title"]) $page_title = $fullnews_array_head["title"].". ".CONF_SHOP_NAME; else $page_title = CONF_DEFAULT_TITLE.". ".CONF_SHOP_NAME; $meta_tags = ""; if ( CONF_HOMEPAGE_META_DESCRIPTION != "" ) $meta_tags .= "<meta name=\"description\" content=\"".CONF_HOMEPAGE_META_DESCRIPTION."\"/>\n"; if ( CONF_HOMEPAGE_META_KEYWORDS != "" ) $meta_tags .= "<meta name=\"keywords\" content=\"".CONF_HOMEPAGE_META_KEYWORDS."\"/>\n"; }