И так пришла мне в голову идея запилить модуль блог, за основу я брал модуль новостей.
Что же нужно.
1. Идем в папку с шаблоном клонируем папку 12/html/news и переименовываем склонированную папку в blog.
2. Идем в папку /modules и так клонируем папку news, после чего переименовываем её в blog
3. Открываем файл /modules/blog/index.php (я открывал через Adobe Dreamweawer) и заменяем в файле все news на blog(В Dreamweawer'e это делается достаточно просто, наживаем Ctrl+F в первое текстовое поле вводим "news" без кавычек, во второе "blog" тоже без кавычек и далее нажимаем на кнопку заменить все)
После того как операция выполнена сохраняем файл и выполняем следующие запросы к базе данных. Внимание не забудьте сделать бекап БД перед выполнением запросов.
Запрос №1
Code:
CREATE TABLE IF NOT EXISTS `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`main` text NOT NULL,
`views` int(11) DEFAULT '0',
`date` datetime DEFAULT NULL,
`category_id` int(11) NOT NULL,
`author_id` int(11) NOT NULL,
`comments` int(11) NOT NULL DEFAULT '0',
`tags` varchar(255) NOT NULL,
`description` text NOT NULL,
`sourse` varchar(255) NOT NULL,
`sourse_email` varchar(255) NOT NULL,
`sourse_site` varchar(255) NOT NULL,
`commented` enum('0','1') NOT NULL DEFAULT '1',
`available` enum('0','1') NOT NULL DEFAULT '1',
`view_on_home` enum('0','1') NOT NULL DEFAULT '1',
`on_home_top` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
Запрос №2
Code:
CREATE TABLE IF NOT EXISTS `blog_add_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`field_id` int(11) NOT NULL,
`entity_id` int(11) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Запрос №3
Code:
CREATE TABLE IF NOT EXISTS `blog_add_fields` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(10) NOT NULL,
`name` varchar(100) NOT NULL,
`label` varchar(255) NOT NULL,
`size` int(11) NOT NULL,
`params` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Запрос №4
Code:
CREATE TABLE IF NOT EXISTS `blog_attaches` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`entity_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`attach_number` int(11) NOT NULL,
`filename` varchar(100) NOT NULL,
`size` bigint(20) NOT NULL,
`date` datetime NOT NULL,
`is_image` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Запрос №5
Code:
CREATE TABLE IF NOT EXISTS `blog_comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`entity_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL DEFAULT '0',
`name` varchar(100) NOT NULL,
`message` text NOT NULL,
`ip` varchar(50) NOT NULL,
`mail` varchar(150) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Запрос №6
Code:
CREATE TABLE IF NOT EXISTS `blog_sections` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT '0',
`announce` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`view_on_home` enum('0','1') NOT NULL DEFAULT '1',
`no_access` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
И всё, наш модуль блог готов.
В нем есть несколько недостатков.
- Отсутствие управления из админки
- Отсутствие комментариев
- Отсутствие загрузки изображений.
\modules\pages\index.php
строка 112 добавляем блок вывода на главной
строка 146 добавляем вывод автора
Строка 166, 173, 197,
Если надо то правим соответствующие плагины.
но это справедливо для версии 1.2 beta, на последней версии еще не делал ничего.
Создавалось это все не из новостей, а из статей. Новости какие то мудреные немного. Они содержат больше упоминаний в файлах чем статьи.
все изменения проводились в notepad++
Поиск файлов в которых менять проводились в Total commander
На работоспособность моих клонированных модулей можно посмотреть на voproshalka.ru , соответственно создавались модули question и games
p.s. собирался я собирался написать некоторый мануал как расклонировать модуль, но так руки и не дошли. Быть может позже.
Все мое имхо...
------
Не флуди и не да зафлудим будешь!
LIFE-STALKER, Ater, вот ваши бы маны, да соединить и было бы то, что надо.
К стати, чем больше версия, тем меньше мороки с клонированием, так как я стараюсь вообще убирать жесткие упоминания модулей. В скоре можно будет только в одном месте поменять значение и все. Типа
Ater делал как ты написал, все норм работает, правда при изменении настроек в модуле сразу страница не перезагружается с новыми настройками. Но это не беда.
Я еще думаю над тем как избежать кучи манипуляций с шаблоном, конфигом, админкй и базой. Хотелось бы, чтобы можно было просто добавить новый модуль и он сам везде проинициализировался. Ну допустим с шаблоном еще понятно, если нет папки под конкретный модуль, юзаются шаблоны из каталога default, с конфигом тоже можно что-то придумать. Пока самое сложное это админка. Там очень многое захардкожено(прописано жестко).
Может написать некий регистратор модулей. Я пока в раздумии. Задача довольно объемная и светлых идей пока нет.
В принципе если сложить то что написал я и то что написал Ater за что ему спасибо, можно без проблем клонировать модуль, и сделать его полностью работоспособным ничем не отличным.
Только минусы этого:
1. Очень долго, лопатить каждый файл и т.д.
2. Можно запутаться при настройке модуля в админке как это случилось у меня.