Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Пересоздание движка для новостного районного сайта.


Пересоздание движка для новостного районного сайта.

Сообщений 1 страница 20 из 82

1

Всем превед!

Я тут решил организовать отдельный топик, причём у нас в ЕТП в надежде, что где-то мне наши ребята идеей помогут, а также я ссылку на топик дам главреду нашему А. К. Никифорову, дабы он видел, что работы ведутся.
Видите ли, сам-то сайт висит сейчас нетронутый, ибо я работаю в Денвере и блокноте AkelPad. Не видно моей работы, в опчем :)
Я, конечно же, могу и у себя на сайте бложик вести или в ЖЖ например - но предпочёл здесь, так как мне дома уютнее, скажем так :)
Надеюсь, никто не против, и буду рад дельным советам. Если помешает - снесу.

Наверное, стоит перенести посты про новостной сайт из темки про Элизиум сюда, но и лень и некогда, просто продолжу здесь.

0

2

Изрядно промучался с индексом, но не срослось пока что.
Буду полностью переписывать некоторые вещи - например, прямо сейчас переписываю механизм задатчика заголовка страницы, он для разных разделов разный и теперь будет на свитчах-кейсах, так логичнее и проще.

0

3

КУ всем.
В опчем, я настолько задолбался перекукоживать движок под шаблоны - что за три дня настропалил phpBB2 в некое подобие CMS)))
И снова тот же вопрос: почему phpBB2?
Ответ, развёрнуто:
1) Мне будет легче пересобрать под него БД - фактически, я сам себе парсер буду, опыт есть.
2) Шаблоны в наличии, готовые; мало того - вследствие простоты конструкции легко будет запилить шаблон на базе оригинального хтмл сайта.
3) Опять же, простота  движка; скорость прогрузки - бешеная.
4) Лёгкость администрирования и постинга новостей; новости кидаем в специально отведённые темы, они вылетают на новостной странице. Сам форум предполагается скрыть от посетителя - это легко решается административно. Также, как вариант, можно в теме по умолчанию для форума (которую видят посетители), тупо вырезать весь лишний контент, оставив лишь новостную часть, а для постеров или админов оставить дефолтную темку subSilver или proSilver, например, со всеми кишками; так даже лучше, я полагаю.
5) Поддержка языков - я полагаю, это очень пригодится, так как в планах сделать хакасскоязычную версию. При этом - лопатить придётся немного, лишь несколько языковых файлов.
6) И ещё много чего.

Как-то так.
Я перепахал движок, собрав его на базе моей, показанной тут структуры; форумный движок phpBB2 сейчас не опознаётся вовсе.

Правда, ещё много чего придётся либо впаять в движок, либо создать заново на основе разных наработок - но это много проще, нежели писать движок заново. Сейчас у меня есть всё, что нужно - поддержка любых БД, языков, шаблонов, при желании легко подключить конференцию - то есть, тупо админстративно разрешить.

Работаем.

0

4

Сейчас у меня стоят такие задачи:
1) Вписать несколько ББ-кодов для постинга, ну там, алайны, шрифты, Ютуб и прочая.
2) Пересобрать портал, дабы управлялся из БД - у меня есть уже готовые варианты, надо их только вкукожить.
3) В портал вкукожить отображение новостей - тоже не сверхпроблема, я полагаю.
4) Когда отщекотаю механизм - буду пилить шаблон под новости:)

ЗЫ Кстати, удалось легко и ненапряжно адаптировать шаблонизатор от расширенной версии, со всеми функциями из phpBB3 - что не может не радовать :)
Теперь надо будет в админке сделать модуль управления вкорячиванием кусков кода во фронт-энд: примерно так было сделано на оригинальном сайтодвижке, там таким мухтаром вставлены баннеры и модули некоторые.
Сейчас это сделать будет гораздо проще :)

0

5

Ну, в опчем, новостЯ постятся, на странице портала показываются. Там были сложности, но они побеждены.
Надо настроить теперь:
1) Чтоб была передовица отдельно, в которой будет стоять слайдер на несколько постов - как на ориг. сайте.
2) Таки доделать ББкоды - они теперь постятся, но новые  не работают.
Ещё много чего - но надо решить сначала это.

Немного начал делать новый шаблон; планирую его программно приколотить к порталу, то есть, новостной странице.

0

6

Сделал финт ушами - добавил возможность править новости непосредственно с портала.

https://i.imgur.com/cYEz3SA.jpg

Загводка была в поиске шаблона отдельной новости - нашёл, выяснил, где и что стряпает новость (отдельный класс в news.php), остальное дело техники: так как все проверки по допускам на постинг и прочая делают снаружи отдельно - без лишних проверок замутил код на кнопку прямо в классе стряпания новости.
В итоге - всё работает.

Пока на оформление не смотрю - а смотрю на код и его работу.

ЗЫ "АААА" в заголовке новости - проверка и контроль работоспособности, уже убрано.

0

7

Вот поддержку хэштегов бы вкукожить - но я пока не знаю, как именно это сделать...
Добавлено спустя 10 минут 48 секунд:
Сходил к "Выживальщикам на phpBB2 (англ.)", спросил - они тоже не особо в курсях. Говорили про некие попытки ещё во времена проектирования phpBB2, но туманно и неясно, ссылок нет :(

0

8

ТакЪ.
ББкоды заработали - теперь имеем, из вкукоженного, алайны лево-центр-право,

Код:
[left]CONTENT[/left] - аналог CSS align:left;
[middle]CONTENT[/middle] - аналог CSS align:center;
[right]CONTENT[/right] - аналог CSS align:right;

бр (брейклайн),
Ютуб-видео

Код:
[video]LINK[/video]

и спойлер с зачёркиванием

Код:
[spoiler=TEXT]CONTENT[/spoiler]

ББкод брейклайна

Код:
[br]

- вставлен вынужденно, из-за косячного парсера, я с этим когда-то намучался, и  мне посоветовали такую штуку внедрить - причём, движок его, этот ббкод сам юзает, но кнопки такой нету, что, впрочем, не мешает при необходимости самому этот ббкод прописать, и он будет работать.

0

9

ТакЪ.
Вот тут что подумалось: а ведь у меня каментить могут не только лишь все - мало кто может это делать, ведь для этого придётся регаться...
Обычно же на атких сайтах каментить можно всем - с указанием почты и тд и тп.
Придётся это как-то решать...

И, к тому же, надо капчу приcpать, а также возможность каментить прямо из новости...

Хм...
Думаю пока...

0

10

Прочистил кэш сайта (он с кэшированием), и заработала даже либа HighSlide.
Отныне все картинки можно смотреть через Хайслайд, что, несомненно, очень удобно.

0

11

Мысля пришла. Пост будет обновляться.
Делаем вот что:
1) Создаём каталог ./details/modules/
2) Делаем файл, ну допустим, ./portal_news.php  - это будет наша новостная страница, потом переименуем как надо.
3) Из админки выдираем часть кода, который читает каталог админки и подгружает модули админки. Добавляем код в ./portal_news.php  - теперь наш портал умеет в модули.
4) В БД добавляем таблицу phpbb_portal_modules с полями module_name и module_state  - сюда будем через админку портала подключать модули, точно так же, как подключаются шаблоны стилей форума - часть этого кода можно взять оттуда же. Таким мухтаром, будет возможно модули как угодно подключать к порталу, добавлять или удалять.
5) Все модули, буде таковые я добавлю со старого движка - придётся переписать под phpBB2.
6) Шаблоны модулей, однако, придётся хранить там же, где и сами модули, а также стили к ним, если нужны таковые. Впрочем, тут главное назвать шаблон также, как модуль, остальное нетрудно. Либо таки присобачить (если брать код не от админки, а сразу из стилей) шаблонам отдельные папки, тогда вообще легкотня.
7) Из ныне работающего портала вынуть код отдельных модулей и перекукожить его в виде модулей.
8) Тут ещё подумалось, что придётся к каждому модулю, если уж совсем заморачиваться (а придётся!) класть в папку и языковый файл, по умолчанию у меня это русский, и требуемые картинки.

Такая вот загогулина. Написать и то было сложно...
ЗЫ Попробую продумать общую конструкцию.

./details/ - тут у меня сидит движок сайта.
./details/modules/ - сюда буду кидать каталоги модулей.
./details/modules/%module_name%/ - каталог некоего модуля.
./details/modules/%module_name%/%module_name%.cfg - конфигуратор модуля.
./details/modules/%module_name%/css/ - каталог модулевых стилей.
./details/modules/%module_name%/css/%module_name%.css - модулев стиль.
./details/modules/%module_name%/images/ - картинки модуля.
./details/modules/%module_name%/template/ - модулев шаблон.
./details/modules/%module_name%/scripts/ - модулевы скрипты, если таковые будут нужны.

В %module_name%.cfg надо будет прописать что-то типа

Код:
<?
$mod_config = array(
	'name'	=> 'fetcher',// Имя модуля, а также и путь; задаваться будет через конструкт типа $mod_path = $php_root_path . 'details/modules/' . $mod_config['name'] . '/';
	'css'=> 'my_amazing_style',	// Имя каталога CSS; задаваться будет через конструкт типа $mod_lang = $mod_path . 'css/' . $mod_config['css'] . '.css';
	'images'	=> 'pics',	// Имя каталога картинкок; задаваться будет через конструкт типа $mod_pics = $mod_path  . $mod_config['images'] . '/';
	'scripts'	=> 'js',	// Имя каталога скриптов; задаваться будет через конструкт типа $mod_scripts = $mod_path . $mod_config['scripts'] . '/';
	'lang'=> 'texts' 	// Имя каталога текстового файла; задаваться будет через конструкт типа $mod_lang = $php_root_path . 'details/modules/' . $mod_config['name'] . '/lang_{LANG}/' . $mod_config['lang'] . $phpEx;
);
// Конструкты показаны отдельно
$mod_path = $php_root_path . 'details/modules/' . $mod_config['name'] . '/';
$mod_lang = $mod_path . 'css/' . $mod_config['css'] . '.css';
$mod_pics = $mod_path  . $mod_config['images'] . '/';
$mod_scripts = $mod_path . $mod_config['scripts'] . '/';
$mod_lang = $php_root_path . 'details/modules/' . $mod_config['name'] . '/lang_{LANG}/' . $mod_config['lang'] . $phpEx;


// Также, из БД будут прилетать значения положения в портале
# $mod_db_config['state'] - вкл/выкл
# $mod_db_config['col'] - колонка
# $mod_db_config['row'] - ряд

?>

Для чего именно так - во-первых, из-за особенностей движка, во-вторых - сообразно общей философии движка.
В третьих - чтобы удобнее впоследствии полностью перевести управление через БД; в таком случае меньше потом будет писанины.

+1

12

Отдохнул и выспался, полез ковыряться дальше. Сплошные расстройства, блин.
Оказывается, я нифига не гений.
Именно так устроен и работает портал phpBB3.
Так как я в прежние годы под такой уже делал модули, но забыл - то, вспомнив, устыдился, что думал, что я типа сам такое придумал  :blush:
Тем не менее, полезняшки оттуда надёргаю, дистрик я уже нашёл и распаковал.
Например, изучаю сейчас, как именно работает БД портала.

0

13

Из полезностей - например, отдельный каталог у портала, ./portal/includes/, где сидят отдельные constants.php, functions.php и functions_upload.php.
Впрочем, до этого пока не дойдёт, наверное.

0

14

Накропал на пробу два модуля - фетчер и новостник. Фетчер просто дёргает выделенные темки из указанных в конфиге форумов.
Пока проблема есть - не хочет грузить от них шаблоны сцуко :(

https://i.imgur.com/UrL6qLX.jpg

Строки с путями - это я для контроля повесил.

0

15

Ну кароч я слабак и сдался. Я тупо закинул шаблоны модулей в каталог к стилям и они заработали.
В принципе, судьбу я обманывал - ведь шаблоны так и должны сидеть в стилях.

Пёс с ним, так работает - и ладно)))

Пикча #1

https://i.imgur.com/KUCUY2w.jpg

А вот я отключил проверочный модуль - и никак и ничего нигде не изменял!
ЗЫ Отключил - в смысле, просто убрал файлы.

Пикча #2

https://i.imgur.com/5pV3Ghu.jpg

То есть, портал сам подхватывает модули, без какого-либо указания или каких бы то ни было телодвижений со стороны меня.
Эту цель я достиг - теперь надо пересобирать фичи портала под модули, а потом я буду писать управление в одминку и включение-выключение через БД, а также буду писать задание положения каждого модуля на странице; сначала через конфиг, потом придумаю, как это реализовать через БД.

+1

16

Я тут немного отвлекался по своим делам, потому что не срастается мысля.
Также, пока мысля не доварилась в голове, попутно занимаюсь механической работой - меняю ВСЕ переменные типа $HTTP_POST_VARS и $HTTP_GET_VARS на современные $_POST и $_GET, и всё такое прочее.

0

17

Пост будет обновляться.
Сделал БД, подсмотрел на БД портала phpBB3, упростил до требуемого мне уровня.
Сделал читалку БД для своего тестового портала, проверил на читающие свойства.

Иллюстрации

Дамп БД
https://i.imgur.com/cBoNejp.jpg

Результат чтения БД порталом
https://i.imgur.com/UYDIQq1.jpg

Теперь буду придумывать применение полученным данным.

Пока мысль такая: разделить страницу портала в области применения данных на условные квадраты (или прямоугольники, места - назовите как хотите). Каждый квадрат сгруппирован по три квадрата в высоту на полосы, и верхний широкий прямоугольник для передовицы.
1) Верхний во всю ширину - статья-передовица.
2) Боковые полосы - туда, например, менюшку, календарь и прочая.
3) Средняя широкая полоса - сверху пусть будет некое объявление; на оргинальном сайте таковое присутствует. Потом полоса новостей, нижний квадрат пусть будет модуль галереи - как и на оригинальном сайте. Также, возможно, там будет и голосовалка голая совалка.
Внизу, уже не порталом, подвал мощный, тоже с оригинального сайта по внешнему виду.

Реализация квадратиков-шмадратиков продумывается ниже.
Начну с админки.
Вариант 1: Делаем страничку, в ней описание, какая цифра что означает, потом расставляем цифры модулям. Ну там, например, модуль передовицы это колонка 4 ряд 1 (сверху), модуль новости это колонка 2 место 2.
Вариант 2: Делаем страницу, на ней условные изображения квадратов с именами модулей, "лампочка" сигнализатора вкл/выкл и стрелочки, типа "куда передвинуть". Выбираем куда, включаем-выключаем если надо, жмём подтверждение - данные отлетают в БД, портал при обновлении страницы перераспределяет модули по квадратам.

Второй вариант интуитивно понятнее - но сложнее; пока буду сделать первый вариант, а потом, если приспичит - сделаю второй.

ЗЫ Чот мне кажется, что поле module_classname лишнее. По идее, оно относится, наверное, к дизайну и нам не надо, у нас диз будет без этого.
Видимо, ликвидирую его.

0

18

Убрал поле module_classname за ненадобностью.
Думается вот что: так как, во-первых, скорее всего, не все модули будут использованы одновременно - можно задать уровень допуска модулям через поле module_group_ids - например, далее будут уровни допуска,
0 - админ
1 - модер
2 - юзер
3 - просто посетитель (гость)
4) - доступно мобильно
Также, думается мне, что при мобильном просмотре некоторые модули вообще не нужны - например, логине-пароле для администрации и тд и тп, с мобилы должно только читаться, а не правиться, бо неудобно, и боты задолбают.
Ставим цифры в БД, портал читает и делает выводы.

ЗЫ Поле переименую в module_access.

Добавлено спустя 15 минут 55 секунд:
Возникла мысль синхронизации БД и каталога с модулями.
Делаем так:
1) Админка читает кол.-во модулей, сверяя их названия из их конфига с БД.
2) Если модуль есть в калатоге и в БД - дуем дальше.
3) Если конфига модуля в каталоге нет, но есть в БД - сносим из БД.
4) Если конфиг есть, но в БД нет - вносим в БД.

И всё это до загрузки шаблона.

Таким мухтаром, мы так и будем иметь подхват модулей без лишних танцев с бубном, но модули будут взаимодействовать с БД.
Надо додумать и реализовать.
Добавлено спустя 20 минут 18 секунд:

Придётся снова курочить БД для этого.
Из конфига модуля будем в БД брать имя модуля, совпадающее с каталогом модуля, имя для портала - по нему портал будет его постить, это что-то типа M_MODULE_NAME, а ур. доступа и положение выставим из админки.
Добавлю в БД поле module_portal_name - именно там и будет сидеть M_MODULE_NAME, а в существующем поле будет что-то типа "fetcher" или "news", или как там каталог с модулем зовётся, сие не суть. Но каталог, по понятным причинам, должен назваться так, чтобы было ясно, что именно там.
Добавлено спустя 29 минут 26 секунд:
Всё, портал это читает:

Картинка

https://i.imgur.com/aeciUeK.jpg

Добавлено спустя 31 минуту 28 секунд:
Теперь в портале надо сделать сверку/сводку на предмет наличия модуля в БД и в каталоге, дабы не пытаться грузить то, чего нет - см. выше про одминку. В портале будет то же самое.

0

19

Я немного притормозил и подумал, и вот что надумал.
Как мне кажется, и подбор модулей из каталогов и одновременно работа с БД при каждом обращении будет сильно грузить сервак; оно лишь в теории типа модно и красиво.
Я помучал тестовый портал - у меня на Денвере оно и то тупит, притом что комп не самый кислый. Дофига обращений к БД получается - и это притом, что потом ещё будут скрипты на JS и сложный дизайн, а они тоже грузят камень неслабо.
Плюс например одни только модуль новостей делает несколько запросов к БД при обработке каждой новости, а их много...
Надо как-то облегчить нагрузку на сервер. Для этого придётся хотя бы работу с БД самого портала минимизировать.
В общем, надо снимать что-то одно - либо трусы, либо крестик.

Думаю, так надо сделать: подхват модулей из каталогов будет делать админка, делать валидацию и грузить их в БД, в двух вариантах (надо выбрать): либо сразу, либо по нажатию кнопки "Синхронизация модулей портала и БД". Сам портал, и так оно будет логично, будет юзать их уже по конфигу из БД - то есть, он будет брать данные БД, при этом отключенные модули он уже не цепляет, ему осталось лишь дописать "раскадровку", а прочие телодвижения будет делать админка.
Значит, оставляем загрузку конфига портала и "раскадровку" с включением модулей.

Пока так.

0

20

Надеюсь, Алекс и другие Большие Серьёзные Дядьки таки поглядывают на мои посты тут.
Собственно, пришло понимание, как можно устроить хэштеги на форуме - полагаю, и тут тоже. Но я привык мыслить в стиле phpBB, так и продолжу.
1) Для хэштегов заводим в БД, в таблице phpbb_posts_txt ещё одно текстовое поле varchar(255) для хэштегов. Прописываем его обработку везде, где обрабатывается текст поста, добавляем обработку тегов в bbcode.php, дабы привязывать к тегам идентификаторы и обрабатывать с #hashtag до [hashtag:%tag_id%] и обратно.
Также колхозим обработчик в поиск.
Но это обработчик для форума. Мне же нужен обработчик для новостей - это нечто другое.
2) Для хэштегов, вместе с указанной выше фичей, заводим в БД, таблицу phpbb_hashtags с полями tag_id, post_id, topic_id, user_id, tag_text - таким образом, мы получим возможность быстрее и проще искать по БД любые данные, это облегчит и ускорит поиск информации.
При постинге любой темки, в первом посте можно будет выбрать теги, а потом и отредактировать, при необходимости. При выводе такого поста во фронтэнд мы получим, считай, встроенный готовый, уже нашедшийся поиск, как в блогах типа ЖЖ :)

Только смогу ли я всё это сделать - не знаю...
*чешет бестолковку*

0


Вы здесь » Единый форум поддержки » Архив » Пересоздание движка для новостного районного сайта.