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

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

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


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


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

Сообщений 21 страница 40 из 79

21

Ку всем.
Значитца так.

(пост будет обновляться)

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

Мысля такая возникла, как сделать так, чтоб модули разлетались по квадратам портала: надо каждому модулю сделать этакую стилевую загогулину, типа
1) Читаем из БД - получаем, например, данные
module_id = 1
module_name = fetcher
module_portal_name = M_FETCH
module_column = 2
module_row = 3

module_order = 1
module_group_ids = 1
module_status = 1

Это будут, например,

$mod_data['module_name'] = 'fetcher'
$mod_data['module_portal_name'] = 'M_FETCH'
$mod_data['module_column'] = '2'
$mod_data['module_row'] = '3'

То есть, модуль fetcher, будет отзываться на M_FETCH строка 3 колонка 2.

Планируется сделать, допустим, координаты в гридовой сетке портала, для квадратов (умозрительно, на данный момент):

Квадрат 1 (верхний слева):
Квадрат 2 (верхний посередине):
Квадрат 3 (верхний справа):
Квадрат 4 (средний слева):
Квадрат 5 (средний посередине):
Квадрат 6 (средний справа):
Квадрат 7 (слева снизу):
Квадрат 8 (снизу посередине):
Квадрат 9 (снизу справа):
Квадрат 10 (все три колонки сверху):

В php это будет где-то так:

Код:
<?
switch($mod_data['module_column'])
{
	case '1':
$grid_column = 'grid-column:3/7'; // Квадрат 1 (верхний слева)
	break;
	case '2':
$grid_column = 'grid-column:7/10'; // Квадрат 2 (верхний посередине)
	break;
	case '3':
$grid_column = 'grid-column:10/15'; // Квадрат 3 (верхний справа)
	break;
	case '4':
$grid_column = 'grid-column:3/7'; // Квадрат 4 (средний слева)
	break;
	case '5':
$grid_column = 'grid-column:7/10'; // Квадрат 5 (средний посередине)
	break;
	case '6':
$grid_column = 'grid-column:10/15'; // Квадрат 6 (средний справа)
	break;
	case '7':
$grid_column = 'grid-column:3/7'; // Квадрат 7 (слева снизу)
	break;
	case '8':
$grid_column = 'grid-column:7/10'; // Квадрат 8 (снизу посередине)
	break;
	case '9':
$grid_column = 'grid-column:10/15'; // Квадрат 9 (снизу справа)
	break;
	case '10':
$grid_column = 'grid-column:2/12'; // Квадрат 10 (все три колонки сверху)
	break;
	default :
}

switch( $mod_data['module_row'] )
{
	case '1':
$grid_row = 'grid-row:5/7'; // Квадрат 1 (верхний слева)
	break;
	case '2':
$grid_row = 'grid-row:5/7'; // Квадрат 2 (верхний посередине)
	break;
	case '3':
$grid_row = 'grid-row:5/7'; // Квадрат 3 (верхний справа)
	break;
	case '4':
$grid_row = 'grid-row:7/10'; // Квадрат 4 (средний слева)
	break;
	case '5':
$grid_row = 'grid-row:7/10'; // Квадрат 5 (средний посередине)
	break;
	case '6':
$grid_row = 'grid-row:7/10'; // Квадрат 6 (средний справа)
	break;
	case '7':
$grid_row = 'grid-row:10/13'; // Квадрат 7 (слева снизу)
	break;
	case '8':
$grid_row = 'grid-row:10/13'; // Квадрат 8 (снизу посередине)
	break;
	case '9':
$grid_row = 'grid-row:10/13'; // Квадрат 9 (снизу справа)
	break;
	case '10':
$grid_row = 'grid-row:2/4'; // Квадрат 10 (все три колонки сверху)
	break;
	default :
}
?>

Из полученных из БД данных, мы сделаем что-то типа

Код:
<?
$template->assign_block_vars('curr_module', array(
'M_NAME' => $mod_data['module_name'],
'S_ROW' => $mod_data['module_row'],
'S_COLUMN' => $mod_data['module_column']
));
?>

а из этого, сделаем вставку в стиль, общий для всего портала:

Код:
// CSS портала - пусть будет файл portal_common_grid.css
// наличие вставок из шаблона пусть не смущает - обрабатываться 
// будет предварительно шаблонизатором, как оно водится в phpBB


<!--  BEGIN curr_module  -->
#{curr_module.M_NAME}
{
	{curr_module.S_COLUMN}
	{curr_module.S_ROW}
}
<!--  END curr_module  -->

Это впоследствии, при загрузке портала, будет превращено в список стилей для всех подгруженных модулей, сообразно указаний в БД.

0

22

Так.
Реализовал в коде проверку модулей на предмет наличия
1) Записи в БД
2) Наличия конфига install_info.cfg
3) Наличия module_%module_name%.php
Только тогда модуль считается "живым".
Теперь надо по результатам проверки отсеенные записи в БД удалять, бо нехрен там им делать.
Добавлено спустя 1 час 4 минуты 33 секунды:
Ну вот, теперь сам портал проверяет, есть ли таблицы в БД у существующих модулей или нет, и если нету - создаёт по данным конфига install_info.cfg, а если файлов нету, а таблицы есть - сносит такие таблицы.

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

0

23

Вот как оно работает сейчас:

Картинки и текст

1) У нас на сайте три модуля подключены:
https://i.imgur.com/zIm5xq3.jpg

2) В БД есть запись о модуле:
https://i.imgur.com/jPQtZgr.jpg

3) Мы из каталога удаляем (я просто переименовал) файл модуля индексной страницы:
https://i.imgur.com/dElTDr2.jpg

Тот же эффект будет без файла в папке модуля install_info.cfg

4) При первом же обращении к порталу, он проверяет что к чему, и сносит строку в таблице, не соответствующую реальным файлам:

Снёс запись в БД
https://i.imgur.com/BzPTrjB.jpg

Портал видит только два модуля
https://i.imgur.com/GVtcdOW.jpg

В БД - две записи
https://i.imgur.com/lB7pcNY.jpg

5) Переименовываем файлы обратно:
https://i.imgur.com/f1xv2tN.jpg

6) Портал тут же подключает модуль к БД:
https://i.imgur.com/ME8yci2.jpg

7) И всё становится как раньше:
https://i.imgur.com/XhiBhWx.jpg

Такая вот загогулина.

0

24

Код этого всего никому не надо?

0

25

Кстати, кто бы мне объяснил на пальцах, как устроены и как именно работают хуки в коде PunBB/MyBB ?

0

26

Джони, у нас тут PHP-стов присутствующих трое, вместе с тобой... Так шо расчет ток на случайно забежавших...
По идее есть неплохие сайты с PHP-поделками, мож там быстрее восстребуют ?

+1

27

Deff
Там код как всегда обгадят, обзовут идиотом и ничего толкового не выйдет.
А вот если что-то дельное увидят в коде - утащут и в титрах не упомянут)))

Все ж учились в консерваториях университетах, один я неуч :)

Я ещё когда-то на ЗАЗ-Киев форуме выкладывал код - плевались.
Потом вместо себя добавил в тот же код копирайты других людей, притом что уважаемых в среде разработки (на тот момент) phpBB2  - код прошёл на ура  :rofl:

+1

28

John Warner написал(а):

Там код как всегда обгадят, обзовут идиотом и ничего толкового не выйдет.

Ну да, если сайт чисто кодерский PHP-тов ( с ява-скрипт абсолютно аналогично)

Нун искать не где тусят только кодеры, а потребители новостных сайтов... (Думаю к примеру где тусят учителя(или детсадовские работники) и говорят об использовании инета в своей работе наверно такой сайт будет востребован, для Школы или города

Ксать за время ковид сильно продвинулись услуги по ремонту электро-мото техники(строй и обрабатывающей(косилки,плуги, электроинструмент) , ибо купить ничего нельзя - нужно восстанавливать... Новостной сайт ремонтника ?

Отредактировано Deff (Сб, 6 Июн 2020 21:26:10)

0

29

Deff написал(а):

Ксать за время ковид сильно продвинулись услуги по ремонту электро-мото техники

Да, я знаю :)
Я параллельно тут чиню всякое, да и с работы звонят - зовут на вахту, а я пока сайт допиливаю :)

Deff написал(а):

ибо купить ничего нельзя - нужно восстанавливать...

Ну не совсем уж так жестоко, но тенденция есть, да.

+1

30

John Warner написал(а):

как устроены и как именно работают хуки в коде PunBB/MyBB

https://punbb.info/f-7.html Можешь там поспрашивать..

+1

31

Спасибо!

+1

32

Был сегодня немного занят домашними делами; довелось лишь форму ответа допилить и вкукожить панель модерации.
Планирую вместо "родной формы ответа" вкукожить редактор wysiBB. Проблема в том, что он написан под phpBB3.
Почему форма ответа в кавычках - потому что тоже моя самописная, на основе чьёго-то мода для phpBB2 :)

0

33

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

Картинка
https://i.imgur.com/zge4yTP.jpg

Изначальная беда в том, что я пытался использовать календарь, уворованный на работающем новостном сайте, но он не пошёл и его пришлось переписать практически полностью :)
Сейчас надо пригадить выборку по запросу списка статей на заданное число, и пригадить туда пагинацию на случай большого кол.-ва статей.
Добавлено спустя 21 час 37 минут 59 секунд:
Решил проблему с помощью уже имеющихся средств - перенаправил на обнаруженный код показывалки.

Занимаюсь написанием обработки Settles - так называются "сельсоветы" на старом сайте.

0

34

Продумал гридовую сетку снова, и концепция поменялась.
Теперь в БД полетят не отдельные координаты рядов и колонок, а введённые мною "места", а именно:
Место №1 - Квадрат 1 (верхний слева)
Место №2 - Квадрат 2 (верхний посередине)
Место №3 - Квадрат 3 (верхний справа)
Место №4 - Квадрат 4 (средний слева)
Место №5 - Квадрат 5 (средний посередине)
Место №6 - Квадрат 6 (средний справа)
Место №7 - Квадрат 4 (нижний слева)
Место №8 - Квадрат 4 (нижний посередине)
Место №9 - Квадрат 4 (нижний справа)
Место №10 - Квадрат 10 (все три колонки сверху - передовица)
Место №11 - Квадрат 11 (все три колонки сверху - объявление)

Кодом это выглядит так:

Код:
<?
switch($mod_data['module_place'])
{
	case '1':	 // Квадрат 1 (верхний слева)
$grid_column = 'grid-column:1/2';
$grid_row = 'grid-row:3/4';
	break;
	case '2':	 // Квадрат 2 (верхний посередине)
$grid_column = 'grid-column:2/3';
$grid_row = 'grid-row:3/4';
	break;
	case '3':	 // Квадрат 3 (верхний справа)
$grid_column = 'grid-column:3/4';
$grid_row = 'grid-row:3/4';
	break;
	case '4':	 // Квадрат 4 (средний слева)
$grid_column = 'grid-column:1/2';
$grid_row = 'grid-row:4/5';
	break;
	case '5':	 // Квадрат 5 (средний посередине)
$grid_column = 'grid-column:2/3';
$grid_row = 'grid-row:4/5';
	break;
	case '6':	 // Квадрат 6 (средний справа)
$grid_column = 'grid-column:3/4';
$grid_row = 'grid-row:4/5';
	break;
	case '7':	 // Квадрат 7 (слева снизу)
$grid_column = 'grid-column:1/2';
$grid_row = 'grid-row:5/6';
	break;
	case '8':	 // Квадрат 8 (снизу посередине)
$grid_column = 'grid-column:2/3';
$grid_row = 'grid-row:5/6';
	break;
	case '9':	 // Квадрат 9 (снизу справа)
$grid_column = 'grid-column:3/4';
$grid_row = 'grid-row:5/6';
	break;
	case '10':	 // Квадрат 10 (все три колонки сверху - передовица)
$grid_column = 'grid-column:1/4';
$grid_row = 'grid-row:2/3';
	break;
	case '11':	 // Квадрат 11 (все три колонки сверху - объявление)
$grid_column = 'grid-column:1/4';
$grid_row = 'grid-row:2/3';
	break;
	default :
}

$template->assign_block_vars('curr_module', array(
	'M_NAME' => $mod_data['module_name'],
	'S_ROW' => $mod_data['module_row'],
	'S_COLUMN' => $mod_data['module_column']
	));
?>

CSS для обработки будет прямо в шаблоне портала, я покажу заготовку в html шаблона и отдельно готовый продукт:

Код:
HTML-ШАБЛОН
<!--  BEGIN curr_module  -->
#{curr_module.M_NAME}
{
	{curr_module.S_COLUMN};
	{curr_module.S_ROW};
}
<!--  END curr_module  -->

Фронтенд:

Код:
#S_POLL // Голосовалка
{
	grid-column:1/2;
	grid-row:3/4;
}
#S_INDEX // Индекс - от форума, например
{
	grid-column:2/3;
	grid-row:5/6;
}
#S_NEWS // Новости
{
	grid-column:2/3;
	grid-row:3/4;
}
#S_ANNOUNCE // Объявление
{
	grid-column:1/4;
	grid-row:1/2;
}
#S_EDITORIAL // Передовица
{
	grid-column:1/4;
	grid-row:2/3;
}

Под это дело придётся таблицу в БД перепаивать, но это несложно.

+1

35

Поясню, почему квадраты так странно поименованы, почему порядок нарушен, и почему первый квадрат - не первый квадрат)))

При установке модуля крайне желательно, чтобы настроенный уже порядок не "плыл", чтобы то, что установили, располагалось где-то сбоку.
При таком порядке, как у меня, все вновь устанавливаемые модули будут располагаться посередине-слева на странице, оставив места под объяву, передовицу и новостную ленту нетронутыми.
При этом мы можем посмотреть на модуль, и при желании кинуть его в другое место.

0

36

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

0

37

Вкукожил в портал гриды и заставил модули это дело поедать и летать по квадратам:

Большая картинка

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

Пришлось повозиться - но идея себя оправдала.
Теперь надо срочно писать админку под это дело, ибо я задолбался уже лазить в БД врукопашную, чтобы квадратами управлять.

Добавлено спустя 13 минут 25 секунд:
ЗЫ Изначально всё было нарисовано на бумажке:

Картинка

https://sun9-11.userapi.com/c858336/v858336893/202b4a/NxlV3pcTKTM.jpg

Потом сделано кодом (см. выше в постах).

Теперь надо, наверное, убрать некоторую избыточность в конфигах модулей - вместо modules/%module_folder%/%module_name%.cfg и modules/%module_folder%/install_info.cfg сделать один только modules/%module_folder%/%module_name%.cfg, или как-то иначе его обозвать, например, modules/%module_folder%/variables.cfg.

+2

38

Итак, сегодня файл ./test_portal.php был официально переименован в ./news.php и на него установлена ссылка как на главную страницу.
Сделал я это потому, что я всё равно настраиваю именно его, и это и будет главная страница.
Кстати, сделал так, чтоб все ссылки на главную страницу задавались через БД, а именно

Код:
<?
# В задатчике фронэнда, в переменных шаблона
	'U_NEWS' => append_sid($board_config['news_base_url'] . $board_config['news_index_file']),
	'U_INDEX' => append_sid($board_config['index_base_url'] . $board_config['news_index_file']),
?>

Управляется это из админки.

0

39

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

Большие картинки

https://sun9-30.userapi.com/c854420/v854420208/242226/4wmABcH65yo.jpg
https://sun9-9.userapi.com/c854420/v854420208/242230/gXSY6j7hmX8.jpg

Вот эта вот порнография не работает пока :(
https://sun9-23.userapi.com/c854420/v854420208/242238/SftegPtmA6s.jpg

+2

40

John Warner написал(а):

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

Код:
[br]

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

Кстати, попутно выкинул его, и всё работает.

0


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