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

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

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


Вы здесь » Единый форум поддержки » Комната отдыха » Движок phpBB2 Elysium by John Warner


Движок phpBB2 Elysium by John Warner

Сообщений 141 страница 160 из 193

141

Основной шаблон у меня заработал.
На удивление, даже ошибок особых нет, кроме одной вещи: проковырялся столько времени, столкнулся с ещё одной проблемой.
Изначальный концепт "движка" сайта - "лепи чего тебе надо прямо в это место кода", плюс приcранные внешние модули, и всё правится из админки CKEdtor'ом.
Проблема сейчас в том, что в код налепили кусков хтмл и пхп из отдельных файлов, и я придумываю, как сделать вставлялку этих кусков в шаблон.

0

142

Ну всё.
Заголовок  и подвал у меня работают, со всеми функциями, через шаблоны.
Чиню индекс.

0

143

Ку всем!
Продолжаю работу над сайтом.
Раскукожил дистрибутив punBB, ибо вспомнил там прикольную фичу - централизованный задатчик URL'ов.

Пример:

Файл forum_urls.php

Дофига кода
Код:
<?php
/**
 * Regular URL scheme.
 *
 * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package PunBB
 */


// Make sure no one attempts to run this script "directly"
if (!defined('FORUM'))
	exit;

// These are the regular, "non-SEF" URLs (you probably don't want to edit these)
$forum_url = array(
	'change_email'	=>	'profile.php?action=change_email&amp;id=$1',
	'change_email_key'=>	'profile.php?action=change_email&amp;id=$1&amp;key=$2',
	'change_password'=>	'profile.php?action=change_pass&amp;id=$1',
	'change_password_key'	=>	'profile.php?action=change_pass&amp;id=$1&amp;key=$2',
	'delete_user'	=>	'profile.php?action=delete_user&amp;id=$1',
	'delete'=>	'delete.php?id=$1',
	'delete_avatar'	=>	'profile.php?action=delete_avatar&amp;id=$1&amp;csrf_token=$2',
	'edit'	=>	'edit.php?id=$1',
	'email'	=>	'misc.php?email=$1',
	'forum'	=>	'viewforum.php?id=$1',
	'forum_rss'=>	'extern.php?action=feed&amp;fid=$1&amp;type=rss',
	'forum_atom'	=>	'extern.php?action=feed&amp;fid=$1&amp;type=atom',
	'forum_subscribe'=>	'misc.php?forum_subscribe=$1&amp;csrf_token=$2',
	'forum_unsubscribe'=>	'misc.php?forum_unsubscribe=$1&amp;csrf_token=$2',
	'help'	=>	'help.php?section=$1',
	'index'	=>	'index.php',
	'index_rss'=>	'extern.php?action=feed&amp;type=rss',
	'index_atom'	=>	'extern.php?action=feed&amp;type=atom',
	'login'	=>	'login.php',
	'logout'=>	'login.php?action=out&amp;id=$1&amp;csrf_token=$2',
	'mark_read'=>	'misc.php?action=markread&amp;csrf_token=$1',
	'mark_forum_read'=>	'misc.php?action=markforumread&amp;fid=$1&amp;csrf_token=$2',
	'new_topic'=>	'post.php?fid=$1',
	'new_reply'=>	'post.php?tid=$1',
	'opensearch'	=>	'misc.php?action=opensearch',
	'post'	=>	'viewtopic.php?pid=$1#p$1',
	'profile_about'	=>	'profile.php?section=about&amp;id=$1',
	'profile_identity'=>	'profile.php?section=identity&amp;id=$1',
	'profile_settings'=>	'profile.php?section=settings&amp;id=$1',
	'profile_avatar'=>	'profile.php?section=avatar&amp;id=$1',
	'profile_signature'=>	'profile.php?section=signature&amp;id=$1',
	'profile_admin'	=>	'profile.php?section=admin&amp;id=$1',
	'quote'	=>	'post.php?tid=$1&amp;qid=$2',
	'register'=>	'register.php',
	'report'=>	'misc.php?report=$1',
	'request_password'=>	'login.php?action=forget',
	'rules'	=>	'misc.php?action=rules',
	'search'=>	'search.php',
	'search_advanced'=>	'search.php?advanced=1',
	'search_resultft'=>	'search.php?action=search&amp;keywords=$1&amp;author=$3&amp;forum=$2&amp;search_in=$4&amp;sort_by=$5&amp;sort_dir=$6&amp;show_as=$7',
	'search_results'=>	'search.php?search_id=$1',
	'search_new'	=>	'search.php?action=show_new',
	'search_new_results'	=>	'search.php?action=show_new&amp;forum=$1',
	'search_recent'	=>	'search.php?action=show_recent',
	'search_recent_results'	=>	'search.php?action=show_recent&amp;value=$1',
	'search_unanswered'=>	'search.php?action=show_unanswered',
	'search_subscriptions'	=>	'search.php?action=show_subscriptions&amp;user_id=$1',
	'search_forum_subscriptions'	=>	'search.php?action=show_forum_subscriptions&amp;user_id=$1',
	'search_user_posts'=>	'search.php?action=show_user_posts&amp;user_id=$1',
	'search_user_topics'	=>	'search.php?action=show_user_topics&amp;user_id=$1',
	'subscribe'=>	'misc.php?subscribe=$1&amp;csrf_token=$2',
	'topic'	=>	'viewtopic.php?id=$1',
	'topic_rss'=>	'extern.php?action=feed&amp;tid=$1&amp;type=rss',
	'topic_atom'	=>	'extern.php?action=feed&amp;tid=$1&amp;type=atom',
	'topic_new_posts'=>	'viewtopic.php?id=$1&amp;action=new',
	'topic_last_post'=>	'viewtopic.php?id=$1&amp;action=last',
	'unsubscribe'	=>	'misc.php?unsubscribe=$1&amp;csrf_token=$2',
	'user'	=>	'profile.php?id=$1',
	'users'	=>	'userlist.php',
	'users_browse'	=>	'userlist.php?show_group=$1&amp;sort_by=$2&amp;sort_dir=$3&amp;username=$4',
	'page'	=>	'&amp;p=$1',
	'moderate_forum'=>	'moderate.php?fid=$1',
	'get_host'=>	'moderate.php?get_host=$1',
	'move'	=>	'moderate.php?fid=$1&amp;move_topics=$2',
	'open'	=>	'moderate.php?fid=$1&amp;open=$2&amp;csrf_token=$3',
	'close'	=>	'moderate.php?fid=$1&amp;close=$2&amp;csrf_token=$3',
	'stick'	=>	'moderate.php?fid=$1&amp;stick=$2&amp;csrf_token=$3',
	'unstick'=>	'moderate.php?fid=$1&amp;unstick=$2&amp;csrf_token=$3',
	'moderate_topic'=>	'moderate.php?fid=$1&amp;tid=$2',
	'admin_index'	=>	'admin/index.php',
	'admin_bans'	=>	'admin/bans.php?sort_by=1',
	'admin_categories'=>	'admin/categories.php',
	'admin_censoring'=>	'admin/censoring.php',
	'admin_extensions_manage'=>	'admin/extensions.php?section=manage',
	'admin_extensions_hotfixes'=>	'admin/extensions.php?section=hotfixes',
	'admin_forums'	=>	'admin/forums.php',
	'admin_forums_forum'	=>	'admin/forums.php#forum$1',
	'admin_groups'	=>	'admin/groups.php',
	'admin_loader'	=>	'admin/loader.php',
	'admin_reindex'	=>	'admin/reindex.php',
	'admin_settings_setup'	=>	'admin/settings.php?section=setup',
	'admin_settings_features'=>	'admin/settings.php?section=features',
	'admin_settings_content'=>	'admin/settings.php?section=content',
	'admin_settings_email'	=>	'admin/settings.php?section=email',
	'admin_settings_announcements'	=>	'admin/settings.php?section=announcements',
	'admin_settings_registration'	=>	'admin/settings.php?section=registration',
	'admin_settings_communications'	=>	'admin/settings.php?section=communications',
	'admin_settings_maintenance'	=>	'admin/settings.php?section=maintenance',
	'admin_prune'	=>	'admin/prune.php',
	'admin_ranks'	=>	'admin/ranks.php',
	'admin_reports'	=>	'admin/reports.php',
	'admin_users'	=>	'admin/users.php'
);
?>

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

Снова дофига кода
Код:
<?php
/**
 * Regular URL scheme.
 *
 * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package PunBB
 */


// Make sure no one attempts to run this script "directly"
if (!defined('FORUM'))
	exit;

// These are the regular, "non-SEF" URLs (you probably don't want to edit these)
$forum_url = array(
	'change_email'	=>	'profile' . $phpEx . '&amp;action=change_email&amp;id=$1',
	'change_email_key'=>	'profile' . $phpEx . '&amp;action=change_email&amp;id=$1&amp;key=$2',
	'change_password'=>	'profile' . $phpEx . '&amp;action=change_pass&amp;id=$1',
	'change_password_key'	=>	'profile' . $phpEx . '&amp;action=change_pass&amp;id=$1&amp;key=$2',
	'delete_user'	=>	'profile' . $phpEx . '&amp;action=delete_user&amp;id=$1',
	'delete'=>	'delete' . $phpEx . '&amp;id=$1',
	'delete_avatar'	=>	'profile' . $phpEx . '&amp;action=delete_avatar&amp;id=$1&amp;csrf_token=$2',
	'edit'	=>	'edit' . $phpEx . '&amp;id=$1',
	'email'	=>	'misc' . $phpEx . '&amp;email=$1',
	'forum'	=>	'viewforum' . $phpEx . '&amp;id=$1',
	'forum_rss'=>	'extern' . $phpEx . '&amp;action=feed&amp;fid=$1&amp;type=rss',
	'forum_atom'	=>	'extern' . $phpEx . '&amp;action=feed&amp;fid=$1&amp;type=atom',
	'forum_subscribe'=>	'misc' . $phpEx . '&amp;forum_subscribe=$1&amp;csrf_token=$2',
	'forum_unsubscribe'=>	'misc' . $phpEx . '&amp;forum_unsubscribe=$1&amp;csrf_token=$2',
	'help'	=>	'help' . $phpEx . '&amp;section=$1',
	'index'	=>	'index' . $phpEx,
	'index_rss'=>	'extern' . $phpEx . '&amp;action=feed&amp;type=rss',
	'index_atom'	=>	'extern' . $phpEx . '&amp;action=feed&amp;type=atom',
	'login'	=>	'login' . $phpEx,
	'logout'=>	'login' . $phpEx . '&amp;action=out&amp;id=$1&amp;csrf_token=$2',
	'mark_read'=>	'misc' . $phpEx . '&amp;action=markread&amp;csrf_token=$1',
	'mark_forum_read'=>	'misc' . $phpEx . '&amp;action=markforumread&amp;fid=$1&amp;csrf_token=$2',
	'new_topic'=>	'post' . $phpEx . '&amp;fid=$1',
	'new_reply'=>	'post' . $phpEx . '&amp;tid=$1',
	'opensearch'	=>	'misc' . $phpEx . '&amp;action=opensearch',
	'post'	=>	'viewtopic' . $phpEx . '&amp;pid=$1#p$1',
	'profile_about'	=>	'profile' . $phpEx . '&amp;section=about&amp;id=$1',
	'profile_identity'=>	'profile' . $phpEx . '&amp;section=identity&amp;id=$1',
	'profile_settings'=>	'profile' . $phpEx . '&amp;section=settings&amp;id=$1',
	'profile_avatar'=>	'profile' . $phpEx . '&amp;section=avatar&amp;id=$1',
	'profile_signature'=>	'profile' . $phpEx . '&amp;section=signature&amp;id=$1',
	'profile_admin'	=>	'profile' . $phpEx . '&amp;section=admin&amp;id=$1',
	'quote'	=>	'post' . $phpEx . '&amp;tid=$1&amp;qid=$2',
	'register'=>	'register' . $phpEx,
	'report'=>	'misc' . $phpEx . '&amp;report=$1',
	'request_password'=>	'login' . $phpEx . '&amp;action=forget',
	'rules'	=>	'misc' . $phpEx . '&amp;action=rules',
	'search'=>	'search' . $phpEx,
	'search_advanced'=>	'search' . $phpEx . '&amp;advanced=1',
	'search_resultft'=>	'search' . $phpEx . '&amp;action=search&amp;keywords=$1&amp;author=$3&amp;forum=$2&amp;search_in=$4&amp;sort_by=$5&amp;sort_dir=$6&amp;show_as=$7',
	'search_results'=>	'search' . $phpEx . '&amp;search_id=$1',
	'search_new'	=>	'search' . $phpEx . '&amp;action=show_new',
	'search_new_results'	=>	'search' . $phpEx . '&amp;action=show_new&amp;forum=$1',
	'search_recent'	=>	'search' . $phpEx . '&amp;action=show_recent',
	'search_recent_results'	=>	'search' . $phpEx . '&amp;action=show_recent&amp;value=$1',
	'search_unanswered'=>	'search' . $phpEx . '&amp;action=show_unanswered',
	'search_subscriptions'	=>	'search' . $phpEx . '&amp;action=show_subscriptions&amp;user_id=$1',
	'search_forum_subscriptions'	=>	'search' . $phpEx . '&amp;action=show_forum_subscriptions&amp;user_id=$1',
	'search_user_posts'=>	'search' . $phpEx . '&amp;action=show_user_posts&amp;user_id=$1',
	'search_user_topics'	=>	'search' . $phpEx . '&amp;action=show_user_topics&amp;user_id=$1',
	'subscribe'=>	'misc' . $phpEx . '&amp;subscribe=$1&amp;csrf_token=$2',
	'topic'	=>	'viewtopic' . $phpEx . '&amp;id=$1',
	'topic_rss'=>	'extern' . $phpEx . '&amp;action=feed&amp;tid=$1&amp;type=rss',
	'topic_atom'	=>	'extern' . $phpEx . '&amp;action=feed&amp;tid=$1&amp;type=atom',
	'topic_new_posts'=>	'viewtopic' . $phpEx . '&amp;id=$1&amp;action=new',
	'topic_last_post'=>	'viewtopic' . $phpEx . '&amp;id=$1&amp;action=last',
	'unsubscribe'	=>	'misc' . $phpEx . '&amp;unsubscribe=$1&amp;csrf_token=$2',
	'user'	=>	'profile' . $phpEx . '&amp;id=$1',
	'users'	=>	'userlist' . $phpEx,
	'users_browse'	=>	'userlist' . $phpEx . '&amp;show_group=$1&amp;sort_by=$2&amp;sort_dir=$3&amp;username=$4',
	'page'	=>	'&amp;p=$1',
	'moderate_forum'=>	'moderate' . $phpEx . '&amp;fid=$1',
	'get_host'=>	'moderate' . $phpEx . '&amp;get_host=$1',
	'move'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;move_topics=$2',
	'open'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;open=$2&amp;csrf_token=$3',
	'close'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;close=$2&amp;csrf_token=$3',
	'stick'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;stick=$2&amp;csrf_token=$3',
	'unstick'=>	'moderate' . $phpEx . '&amp;fid=$1&amp;unstick=$2&amp;csrf_token=$3',
	'moderate_topic'=>	'moderate' . $phpEx . '&amp;fid=$1&amp;tid=$2',
	'admin_index'	=>	'admin/index' . $phpEx,
	'admin_bans'	=>	'admin/bans' . $phpEx . '&amp;sort_by=1',
	'admin_categories'=>	'admin/categories' . $phpEx,
	'admin_censoring'=>	'admin/censoring' . $phpEx,
	'admin_extensions_manage'=>	'admin/extensions' . $phpEx . '&amp;section=manage',
	'admin_extensions_hotfixes'=>	'admin/extensions' . $phpEx . '&amp;section=hotfixes',
	'admin_forums'	=>	'admin/forums' . $phpEx,
	'admin_forums_forum'	=>	'admin/forums.php#forum$1',
	'admin_groups'	=>	'admin/groups' . $phpEx,
	'admin_loader'	=>	'admin/loader' . $phpEx,
	'admin_reindex'	=>	'admin/reindex' . $phpEx,
	'admin_settings_setup'	=>	'admin/settings' . $phpEx . '&amp;section=setup',
	'admin_settings_features'=>	'admin/settings' . $phpEx . '&amp;section=features',
	'admin_settings_content'=>	'admin/settings' . $phpEx . '&amp;section=content',
	'admin_settings_email'	=>	'admin/settings' . $phpEx . '&amp;section=email',
	'admin_settings_announcements'	=>	'admin/settings' . $phpEx . '&amp;section=announcements',
	'admin_settings_registration'	=>	'admin/settings' . $phpEx . '&amp;section=registration',
	'admin_settings_communications'	=>	'admin/settings' . $phpEx . '&amp;section=communications',
	'admin_settings_maintenance'	=>	'admin/settings' . $phpEx . '&amp;section=maintenance',
	'admin_prune'	=>	'admin/prune' . $phpEx,
	'admin_ranks'	=>	'admin/ranks' . $phpEx,
	'admin_reports'	=>	'admin/reports' . $phpEx,
	'admin_users'	=>	'admin/users' . $phpEx
);
?>

Почему так?
А это чтобы, во-первых, больше формализовать код, а во-вторых, чтобы была возможность обойти внешние вызовы программ типа XRumer, с помощью которых спамеры регаются на сайтах и форумах. Также недохацкеры будут отдыхать.
Делается эта защита так:
1) Формализуем обращения к php-файлам через ссылку на ОДИН файл, и тот с расширением .inc. В этом файле делаем финт ушами:

Код:
<?
$phpEx = '.php';
?>

Это позволит в одном месте изменить $phpEx например, на .code - и это будет расширением для всех php-файлов сайта.
И да, сами файлы надо переименовать, а в .htaccess задать, что индекс надо искать, например, в файле index.code:

Код:
DirectoryIndex index.code

2) ВСЕ ссылки на ВСЕ файлы сайта внутри кода, заменяем на конструкции типа

Код:
<?
if (!defined('IN_ENGINE'))
{
	die("Hacking attempt");
}

...
...
...

$site_root = $_SERVER['DOCUMENT_ROOT'] . '/';
$incl_path = $site_root . 'details/includes/';
$tpl_path = $site_root . 'details/templates/';

...
...
...

include($incl_path . 'config' . $phpEx);

...
...
...
?>

Обратите внимание: доступ к отдельным каталогам или файлам - строго через абсолютный путь от корня сервера. Так код работает, и к тому же в командной строке браузера уже бесполезно задавать внешние линки на обработку кода. Через это, например, работали эксплойты для phpBB до второй версии phpBB, и это фиксилось перелопачиванием кода, покуда в одной из версий не было уже изначально.
Наиболее показательны здесь такие моменты:
2.1) Все пути через переменную $site_root - от корня сервера
2.2) Расширения заданы через $phpEx - в одном месте указано расширение
2.3) Дефайном IN_ENGINE указано, что обращаться к файлу можно только если указано, что обращение легально. Вызвать файл напрямую невозможно. Ещё по путям указывается, что при этом такое обращение должно быть либо строго по $_GET либо строго по $_POST, но этим я уже обычно не морочусь.
3) Ещё очень полезно перенести ВСЕ файлы сайта кроме индекса, в каталог типа ./includes/ или, как у меня, ./details/includes/ и задать пути к ним показанного выше формата

Код:
<?
include($incl_path . '%file_name%' . $phpEx);
?>

что даст хоть какую-то защиту от вызова этих файлов с помощью неких колдунских финтов, буде таковые ещё есть.

Такая вот загогулина.
Простые меры - но помогают отсеивать любопытных и дофига спамящих. Да, не всех - но многих.

Я правда ещё не освоил защиту от DDOS - но это в планах.

0

144

Интересно, это вообще кто-нибудь читает?

0

145

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

Интересно, это вообще кто-нибудь читает?

Думаю я, Дефф и Алекс))

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

Я правда ещё не освоил защиту от DDOS - но это в планах.

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

+1

146

kolobdur74
Оке.
Скажи, вообще есть смысл это всё писать, или нет? Полезно ли?
Я временами думаю, что меня тут читают и отвечают больше из вежливости  :blush:

0

147

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

Скажи, вообще есть смысл это всё писать, или нет? Полезно ли?
Я временами думаю, что меня тут читают и отвечают больше из вежливости  :blush:

Ну, лично я читаю в качестве принять к сведению - я с php не очень дружу)) Но присматриваюсь к движкам для себя, так что как бы информация так или иначе мне полезна.. Другое дело, что я больше склоняюсь к PanBB (не сочти за ошибку - именно PanBB, а не PunBB).. Раньше подумывал о Ксенфоро, но к его непомерной стоимости прибавилось непомерная его тяжесть и неудобство как для разработчика, поэтому Ксенфоро тоже отпал.. PhpBB3 - тоже думал о нем, но мне его Админка все таки неудобна.. Собственно с движками форумов нынче, как я вижу, есть проблема, так что то что ты делаешь весьма полезно - может ты разовьешь отдельную ветку форумов PhpBB.. Так что смысл писать тебе,как для меня, есть.. Ну, и я лично в подобных ветках редко пишу)) Из вежливости не пишу)))

Отредактировано kolobdur74 (Чт, 28 Май 2020 17:10:57)

+1

148

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

и задать пути к ним показанного выше формата

Кстати, с помощью показанного ещё выше задатчика путей и имён файлов, вот это

Код:
<?
include($incl_path . '%file_name%' . $phpEx);
?>

можно применять и как

Код:
<?php
$forum_url = array(
	'file_name_variable'	=> $incl_path .  'file_name' . $phpEx
);
?>

При этом, появляется возможность в парсере задавать конструкции вида

Код:
<?
$template -> assign_vars(array(
'S_FILENAME' => '<p><a href="' . $forum_url['file_name_variable'] . '" target="_blank">Link_Name</a></p>'
));
?>

Что позволяет нам вкукоживать такие вещи в шаблон:

Код:
{S_FILENAME}

Результатом во фронтэнде будет (примерно, так как полный путь зависит от сервера):

Код:
<p><a href="/includes/file_name.php" target="_blank">Link_Name</a></p>

При этом, грубая подстановка в адресной строке типа

Код:
http://forum.mybb.ru/edit.php?file=/includes/config.php

или, вот тут страшнее

Код:
http://my_evil_site.hackerz/edit.php?hack=http://forum.mybb.ru/includes/config.php

уже не канает.

Хорошая идея, но не в этом проекте; ещё и под это перепахивать код - я уже и без этого заколебался)))

+1

149

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

PanBB

Знаю, да. Русский частично платный форк.

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

я с php не очень дружу

Я наоборот - так и не освоил, к своему стыду, жабоскрипт, но похапэ - вещь показалась лёгкая и понятная :)
Кстати, языки группы Си я тоже не осваивал, за ненадобностью мне, но так как Сишники являются основой, скелетом для многих прочих языков - то доводилось подобный пхпшному код видеть и в других проектах, где я участвовал - например, есть такой движок игровой как id tech 3, у которого для описания поведения NPC (врагов и союзников) используется специальный Си-подобный язык, равно как в его форках, с отличиями, но единообразно.
В итоге, если что-то пишешь под id tech 3, потом с прочими гораздо легче освоиться.
Примерно так произошло со мной :)

+1

150

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

Знаю, да. Русский частично платный форк.

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

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

Я наоборот - так и не освоил, к своему стыду, жабоскрипт, но похапэ - вещь показалась лёгкая и понятная :)

А, я еще меньше - больше ушел в сторону CSS, и то набегами.. Вот ты мне про грид подсказал - порыл по нему)) Вообще Майбб в этом плане хорошая школа, когда в полной мере есть только CSS.. Теперь можно "поломать" любой движок вообще его не трогая)))

+1

151

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

Теперь можно "поломать" любой движок вообще его не трогая)))

В смысле, поломать дизайн?
Раньше в Опере была фича - можно было задавать для любого адреса в сети свой дизайн. Я этим плотно пользовался.
Сейчас оно может и есть - но я не рыл, куда они это засунули.
Адблокер оперский встроенный, хоть и работает тоже через CSS, но не позволяет вносить свои адекватные правки, увы, да и защищён проверкой хешей файлов.

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

там нужна одноразовая небольшая оплата для допуска к скачиванию тем, модов, сборок

Воот оно что, но у меня сейчас всё равно нет денег даже на одноразовый донат :)
Но я подумаю об этом позже :)

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

Вот ты мне про грид подсказал - порыл по нему

Да, гриды - вообще вещь, я сейчас их освоил более-менее, не нарадуюсь, как удобно :)
Они с дивами - как хлеб и Рама, созданы друг для друга. Я даже теперь насовсем таблицы забросил и без них вообще обхожусь :)

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

Вообще Майбб в этом плане хорошая школа, когда в полной мере есть только CSS.

Согласен.
Но есть одно большое НО: движок PunBB вообще хорошо написан и у него практически все узлы везде имеют классы или айдишки, есть к чему обращаться.
Сайт, который я сейчас пилю - не имеет большей частью такой роскоши, в нём всё внаглую через style в каждом элементе прописано.
Я пока что только индекс классами-айдишками обеспечил, да и то пока процентов лишь на 80.

0

152

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

В смысле, поломать дизайн?

Ну, да))

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

Воот оно что, но у меня сейчас всё равно нет денег даже на одноразовый донат :)
Но я подумаю об этом позже :)

Конкретно сейчас - это продление домена на рег ру, минимум на 1 месяц - 260 рублей..))

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

Да, гриды - вообще вещь, я сейчас их освоил более-менее, не нарадуюсь, как удобно :)
Они с дивами - как хлеб и Рама, созданы друг для друга. Я даже теперь насовсем таблицы забросил и без них вообще обхожусь :)

Ну, я уже где то здесь писал, что таблицы с появлением грида устарели, флекс полностью не заменял таблицу, грид перекрывает полностью..

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

Но есть одно большое НО: движок PunBB вообще хорошо написан и у него практически все узлы везде имеют классы или айдишки, есть к чему обращаться.
Сайт, который я сейчас пилю - не имеет большей частью такой роскоши, в нём всё внаглую через style в каждом элементе прописано.
Я пока что только индекс классами-айдишками обеспечил, да и то пока процентов лишь на 80.

Знаешь я на Ксенфоро убедился, что когда их слишком много - это тоже плохо))) Особенно, если у них корявые названия, как пример:
https://i.imgur.com/3NGrJEc.png

+1

153

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

когда их слишком много - это тоже плохо

В точку!
Поэтому мои разработки обычно насколько это возможно примитивны.
Пример в иллюстрациях.

Сайт в картинках

https://i.imgur.com/hBhzSCv.jpg
https://i.imgur.com/vEtH1vo.jpg

И поэтому же я и в шаблон для шаблонного движка стараюсь загнать уже готовые блоки, дабы код был проще; см. выше про код.

0

154

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

В точку!
Поэтому мои разработки обычно насколько это возможно примитивны.
Пример в иллюстрациях.

Слишком длинные имена ID, да и если данные блоки входят в header, то лучше обернуть их в общий див, и тогда можно спокойно сократить раза в три имена ID, например:

<div id="header">
    <div id="bar"></div>
    <div id="logo_img"></div>
    <div id="logo_txt"></div>
    <div id="exp"></div>
    <div id="sreak"></div>
    <div id="nav"></div>
</div>

Видишь, всего лишь обернул в блок, а читабельность увеличивается в разы, плюс удобство при верстке дизайна.. А лучше использовать классы..

0

155

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

лишком длинные имена ID, да и если данные блоки входят в header, то лучше обернуть их в общий див,

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

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

А лучше использовать классы..

Да, так.
Но, опять же, моя система: снаружи id, внутри класс :)
Надо будет подробнее это тут расписать :)

ЗЫ Объясню свои слова выше, про общий элемент див.
В коде ниже чётко прослеживется, что сетка гридов у всех элементов общая.

Код:
<style>

...

#wrap
{
	display:grid;
	grid-template-columns:5px 10px 180px 20px 10px 400px 1fr 5px;
	grid-template-rows:5px 220px 100px 5px 75px 50px 50px 10px 1fr 5px 100px 5px;
	width:100%;
	height:150%;
}

#pg_header_bar
{
	grid-column:2/8;
	grid-row:2/8;
	background:#112a17 url('../img/bg_hdr.jpg');
	border:2px #406e39 solid;
	border-radius:8px;
}

#pg_header_logo_img
{
	grid-column:3/4;
	grid-row:3/6;
	background:#c4996d url('../img/logo.png');
	border:2px #6c5a48 solid;
	border-radius:8px;
	box-shadow:1px 1px 2px black, 1px 1px 0.3em #000000;
	transition:1.1s;
}

...

</style>
</header>
<body>
	<div id="wrap">
<div id="pg_header_bar"></div>
<div id="pg_header_logo_img" onclick="javascript:window.location='./'"></div>
<div id="pg_header_logo_txt" onclick="javascript:window.location='./'"><? echo $site_name; ?></div>
<div id="pg_header_exp" onclick="javascript:window.location='./'"><? echo $site_name_exp; ?></div>
<div id="pg_header_nav_streak"></div>
<div id="pg_header_nav">
	<div id="navmenu">
<ul>
	<li><a href="./?p=misc">Разное</a></li>
</ul>
	</div>
</div>
<div id="pg_col_left">
	<h3>Альбомы схем</h3>
	<ul>
<li><a href="./?p=schemes_audio">АУДИО</a></li>
	</ul>
</div>
<div id="pg_col_right">
	<div id="pg_content">
<article>
	(контент страницы)
</article>
	</div>
</div>
<div id="pg_footer"></div>
<div id="pg_footer_copyright">
	<p>Based on <a href="./?p=ver">narod.Engine</a></p>
</div>
	</div>
</body>

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

0

156

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

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

Фиг его знает, каждому удобнее по своему, для меня классику грид только дополняет:

<html>
    <head></head>
   
    <body>
        <div id="шапка"></div>
        <div id="тело"></div>
        <div id="низ"></div>
    </body>
   
    <footer></footer>
</html>

Люблю в HTML лаконичность.. Всё порывался как нить PanBB переписать шаблон (а то, как и на Майбб он меня раздражает), но это долго вникать надо, с учетом, что я в php не очень.. Сам шаблон пересобрать несложно, но я хотел это темой сделать..)) Может буду в отпуске займусь)) Тем более, что для Майбб доделывать диз пока настроения нет..

0

157

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

Всё порывался как нить PanBB переписать шаблон

Есть там одна загогулина: увы, тоже 100% не разделены код и дизайн. А ещё, нет отдельно исполненного шаблонизатора.
Поэтому в своё время я и выбрал phpBB :D

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

Была у меня мыслЯ, шаблонизатор phpBB вкорячить в PunBB - но пришлось бы конвертить овердофига кода.
Зато результат был бы -

Это позволило бы раздельно кодить и дизайнить - причём дизайнить гораздо продуктивнее :)

+1

158

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

где пхп и хтмл сидят отдельно

Да, я бы тогда просто переписал бы HTML не трогая php, тем более там не особо много надо переписывать - в старом PunBB - это заменить таблицы на дивы и выкинуть списки, а в последнем - это выкинуть списки..

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

Поэтому в своё время я и выбрал phpBB

Ну, двойку я особо не видел, а тройка тяжеловатая, да и структура у него мне не нравится..

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

Это позволило бы раздельно кодить и дизайнить - причём дизайнить гораздо продуктивнее :)

Подпишусь - мухи отдельно, котлеты отдельно..)))

+1

159

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

Ну, двойку я особо не видел

Тебе дать дистрибутив?
Есть у меня пачечка почти со всеми плюшками :)
Изучишь на дОсуге.
Рекомендую вкукожить его на Денвер и изучать в живом виде :)
В таком случае я тебе даже могу дать уже выдернутый давно FAQ по phpBB, оформленный в виде сайта для Денвера :)

Пикча

https://i.imgur.com/4hWDwsZ.jpg

Вообще, у меня есть практически всё для начала изучения php как такового. Дело в том, что я пока на работе тружусь месяцами - у меня из головы вылетает всё, так как там-то я занимаюсь совсем другими делами. Как домой приезжаю - немного поднатаскиваюсь обратно :)
ЗЫ Могу предложить свою библиотеку по вебдизу в формате CHM, сейчас заливаю также по phpBB2 папку, в ней же и сайт для Денвера внутри.
Также могу дать дистр Денвера.

0

160

Залил, делюсь:

1) phpBB2 c большей частью известных модов и плюшек - скачать с Яндех.Диска, 60МБ.
2) Вебдизайн почти полностью, в виде chm-файла - скачать из ВК, 36МБ.
3) Используемый мною удобнейший текстовый редактор AkelPad - скачать из ВК, 36МБ.
Денвер добавлю сюда же чуть позже.
По текстовому редактору, скажу вот что.
Там выдранный мною с sourceforge сайт, со всеми бабочками и сварганенным мною дизайном. Программу и плагины бери оттуда же, там всё внутри есть :)
Только не забудь  разблокировать контент CHM-файлов, иначе они не работают - проверено :)
Кстати, по моим этим средствам один парень сейчас учится.
То есть, учится он в институте - но читает из моих CHM материалы и раскидал копии по своим собратьям-студентам :)

+1


Вы здесь » Единый форум поддержки » Комната отдыха » Движок phpBB2 Elysium by John Warner