Основной шаблон у меня заработал.
На удивление, даже ошибок особых нет, кроме одной вещи: проковырялся столько времени, столкнулся с ещё одной проблемой.
Изначальный концепт "движка" сайта - "лепи чего тебе надо прямо в это место кода", плюс приcранные внешние модули, и всё правится из админки CKEdtor'ом.
Проблема сейчас в том, что в код налепили кусков хтмл и пхп из отдельных файлов, и я придумываю, как сделать вставлялку этих кусков в шаблон.
Движок phpBB2 Elysium by John Warner
Сообщений 141 страница 160 из 193
Поделиться141Вт, 26 Май 2020 02:30:45
Поделиться142Вт, 26 Май 2020 15:55:48
Ну всё.
Заголовок и подвал у меня работают, со всеми функциями, через шаблоны.
Чиню индекс.
Поделиться143Чт, 28 Май 2020 14:41:36
Ку всем!
Продолжаю работу над сайтом.
Раскукожил дистрибутив 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&id=$1', 'change_email_key'=> 'profile.php?action=change_email&id=$1&key=$2', 'change_password'=> 'profile.php?action=change_pass&id=$1', 'change_password_key' => 'profile.php?action=change_pass&id=$1&key=$2', 'delete_user' => 'profile.php?action=delete_user&id=$1', 'delete'=> 'delete.php?id=$1', 'delete_avatar' => 'profile.php?action=delete_avatar&id=$1&csrf_token=$2', 'edit' => 'edit.php?id=$1', 'email' => 'misc.php?email=$1', 'forum' => 'viewforum.php?id=$1', 'forum_rss'=> 'extern.php?action=feed&fid=$1&type=rss', 'forum_atom' => 'extern.php?action=feed&fid=$1&type=atom', 'forum_subscribe'=> 'misc.php?forum_subscribe=$1&csrf_token=$2', 'forum_unsubscribe'=> 'misc.php?forum_unsubscribe=$1&csrf_token=$2', 'help' => 'help.php?section=$1', 'index' => 'index.php', 'index_rss'=> 'extern.php?action=feed&type=rss', 'index_atom' => 'extern.php?action=feed&type=atom', 'login' => 'login.php', 'logout'=> 'login.php?action=out&id=$1&csrf_token=$2', 'mark_read'=> 'misc.php?action=markread&csrf_token=$1', 'mark_forum_read'=> 'misc.php?action=markforumread&fid=$1&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&id=$1', 'profile_identity'=> 'profile.php?section=identity&id=$1', 'profile_settings'=> 'profile.php?section=settings&id=$1', 'profile_avatar'=> 'profile.php?section=avatar&id=$1', 'profile_signature'=> 'profile.php?section=signature&id=$1', 'profile_admin' => 'profile.php?section=admin&id=$1', 'quote' => 'post.php?tid=$1&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&keywords=$1&author=$3&forum=$2&search_in=$4&sort_by=$5&sort_dir=$6&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&forum=$1', 'search_recent' => 'search.php?action=show_recent', 'search_recent_results' => 'search.php?action=show_recent&value=$1', 'search_unanswered'=> 'search.php?action=show_unanswered', 'search_subscriptions' => 'search.php?action=show_subscriptions&user_id=$1', 'search_forum_subscriptions' => 'search.php?action=show_forum_subscriptions&user_id=$1', 'search_user_posts'=> 'search.php?action=show_user_posts&user_id=$1', 'search_user_topics' => 'search.php?action=show_user_topics&user_id=$1', 'subscribe'=> 'misc.php?subscribe=$1&csrf_token=$2', 'topic' => 'viewtopic.php?id=$1', 'topic_rss'=> 'extern.php?action=feed&tid=$1&type=rss', 'topic_atom' => 'extern.php?action=feed&tid=$1&type=atom', 'topic_new_posts'=> 'viewtopic.php?id=$1&action=new', 'topic_last_post'=> 'viewtopic.php?id=$1&action=last', 'unsubscribe' => 'misc.php?unsubscribe=$1&csrf_token=$2', 'user' => 'profile.php?id=$1', 'users' => 'userlist.php', 'users_browse' => 'userlist.php?show_group=$1&sort_by=$2&sort_dir=$3&username=$4', 'page' => '&p=$1', 'moderate_forum'=> 'moderate.php?fid=$1', 'get_host'=> 'moderate.php?get_host=$1', 'move' => 'moderate.php?fid=$1&move_topics=$2', 'open' => 'moderate.php?fid=$1&open=$2&csrf_token=$3', 'close' => 'moderate.php?fid=$1&close=$2&csrf_token=$3', 'stick' => 'moderate.php?fid=$1&stick=$2&csrf_token=$3', 'unstick'=> 'moderate.php?fid=$1&unstick=$2&csrf_token=$3', 'moderate_topic'=> 'moderate.php?fid=$1&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 . '&action=change_email&id=$1', 'change_email_key'=> 'profile' . $phpEx . '&action=change_email&id=$1&key=$2', 'change_password'=> 'profile' . $phpEx . '&action=change_pass&id=$1', 'change_password_key' => 'profile' . $phpEx . '&action=change_pass&id=$1&key=$2', 'delete_user' => 'profile' . $phpEx . '&action=delete_user&id=$1', 'delete'=> 'delete' . $phpEx . '&id=$1', 'delete_avatar' => 'profile' . $phpEx . '&action=delete_avatar&id=$1&csrf_token=$2', 'edit' => 'edit' . $phpEx . '&id=$1', 'email' => 'misc' . $phpEx . '&email=$1', 'forum' => 'viewforum' . $phpEx . '&id=$1', 'forum_rss'=> 'extern' . $phpEx . '&action=feed&fid=$1&type=rss', 'forum_atom' => 'extern' . $phpEx . '&action=feed&fid=$1&type=atom', 'forum_subscribe'=> 'misc' . $phpEx . '&forum_subscribe=$1&csrf_token=$2', 'forum_unsubscribe'=> 'misc' . $phpEx . '&forum_unsubscribe=$1&csrf_token=$2', 'help' => 'help' . $phpEx . '&section=$1', 'index' => 'index' . $phpEx, 'index_rss'=> 'extern' . $phpEx . '&action=feed&type=rss', 'index_atom' => 'extern' . $phpEx . '&action=feed&type=atom', 'login' => 'login' . $phpEx, 'logout'=> 'login' . $phpEx . '&action=out&id=$1&csrf_token=$2', 'mark_read'=> 'misc' . $phpEx . '&action=markread&csrf_token=$1', 'mark_forum_read'=> 'misc' . $phpEx . '&action=markforumread&fid=$1&csrf_token=$2', 'new_topic'=> 'post' . $phpEx . '&fid=$1', 'new_reply'=> 'post' . $phpEx . '&tid=$1', 'opensearch' => 'misc' . $phpEx . '&action=opensearch', 'post' => 'viewtopic' . $phpEx . '&pid=$1#p$1', 'profile_about' => 'profile' . $phpEx . '&section=about&id=$1', 'profile_identity'=> 'profile' . $phpEx . '&section=identity&id=$1', 'profile_settings'=> 'profile' . $phpEx . '&section=settings&id=$1', 'profile_avatar'=> 'profile' . $phpEx . '&section=avatar&id=$1', 'profile_signature'=> 'profile' . $phpEx . '&section=signature&id=$1', 'profile_admin' => 'profile' . $phpEx . '&section=admin&id=$1', 'quote' => 'post' . $phpEx . '&tid=$1&qid=$2', 'register'=> 'register' . $phpEx, 'report'=> 'misc' . $phpEx . '&report=$1', 'request_password'=> 'login' . $phpEx . '&action=forget', 'rules' => 'misc' . $phpEx . '&action=rules', 'search'=> 'search' . $phpEx, 'search_advanced'=> 'search' . $phpEx . '&advanced=1', 'search_resultft'=> 'search' . $phpEx . '&action=search&keywords=$1&author=$3&forum=$2&search_in=$4&sort_by=$5&sort_dir=$6&show_as=$7', 'search_results'=> 'search' . $phpEx . '&search_id=$1', 'search_new' => 'search' . $phpEx . '&action=show_new', 'search_new_results' => 'search' . $phpEx . '&action=show_new&forum=$1', 'search_recent' => 'search' . $phpEx . '&action=show_recent', 'search_recent_results' => 'search' . $phpEx . '&action=show_recent&value=$1', 'search_unanswered'=> 'search' . $phpEx . '&action=show_unanswered', 'search_subscriptions' => 'search' . $phpEx . '&action=show_subscriptions&user_id=$1', 'search_forum_subscriptions' => 'search' . $phpEx . '&action=show_forum_subscriptions&user_id=$1', 'search_user_posts'=> 'search' . $phpEx . '&action=show_user_posts&user_id=$1', 'search_user_topics' => 'search' . $phpEx . '&action=show_user_topics&user_id=$1', 'subscribe'=> 'misc' . $phpEx . '&subscribe=$1&csrf_token=$2', 'topic' => 'viewtopic' . $phpEx . '&id=$1', 'topic_rss'=> 'extern' . $phpEx . '&action=feed&tid=$1&type=rss', 'topic_atom' => 'extern' . $phpEx . '&action=feed&tid=$1&type=atom', 'topic_new_posts'=> 'viewtopic' . $phpEx . '&id=$1&action=new', 'topic_last_post'=> 'viewtopic' . $phpEx . '&id=$1&action=last', 'unsubscribe' => 'misc' . $phpEx . '&unsubscribe=$1&csrf_token=$2', 'user' => 'profile' . $phpEx . '&id=$1', 'users' => 'userlist' . $phpEx, 'users_browse' => 'userlist' . $phpEx . '&show_group=$1&sort_by=$2&sort_dir=$3&username=$4', 'page' => '&p=$1', 'moderate_forum'=> 'moderate' . $phpEx . '&fid=$1', 'get_host'=> 'moderate' . $phpEx . '&get_host=$1', 'move' => 'moderate' . $phpEx . '&fid=$1&move_topics=$2', 'open' => 'moderate' . $phpEx . '&fid=$1&open=$2&csrf_token=$3', 'close' => 'moderate' . $phpEx . '&fid=$1&close=$2&csrf_token=$3', 'stick' => 'moderate' . $phpEx . '&fid=$1&stick=$2&csrf_token=$3', 'unstick'=> 'moderate' . $phpEx . '&fid=$1&unstick=$2&csrf_token=$3', 'moderate_topic'=> 'moderate' . $phpEx . '&fid=$1&tid=$2', 'admin_index' => 'admin/index' . $phpEx, 'admin_bans' => 'admin/bans' . $phpEx . '&sort_by=1', 'admin_categories'=> 'admin/categories' . $phpEx, 'admin_censoring'=> 'admin/censoring' . $phpEx, 'admin_extensions_manage'=> 'admin/extensions' . $phpEx . '&section=manage', 'admin_extensions_hotfixes'=> 'admin/extensions' . $phpEx . '&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 . '&section=setup', 'admin_settings_features'=> 'admin/settings' . $phpEx . '&section=features', 'admin_settings_content'=> 'admin/settings' . $phpEx . '&section=content', 'admin_settings_email' => 'admin/settings' . $phpEx . '&section=email', 'admin_settings_announcements' => 'admin/settings' . $phpEx . '&section=announcements', 'admin_settings_registration' => 'admin/settings' . $phpEx . '&section=registration', 'admin_settings_communications' => 'admin/settings' . $phpEx . '&section=communications', 'admin_settings_maintenance' => 'admin/settings' . $phpEx . '&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 - но это в планах.
Поделиться144Чт, 28 Май 2020 15:02:18
Интересно, это вообще кто-нибудь читает?
Поделиться145Чт, 28 Май 2020 16:26:15
Интересно, это вообще кто-нибудь читает?
Думаю я, Дефф и Алекс))
Я правда ещё не освоил защиту от DDOS - но это в планах.
На самом деле ее не освоил по сути никто - есть только один реальный способ, но он бьет сильно по карману - увеличить пропускной канал, и увеличить мощность железа.. Эффективность фильтров сводится к тому, чтобы хватило пропускного канала и мощностей..)) Правда заблокированным пользователям от этого не легче))
Поделиться146Чт, 28 Май 2020 16:57:23
kolobdur74
Оке.
Скажи, вообще есть смысл это всё писать, или нет? Полезно ли?
Я временами думаю, что меня тут читают и отвечают больше из вежливости
Поделиться147Чт, 28 Май 2020 17:10:38
Скажи, вообще есть смысл это всё писать, или нет? Полезно ли?
Я временами думаю, что меня тут читают и отвечают больше из вежливости
Ну, лично я читаю в качестве принять к сведению - я с php не очень дружу)) Но присматриваюсь к движкам для себя, так что как бы информация так или иначе мне полезна.. Другое дело, что я больше склоняюсь к PanBB (не сочти за ошибку - именно PanBB, а не PunBB).. Раньше подумывал о Ксенфоро, но к его непомерной стоимости прибавилось непомерная его тяжесть и неудобство как для разработчика, поэтому Ксенфоро тоже отпал.. PhpBB3 - тоже думал о нем, но мне его Админка все таки неудобна.. Собственно с движками форумов нынче, как я вижу, есть проблема, так что то что ты делаешь весьма полезно - может ты разовьешь отдельную ветку форумов PhpBB.. Так что смысл писать тебе,как для меня, есть.. Ну, и я лично в подобных ветках редко пишу)) Из вежливости не пишу)))
Отредактировано kolobdur74 (Чт, 28 Май 2020 17:10:57)
Поделиться148Чт, 28 Май 2020 17:13:58
и задать пути к ним показанного выше формата
Кстати, с помощью показанного ещё выше задатчика путей и имён файлов, вот это
<? 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
уже не канает.
Хорошая идея, но не в этом проекте; ещё и под это перепахивать код - я уже и без этого заколебался)))
Поделиться149Чт, 28 Май 2020 17:20:04
PanBB
Знаю, да. Русский частично платный форк.
я с php не очень дружу
Я наоборот - так и не освоил, к своему стыду, жабоскрипт, но похапэ - вещь показалась лёгкая и понятная
Кстати, языки группы Си я тоже не осваивал, за ненадобностью мне, но так как Сишники являются основой, скелетом для многих прочих языков - то доводилось подобный пхпшному код видеть и в других проектах, где я участвовал - например, есть такой движок игровой как id tech 3, у которого для описания поведения NPC (врагов и союзников) используется специальный Си-подобный язык, равно как в его форках, с отличиями, но единообразно.
В итоге, если что-то пишешь под id tech 3, потом с прочими гораздо легче освоиться.
Примерно так произошло со мной
Поделиться150Чт, 28 Май 2020 17:31:12
Знаю, да. Русский частично платный форк.
Не, он совсем бесплатный - там нужна одноразовая небольшая оплата для допуска к скачиванию тем, модов, сборок.. Груба говоря это донат для поддержки проекта))
Я наоборот - так и не освоил, к своему стыду, жабоскрипт, но похапэ - вещь показалась лёгкая и понятная
А, я еще меньше - больше ушел в сторону CSS, и то набегами.. Вот ты мне про грид подсказал - порыл по нему)) Вообще Майбб в этом плане хорошая школа, когда в полной мере есть только CSS.. Теперь можно "поломать" любой движок вообще его не трогая)))
Поделиться151Чт, 28 Май 2020 17:39:01
Теперь можно "поломать" любой движок вообще его не трогая)))
В смысле, поломать дизайн?
Раньше в Опере была фича - можно было задавать для любого адреса в сети свой дизайн. Я этим плотно пользовался.
Сейчас оно может и есть - но я не рыл, куда они это засунули.
Адблокер оперский встроенный, хоть и работает тоже через CSS, но не позволяет вносить свои адекватные правки, увы, да и защищён проверкой хешей файлов.
там нужна одноразовая небольшая оплата для допуска к скачиванию тем, модов, сборок
Воот оно что, но у меня сейчас всё равно нет денег даже на одноразовый донат
Но я подумаю об этом позже
Вот ты мне про грид подсказал - порыл по нему
Да, гриды - вообще вещь, я сейчас их освоил более-менее, не нарадуюсь, как удобно
Они с дивами - как хлеб и Рама, созданы друг для друга. Я даже теперь насовсем таблицы забросил и без них вообще обхожусь
Вообще Майбб в этом плане хорошая школа, когда в полной мере есть только CSS.
Согласен.
Но есть одно большое НО: движок PunBB вообще хорошо написан и у него практически все узлы везде имеют классы или айдишки, есть к чему обращаться.
Сайт, который я сейчас пилю - не имеет большей частью такой роскоши, в нём всё внаглую через style в каждом элементе прописано.
Я пока что только индекс классами-айдишками обеспечил, да и то пока процентов лишь на 80.
Поделиться152Чт, 28 Май 2020 18:00:56
В смысле, поломать дизайн?
Ну, да))
Воот оно что, но у меня сейчас всё равно нет денег даже на одноразовый донат
Но я подумаю об этом позже
Конкретно сейчас - это продление домена на рег ру, минимум на 1 месяц - 260 рублей..))
Да, гриды - вообще вещь, я сейчас их освоил более-менее, не нарадуюсь, как удобно
Они с дивами - как хлеб и Рама, созданы друг для друга. Я даже теперь насовсем таблицы забросил и без них вообще обхожусь
Ну, я уже где то здесь писал, что таблицы с появлением грида устарели, флекс полностью не заменял таблицу, грид перекрывает полностью..
Но есть одно большое НО: движок PunBB вообще хорошо написан и у него практически все узлы везде имеют классы или айдишки, есть к чему обращаться.
Сайт, который я сейчас пилю - не имеет большей частью такой роскоши, в нём всё внаглую через style в каждом элементе прописано.
Я пока что только индекс классами-айдишками обеспечил, да и то пока процентов лишь на 80.
Знаешь я на Ксенфоро убедился, что когда их слишком много - это тоже плохо))) Особенно, если у них корявые названия, как пример:
Поделиться153Чт, 28 Май 2020 18:06:40
когда их слишком много - это тоже плохо
В точку!
Поэтому мои разработки обычно насколько это возможно примитивны.
Пример в иллюстрациях.
И поэтому же я и в шаблон для шаблонного движка стараюсь загнать уже готовые блоки, дабы код был проще; см. выше про код.
Поделиться154Чт, 28 Май 2020 18:30:58
В точку!
Поэтому мои разработки обычно насколько это возможно примитивны.
Пример в иллюстрациях.
Слишком длинные имена 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>
Видишь, всего лишь обернул в блок, а читабельность увеличивается в разы, плюс удобство при верстке дизайна.. А лучше использовать классы..
Поделиться155Чт, 28 Май 2020 18:39:19
лишком длинные имена ID, да и если данные блоки входят в header, то лучше обернуть их в общий див,
Да, так.
Но это особенность грида - все элементы желательно размещать в общем диве, дабы не прописывать лишнего кода. Отсюда и имена такие - по крайней мере в моём исполнении, тем более, что у меня это уже своего рода система.
А лучше использовать классы..
Да, так.
Но, опять же, моя система: снаружи 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>
То есть, если оборачивать, например, шапку в див, то тогда в свойствах гридов придётся писать отдельные свойства для шапки.
Оно, конечно же, так по путям и надо - но я изначально рисовал сайт на листе бумаги, с расчётом по пикселям и задавал все элементы на общей сетке.
А если по-взрослому - да, придётся изначально задавать отдельные гриды для скелетной общей структуры и для каждого элемента с особенностями внутри.
Но это долго (ленюсь, хе-хе).
Поделиться156Чт, 28 Май 2020 18:57:16
Но это особенность грида - все элементы желательно размещать в общем диве, дабы не прописывать лишнего кода. Отсюда и имена такие - по крайней мере в моём исполнении, тем более, что у меня это уже своего рода система.
Фиг его знает, каждому удобнее по своему, для меня классику грид только дополняет:
<html>
<head></head>
<body>
<div id="шапка"></div>
<div id="тело"></div>
<div id="низ"></div>
</body>
<footer></footer>
</html>
Люблю в HTML лаконичность.. Всё порывался как нить PanBB переписать шаблон (а то, как и на Майбб он меня раздражает), но это долго вникать надо, с учетом, что я в php не очень.. Сам шаблон пересобрать несложно, но я хотел это темой сделать..)) Может буду в отпуске займусь)) Тем более, что для Майбб доделывать диз пока настроения нет..
Поделиться157Чт, 28 Май 2020 19:13:51
Всё порывался как нить PanBB переписать шаблон
Есть там одна загогулина: увы, тоже 100% не разделены код и дизайн. А ещё, нет отдельно исполненного шаблонизатора.
Поэтому в своё время я и выбрал phpBB
Сегодня я практически полностью юзаю удобные шаблоны на любом своём проекте - где пхп и хтмл сидят отдельно, а дизайн можно вкукожить любой сверхбыстро
Была у меня мыслЯ, шаблонизатор phpBB вкорячить в PunBB - но пришлось бы конвертить овердофига кода.
Зато результат был бы -
Это позволило бы раздельно кодить и дизайнить - причём дизайнить гораздо продуктивнее
Поделиться158Чт, 28 Май 2020 19:24:00
где пхп и хтмл сидят отдельно
Да, я бы тогда просто переписал бы HTML не трогая php, тем более там не особо много надо переписывать - в старом PunBB - это заменить таблицы на дивы и выкинуть списки, а в последнем - это выкинуть списки..
Поэтому в своё время я и выбрал phpBB
Ну, двойку я особо не видел, а тройка тяжеловатая, да и структура у него мне не нравится..
Это позволило бы раздельно кодить и дизайнить - причём дизайнить гораздо продуктивнее
Подпишусь - мухи отдельно, котлеты отдельно..)))
Поделиться159Чт, 28 Май 2020 19:30:13
Ну, двойку я особо не видел
Тебе дать дистрибутив?
Есть у меня пачечка почти со всеми плюшками
Изучишь на дОсуге.
Рекомендую вкукожить его на Денвер и изучать в живом виде
В таком случае я тебе даже могу дать уже выдернутый давно FAQ по phpBB, оформленный в виде сайта для Денвера
Вообще, у меня есть практически всё для начала изучения php как такового. Дело в том, что я пока на работе тружусь месяцами - у меня из головы вылетает всё, так как там-то я занимаюсь совсем другими делами. Как домой приезжаю - немного поднатаскиваюсь обратно
ЗЫ Могу предложить свою библиотеку по вебдизу в формате CHM, сейчас заливаю также по phpBB2 папку, в ней же и сайт для Денвера внутри.
Также могу дать дистр Денвера.
Поделиться160Чт, 28 Май 2020 19:49:33
Залил, делюсь:
1) phpBB2 c большей частью известных модов и плюшек - скачать с Яндех.Диска, 60МБ.
2) Вебдизайн почти полностью, в виде chm-файла - скачать из ВК, 36МБ.
3) Используемый мною удобнейший текстовый редактор AkelPad - скачать из ВК, 36МБ.
Денвер добавлю сюда же чуть позже.
По текстовому редактору, скажу вот что.
Там выдранный мною с sourceforge сайт, со всеми бабочками и сварганенным мною дизайном. Программу и плагины бери оттуда же, там всё внутри есть
Только не забудь разблокировать контент CHM-файлов, иначе они не работают - проверено
Кстати, по моим этим средствам один парень сейчас учится.
То есть, учится он в институте - но читает из моих CHM материалы и раскидал копии по своим собратьям-студентам