آموزش ساخت انجمن (با انجمن ساز MyBB)
دسته بندی ( ۵۸ آموزش )
نمایش دسته بندی ها (۵۸ آموزش)
مباحث اصلی مرتبط با انجمن mybb (نصب، انتقال، ارتقا و ...)
مباحث اصلی مرتبط با انجمن mybb (نصب، انتقال، ارتقا و ...) 4
توسعه انجمن mybb
توسعه انجمن mybb 4
پلاگین ها، در انجمن MyBB
پلاگین ها، در انجمن MyBB 14
امنیت، در انجمن MyBB
امنیت، در انجمن MyBB 4
پایگاه داده (Database) مربوط به انجمن mybb
پایگاه داده (Database) مربوط به انجمن mybb 1
شیوه کار با بخش های مختلف انجمن mybb (هم برای مدیران و هم برای کاربران)
شیوه کار با بخش های مختلف انجمن mybb (هم برای مدیران و هم برای کاربران) 1
گروه های کاربری، در انجمن MyBB
گروه های کاربری، در انجمن MyBB 1
پیوست ها، در انجمن MyBB
پیوست ها، در انجمن MyBB 2
شکلک ها، در انجمن MyBB
شکلک ها، در انجمن MyBB 1
صفحه اصلی (صفحه اول) انجمن mybb
صفحه اصلی (صفحه اول) انجمن mybb 2
انجمن ها (forums) و زیرانجمن ها (subforums)، در انجمن MyBB
انجمن ها (forums) و زیرانجمن ها (subforums)، در انجمن MyBB 2
موضوع ها (threads)، در انجمن MyBB
موضوع ها (threads)، در انجمن MyBB 1
ارسال ها (posts) و بخش Post Bit ، در انجمن MyBB
ارسال ها (posts) و بخش Post Bit ، در انجمن MyBB 4
راست چین - چپ چین کردن عنصرها (بخش ها)، در انجمن MyBB
راست چین - چپ چین کردن عنصرها (بخش ها)، در انجمن MyBB 1
تگ head و بخش header ، در انجمن MyBB
تگ head و بخش header ، در انجمن MyBB 1
نمایش عکس، آواتار، Favicon و ... ، در انجمن MyBB
نمایش عکس، آواتار، Favicon و ... ، در انجمن MyBB 1
تاریخ و ساعت، در انجمن MyBB
تاریخ و ساعت، در انجمن MyBB 1
پوسته ها و قالب ها، در انجمن MyBB
پوسته ها و قالب ها، در انجمن MyBB 2
موارد مرتبط با زبان PHP ، در انجمن MyBB
موارد مرتبط با زبان PHP ، در انجمن MyBB 2
ارسال ایمیل (email)، در انجمن MyBB
ارسال ایمیل (email)، در انجمن MyBB 4
محل قرارگیری عنصرها و بخش های مختلف، در میان کدهای قالب (theme)، در انجمن MyBB
محل قرارگیری عنصرها و بخش های مختلف، در میان کدهای قالب (theme)، در انجمن MyBB 1
بلوک نقل قول (blockquote)، در انجمن MyBB
بلوک نقل قول (blockquote)، در انجمن MyBB 1
کش (cache)، در انجمن MyBB
کش (cache)، در انجمن MyBB 1
مباحث عمومی، در انجمن MyBB
مباحث عمومی، در انجمن MyBB 2

رفع مشکل وجود کش (cache) از فایل های CSS انجمن mybb در مرورگر اینترنت کاربران و عدم مشاهده تغییرات جدید انجمن توسط آنها (معرفی یک روش دستی)

هنگامی که ما تغییرات مورد نظرمان را در پوسته انجمن (در واقع، فایل های CSS انجمن) اعمال می کنیم، به دلیل اینکه آن فایل های CSS ، قبلا در مرورگر اینترنت کاربران انجمن، به صورت کش (cache) ذخیره شده اند، کاربران آن تغییرات را در همان لحظه مشاهده نخواهند کرد. در این مواقع توصیه می شود که کلیدهای Ctrl و F5 از کیبورد به صورت همزمان زده شوند تا تغییرات جدید مشاهده شود، ولی این روش تنها برای مدیر انجمن و در هنگام اعمال تغییرات و مشاهده نتایج، مناسب خواهد بود و برای کاربران انجمن، آزاردهنده می باشد. در واقع به محض اعمال تغییرات، باید روشی داشته باشیم که بر اساس آن، تغییرات جدید را همه کاربران مشاهده کنند.

شاید روش های مختلفی برای این منظور وجود داشته باشد، ولی قصد داریم در این مبحث، یک روش دستی را معرفی کنیم که دید بهتری در مورد ساختارانجمن به شما خواهد داد (در واقع، به این بهانه، کمی هم در مورد ساختار انجمن صحبت خواهیم کرد).

ما از روش شرح داده شده در کلید شماره 3498 استفاده خواهیم کرد.

ابتدا در کدهای یک صفحه از انجمن، بخش مربوط به فایل های CSS را پیدا می کنیم (کمی از کدهای قبل و بعد از آن را هم ذکر می کنیم تا موقعیت نسبی آنها در صفحه را متوجه شوید) :


<script type="text/javascript" src="http://www.kelidestan.com/forum/jscripts/jquery.js?ver=1806"></script>
<script type="text/javascript" src="http://www.kelidestan.com/forum/jscripts/jquery.plugins.min.js?ver=1806"></script>
<script type="text/javascript" src="http://www.kelidestan.com/forum/jscripts/general.js?ver=1806"></script>

<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/global.css" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/css3.css" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/star_ratings.css" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/showthread.css" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/shar.css" />

<script type="text/javascript">
        lang.unknown_error = "یک خطای ناشناخته رخ داده است.";

        lang.select2_match = "یک نتیجه یافت شد، لطفا کلید Enter را برای انتخاب آن فشار دهید.";
        lang.select2_matches = "{1} نتیجه دردسترس است، لطفا از کلید‌های بالا و پایین برای انتخاب نتیجه استفاده کنید.";
        lang.select2_nomatches = "هیچ نتیجه‌ای یافت نشد";

اکنون اگر بخواهیم که همین بخش را در کنترل پنل مدیریت و در بخش قالب ها بیابیم، به مسیر زیر خواهیم رسید :

پنل مدیریت >> قالب‌ها و پوسته‌ها >> قالب‌ها >> قالب مورد نظر >> قالب‌های گروه بندی نشده >> بخش headerinclude

در کدهای بخش بالا، قسمتی از کدها به صورت زیر است :


<script type="text/javascript" src="{$mybb->asset_url}/jscripts/jquery.js?ver=1806"></script>
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/jquery.plugins.min.js?ver=1806"></script>
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/general.js?ver=1806"></script>

{$stylesheets}
<script type="text/javascript">
        lang.unknown_error = "{$lang->unknown_error}";

        lang.select2_match = "{$lang->select2_match}";
        lang.select2_matches = "{$lang->select2_matches}";
        lang.select2_nomatches = "{$lang->select2_nomatches}";

بنابراین {$stylesheets} مربوط به فایل های CSS می باشد. اما شما در بخش های مختلف قالب، آن را پیدا نخواهید کرد زیرا متغیری می باشد که در فایل های هسته (core) انجمن mybb تعریف شده است.

با کمی جستجو، به سراغ فایل global.php می رویم که در پوشه اصلی محل نصب انجمن mybb قرار دارد. آن را با یک ویرایشگر متن باز کرده و بخش مربوط به $stylesheets را پیدا می کنیم (همه آن را ذکر می کنیم، اما تنها 2 خط از کدهای آن برایمان مهم است) :


// Fetch all necessary stylesheets
$stylesheets = '';
$theme['stylesheets'] = my_unserialize($theme['stylesheets']);
$stylesheet_scripts = array("global", basename($_SERVER['PHP_SELF']));
if(!empty($theme['color']))
{
        $stylesheet_scripts[] = $theme['color'];
}
$stylesheet_actions = array("global");
if(!empty($mybb->input['action']))
{
        $stylesheet_actions[] = $mybb->get_input('action');
}
foreach($stylesheet_scripts as $stylesheet_script)
{
        // Load stylesheets for global actions and the current action
        foreach($stylesheet_actions as $stylesheet_action)
        {
                if(!$stylesheet_action)
                {
                        continue;
                }

                if(!empty($theme['stylesheets'][$stylesheet_script][$stylesheet_action]))
                {
                        // Actually add the stylesheets to the list
                        foreach($theme['stylesheets'][$stylesheet_script][$stylesheet_action] as $page_stylesheet)
                        {
                                if(!empty($already_loaded[$page_stylesheet]))
                                {
                                        continue;
                                }

                                if(strpos($page_stylesheet, 'css.php') !== false)
                                {
                                        $stylesheet_url = $mybb->settings['bburl'] . '/' . $page_stylesheet;
                                }
                                else
                                {
                                        $stylesheet_url = $mybb->get_asset_url($page_stylesheet);
                                }

                                if($mybb->settings['minifycss'])
                                {
                                        $stylesheet_url = str_replace('.css', '.min.css', $stylesheet_url);
                                }

                                if(strpos($page_stylesheet, 'css.php') !== false)
                                {
                                        // We need some modification to get it working with the displayorder
                                        $query_string = parse_url($stylesheet_url, PHP_URL_QUERY);
                                        $id = (int) my_substr($query_string, 11);
                                        $query = $db->simple_select("themestylesheets", "name", "sid={$id}");
                                        $real_name = $db->fetch_field($query, "name");
                                        $theme_stylesheets[$real_name] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$stylesheet_url}?v=0.001\" />\n";
                                }
                                else
                                {
                                        $theme_stylesheets[basename($page_stylesheet)] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$stylesheet_url}?v=0.001\" />\n";
                                }

                                $already_loaded[$page_stylesheet] = 1;
                        }
                }
        }
}
unset($actions);

if(!empty($theme_stylesheets))
{
        foreach($theme['disporder'] as $style_name => $order)
        {
                if(!empty($theme_stylesheets[$style_name]))
                {
                        $stylesheets .= $theme_stylesheets[$style_name];
                }
        }
}

در واقع، چون فایل های هسته انجمن mybb در نسخه های مختلف آن تغییر می کنند، شما تنها باید این بخش را پیدا کرده (حالا هر کدی که دارد) و خط های مربوط به ساخت آدرس فایل های CSS را بیابید و به آخر آنها، یک شماره اضافه کنید (بر اساس توضیحات کلید شماره 3498 )، سپس هر زمان که تغییرات شما در فایل های CSS اعمال شد و قصد داشتید آنها را همه کاربران ببینند، این فایل را باز کرده و شماره را افزایش می دهید و به دلیل اینکه آدرس فایل CSS تغییر می کند، مرورگر اینترنت، فایل جدید را دریافت کرده و استفاده می نماید.

مثلا برای همین کدی که ذکر شد، ابتدا کد خط زیر را :


$theme_stylesheets[$real_name] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$stylesheet_url}\" />\n";

به این کد تغییر می دهیم (عبارت ?v=0.001 به انتهای آدرس فایل های CSS افزوده می شود) :


$theme_stylesheets[$real_name] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$stylesheet_url}?v=0.001\" />\n";

سپس کد خط زیر را :


$theme_stylesheets[basename($page_stylesheet)] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$stylesheet_url}\" />\n";

به کد زیر تغییر خواهیم داد (عبارت ?v=0.001 به انتهای آدرس فایل های CSS افزوده می شود) :


$theme_stylesheets[basename($page_stylesheet)] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$stylesheet_url}?v=0.001\" />\n";

پس اگر این بار کدهای یک صفحه از انجمن mybb را مشاهده کنیم، عبارت ?v=0.001 به انتهای آدرس فایل های CSS افزوده شده و مرورگر اینترنت، به دلیل جدید بودن آدرس فایل ها، آنها را دریافت کرده و از آنها برای نمایش صفحه استفاده خواهد کرد (نه از فایل های قدیمی cache شده) :


<script type="text/javascript" src="http://www.kelidestan.com/forum/jscripts/jquery.js?ver=1806"></script>
<script type="text/javascript" src="http://www.kelidestan.com/forum/jscripts/jquery.plugins.min.js?ver=1806"></script>
<script type="text/javascript" src="http://www.kelidestan.com/forum/jscripts/general.js?ver=1806"></script>

<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/global.css?v=0.001" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/css3.css?v=0.001" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/star_ratings.css?v=0.001" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/showthread.css?v=0.001" />
<link type="text/css" rel="stylesheet" href="http://www.kelidestan.com/forum/cache/themes/theme4/shar.css?v=0.001" />

<script type="text/javascript">
        lang.unknown_error = "یک خطای ناشناخته رخ داده است.";

        lang.select2_match = "یک نتیجه یافت شد، لطفا کلید Enter را برای انتخاب آن فشار دهید.";
        lang.select2_matches = "{1} نتیجه دردسترس است، لطفا از کلید‌های بالا و پایین برای انتخاب نتیجه استفاده کنید.";
        lang.select2_nomatches = "هیچ نتیجه‌ای یافت نشد";

در سری بعد که دوباره تغییراتی را اعمال کنیم، تنها کافی است که شماره را از 0.001 به 0.002 افزایش دهید (یا می توانید از شماره های 1 و 2 و 3 و ... استفاده نمایید).

نویسنده علیرضا گلمکانی
شماره کلید 4725
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)

جستجو در کلیدستان، توسط گوگل

جستجو در عنوان کلیدها

دسترسی سریع

کلید
×

شماره کلید


دسته بندی
×

شماره دسته کلید


جستجو
×

جستجو