Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2

Клонируем модуль.

LIFE-STALKER

  • Истенный Атомовод
  • Юзер
  • 363
  • Репутация:6 
  • Предупреждения: 0 
  • Регистрация:
    25 Июн 2011
#1
И так пришла мне в голову идея запилить модуль блог, за основу я брал модуль новостей.
Что же нужно.
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 ;

Далее идем в /sys/settings/config.php
После строк
Code:
'news' => 
  array (
    'title' => 'Новости',
    'description' => 'Самые свежие новости',
    'max_lenght' => '15000',
    'announce_lenght' => '700',
    'per_page' => '3',
    'active' => '1',
    'comment_active' => 1,
    'comment_per_page' => '50',
    'comment_lenght' => '500',
    'max_attaches' => 10,
    'max_attaches_size' => 5000000,
    'img_size_x' => 300,
    'img_size_y' => 200,
    'acl' => 
    array (
      0 => 1,
      1 => 2,
      2 => 3,
    ),
    'fields' => 
    array (
    ),
  ),

Добавляем эти строки:
Code:
'blog' => 
  array (
    'title' => 'Блог',
    'description' => 'Блог сайта Life-Stalker.RU',
    'max_lenght' => '15000',
    'announce_lenght' => '700',
    'per_page' => '3',
    'active' => '1',
    'comment_active' => 1,
    'comment_per_page' => '50',
    'comment_lenght' => '500',
    'max_attaches' => 10,
    'max_attaches_size' => 5000000,
    'img_size_x' => 300,
    'img_size_y' => 200,
    'acl' => 
    array (
      0 => 1,
      1 => 2,
      2 => 3,
    ),
    'fields' => 
    array (
    ),
  ),

И всё, наш модуль блог готов.
В нем есть несколько недостатков.
- Отсутствие управления из админки
- Отсутствие комментариев
- Отсутствие загрузки изображений.

Отредактировано автором 23 Дек 2011

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#2
Ждём полноценной версии + в архиве :)
Хотя лично мне блоги не нужны

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#3
вот приблизительный список того что и где надо поправить:

Цитата
.htaccess

16 строка Добавляем название модуля


\admin\additional_fieldes.php

строка 32 и 33 добавляем соответственно английские названия и расшифровку для админки


\admin\category.php

строка 33 добавляем в список модули
строка 46 - 50 добавляем модуль и расшифровку


\admin\index.php

строка 53 после нее прописываем модуль
строка 56 приплючовать то что добавили $cnt_
блок 247 - 271 добавить блок с модулем как у других


\admin\
переделать файл news_dis.php, settings_news.php и сохранить с именем модуля


\admin\settings_sys.php

строка 71 добавляем такую же как для статей
строка 222, 223 добавляем такие же для своего


\admin\template\header.php

копируем блок с новостями или статьями и закручиваем его где то на 365 строке, да, его еще надо будет переделать под модуль


\admin\users_rules.php

строка 136 добавляем модули


\admin\users_rules.php.bac
строка 728 добавляем огромный блок с настройками


downloads.php

строка 23 добавляем блок такой же как у статей


Копируем папку модуля, лучше всего статей и меняем index.php


\sys\fnc\document_parser.class.php

строка 385 добавляем блок для RSS


\sys\inc\sitemap.class.php

строка 132, 135 добавляем свой модуль


\sys\settings\acl_rules.php

строка 468 добавляем блок настроек, можно скопировать со статей или новостей


\sys\settings\config.php

строка 93 добавляем блок настроек и описаний


\sys\settings\languages\russian.php

строка 212 прописываем для RSS

\sys\serrings\menu.dat

пытамся разобраться и исправить под новые модули
сериализовать можно тут http://livephp.net/serialize.html


\admin\settings_rss.php
строка 34 добавляем так же как и для остальных
строка 74 добавляем блоки для RSS

\sys\fnc\helpers.lib.php
строка 150 добавить модули


\modules\pages\index.php
строка 112 добавляем блок вывода на главной
строка 146 добавляем вывод автора
Строка 166, 173, 197,


Если надо то правим соответствующие плагины.



но это справедливо для версии 1.2 beta, на последней версии еще не делал ничего.
Создавалось это все не из новостей, а из статей. Новости какие то мудреные немного. Они содержат больше упоминаний в файлах чем статьи.

все изменения проводились в notepad++
Поиск файлов в которых менять проводились в Total commander

На работоспособность моих клонированных модулей можно посмотреть на voproshalka.ru , соответственно создавались модули question и games


p.s. собирался я собирался написать некоторый мануал как расклонировать модуль, но так руки и не дошли. Быть может позже.

Все мое имхо...
------
Не флуди и не да зафлудим будешь!

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#4
LIFE-STALKER, Ater, вот ваши бы маны, да соединить и было бы то, что надо.

К стати, чем больше версия, тем меньше мороки с клонированием, так как я стараюсь вообще убирать жесткие упоминания модулей. В скоре можно будет только в одном месте поменять значение и все. Типа
 1 
 2 
<?php $this->module 'blog';?>

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

LIFE-STALKER

  • Истенный Атомовод
  • Юзер
  • 363
  • Репутация:6 
  • Предупреждения: 0 
  • Регистрация:
    25 Июн 2011
#5
Ater делал как ты написал, все норм работает, правда при изменении настроек в модуле сразу страница не перезагружается с новыми настройками. Но это не беда.

lor08

  • Свой человек
  • Юзер
  • 130
  • Репутация:1 
  • Предупреждения: 0 
  • Регистрация:
    1 Фев 2011
#6
LIFE-STALKER пишет:
Далее идем в /sys/settings/config.php
После строк
лучше в админку скопировать фаил настроик новостей и подставить свои данные

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#7
Drunya пишет:
В скоре можно будет только в одном месте поменять значение и все.
это будет великий момент в истории Фапоса!!!!!!!

Все мое имхо...
------
Не флуди и не да зафлудим будешь!

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#8
Ater пишет:
это будет великий момент в истории Фапоса!!!!!!!
Я еще думаю над тем как избежать кучи манипуляций с шаблоном, конфигом, админкй и базой. Хотелось бы, чтобы можно было просто добавить новый модуль и он сам везде проинициализировался. Ну допустим с шаблоном еще понятно, если нет папки под конкретный модуль, юзаются шаблоны из каталога default, с конфигом тоже можно что-то придумать. Пока самое сложное это админка. Там очень многое захардкожено(прописано жестко).

Может написать некий регистратор модулей. Я пока в раздумии. Задача довольно объемная и светлых идей пока нет.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

LIFE-STALKER

  • Истенный Атомовод
  • Юзер
  • 363
  • Репутация:6 
  • Предупреждения: 0 
  • Регистрация:
    25 Июн 2011
#9
В принципе если сложить то что написал я и то что написал Ater за что ему спасибо, можно без проблем клонировать модуль, и сделать его полностью работоспособным ничем не отличным.
Только минусы этого:
1. Очень долго, лопатить каждый файл и т.д.
2. Можно запутаться при настройке модуля в админке как это случилось у меня. gg)

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#10
еще огромный минус это то что 1000 и 1 раз подумаешь а стоит ли обновиться на новую версию или так хорошо...

Все мое имхо...
------
Не флуди и не да зафлудим будешь!
1 2
Сейчас online: 29. Зарегистрированных: 2. Гостей: 27.