if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * Register Site Settings Controls. */ add_action( 'elementor/init', 'hello_elementor_settings_init' ); function hello_elementor_settings_init() { if ( ! hello_header_footer_experiment_active() ) { return; } require 'settings/settings-header.php'; require 'settings/settings-footer.php'; add_action( 'elementor/kit/register_tabs', function( \Elementor\Core\Kits\Documents\Kit $kit ) { if ( ! hello_elementor_display_header_footer() ) { return; } $kit->register_tab( 'hello-settings-header', HelloElementor\Includes\Settings\Settings_Header::class ); $kit->register_tab( 'hello-settings-footer', HelloElementor\Includes\Settings\Settings_Footer::class ); }, 1, 40 ); } /** * Helper function to return a setting. * * Saves 2 lines to get kit, then get setting. Also caches the kit and setting. * * @param string $setting_id * @return string|array same as the Elementor internal function does. */ function hello_elementor_get_setting( $setting_id ) { global $hello_elementor_settings; $return = ''; if ( ! isset( $hello_elementor_settings['kit_settings'] ) ) { $kit = \Elementor\Plugin::$instance->kits_manager->get_active_kit(); $hello_elementor_settings['kit_settings'] = $kit->get_settings(); } if ( isset( $hello_elementor_settings['kit_settings'][ $setting_id ] ) ) { $return = $hello_elementor_settings['kit_settings'][ $setting_id ]; } return apply_filters( 'hello_elementor_' . $setting_id, $return ); } /** * Helper function to show/hide elements * * This works with switches, if the setting ID that has been passed is toggled on, we'll return show, otherwise we'll return hide * * @param string $setting_id * @return string|array same as the Elementor internal function does. */ function hello_show_or_hide( $setting_id ) { return ( 'yes' === hello_elementor_get_setting( $setting_id ) ? 'show' : 'hide' ); } /** * Helper function to translate the header layout setting into a class name. * * @return string */ function hello_get_header_layout_class() { $layout_classes = []; $header_layout = hello_elementor_get_setting( 'hello_header_layout' ); if ( 'inverted' === $header_layout ) { $layout_classes[] = 'header-inverted'; } elseif ( 'stacked' === $header_layout ) { $layout_classes[] = 'header-stacked'; } $header_width = hello_elementor_get_setting( 'hello_header_width' ); if ( 'full-width' === $header_width ) { $layout_classes[] = 'header-full-width'; } $header_menu_dropdown = hello_elementor_get_setting( 'hello_header_menu_dropdown' ); if ( 'tablet' === $header_menu_dropdown ) { $layout_classes[] = 'menu-dropdown-tablet'; } elseif ( 'mobile' === $header_menu_dropdown ) { $layout_classes[] = 'menu-dropdown-mobile'; } elseif ( 'none' === $header_menu_dropdown ) { $layout_classes[] = 'menu-dropdown-none'; } $hello_header_menu_layout = hello_elementor_get_setting( 'hello_header_menu_layout' ); if ( 'dropdown' === $hello_header_menu_layout ) { $layout_classes[] = 'menu-layout-dropdown'; } return implode( ' ', $layout_classes ); } /** * Helper function to translate the footer layout setting into a class name. * * @return string */ function hello_get_footer_layout_class() { $footer_layout = hello_elementor_get_setting( 'hello_footer_layout' ); $layout_classes = []; if ( 'inverted' === $footer_layout ) { $layout_classes[] = 'footer-inverted'; } elseif ( 'stacked' === $footer_layout ) { $layout_classes[] = 'footer-stacked'; } $footer_width = hello_elementor_get_setting( 'hello_footer_width' ); if ( 'full-width' === $footer_width ) { $layout_classes[] = 'footer-full-width'; } if ( hello_elementor_get_setting( 'hello_footer_copyright_display' ) && '' !== hello_elementor_get_setting( 'hello_footer_copyright_text' ) ) { $layout_classes[] = 'footer-has-copyright'; } return implode( ' ', $layout_classes ); } add_action( 'elementor/editor/after_enqueue_scripts', function() { if ( ! hello_header_footer_experiment_active() ) { return; } $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script( 'hello-theme-editor', get_template_directory_uri() . '/assets/js/hello-editor' . $suffix . '.js', [ 'jquery', 'elementor-editor' ], HELLO_ELEMENTOR_VERSION, true ); wp_enqueue_style( 'hello-editor', get_template_directory_uri() . '/editor' . $suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } ); add_action( 'wp_enqueue_scripts', function() { if ( ! hello_elementor_display_header_footer() ) { return; } if ( ! hello_header_footer_experiment_active() ) { return; } $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script( 'hello-theme-frontend', get_template_directory_uri() . '/assets/js/hello-frontend' . $suffix . '.js', [], HELLO_ELEMENTOR_VERSION, true ); \Elementor\Plugin::$instance->kits_manager->frontend_before_enqueue_styles(); } ); /** * Helper function to decide whether to output the header template. * * @return bool */ function hello_get_header_display() { $is_editor = isset( $_GET['elementor-preview'] ); return ( $is_editor || hello_elementor_get_setting( 'hello_header_logo_display' ) || hello_elementor_get_setting( 'hello_header_tagline_display' ) || hello_elementor_get_setting( 'hello_header_menu_display' ) ); } /** * Helper function to decide whether to output the footer template. * * @return bool */ function hello_get_footer_display() { $is_editor = isset( $_GET['elementor-preview'] ); return ( $is_editor || hello_elementor_get_setting( 'hello_footer_logo_display' ) || hello_elementor_get_setting( 'hello_footer_tagline_display' ) || hello_elementor_get_setting( 'hello_footer_menu_display' ) || hello_elementor_get_setting( 'hello_footer_copyright_display' ) ); } /** * Add Hello Elementor theme Header & Footer to Experiments. */ add_action( 'elementor/experiments/default-features-registered', function( \Elementor\Core\Experiments\Manager $experiments_manager ) { $experiments_manager->add_feature( [ 'name' => 'hello-theme-header-footer', 'title' => esc_html__( 'Hello Theme Header & Footer', 'hello-elementor' ), 'description' => sprintf( '%1$s %3$s', esc_html__( 'Customize and style the builtin Hello Theme’s cross-site header & footer from the Elementor "Site Settings" panel.', 'hello-elementor' ), 'https://go.elementor.com/wp-dash-header-footer', esc_html__( 'Learn More', 'hello-elementor' ) ), 'release_status' => $experiments_manager::RELEASE_STATUS_STABLE, 'new_site' => [ 'minimum_installation_version' => '3.3.0', 'default_active' => $experiments_manager::STATE_ACTIVE, ], ] ); } ); /** * Helper function to check if Header & Footer Experiment is Active/Inactive */ function hello_header_footer_experiment_active() { // If Elementor is not active, return false if ( ! did_action( 'elementor/loaded' ) ) { return false; } // Backwards compat. if ( ! method_exists( \Elementor\Plugin::$instance->experiments, 'is_feature_active' ) ) { return false; } return (bool) ( \Elementor\Plugin::$instance->experiments->is_feature_active( 'hello-theme-header-footer' ) ); } Framtidens digitala bibliotek: Mobilitet och tillgänglighet med moderna PWA-lösningar – Alphaserv

I en era där digital adoption accelererar i snabb takt, är det viktigare än någonsin att bibliotek, utbildningsinstitutioner och kulturorganisationer tänker strategiskt kring tillgänglighet och användarupplevelse. Traditionella webbplatser och appar har ofta mött utmaningar vad gäller prestanda och användarvänlighet på mobila enheter. Här spelar Progressiva Web Apps (PWA) en avgörande roll för att skapa ett sömlöst digitalt bibliotek för dagens och framtidens användare.

Digitaliseringens kraft och behovet av mobila lösningar

Enligt en rapport från Statistiska centralbyrån (SCB) använder mer än 85 % av svenskarna en smartphone dagligen. Trots detta är många digitala bibliotek och innehållssajter inte optimalt anpassade för mobil användning, vilket kan begränsa tillgängligheten och användarnas engagemang.

För att möta dessa krav har PWA-teknologi, som kombinerar det bästa från webb och mobilapplikationer, blivit ett strategiskt verktyg. PWA tillåter användare att besöka en webbresurs via webbläsare, men ger samma känsla som en native app — snabb, tillgänglig offline, och lätt att installera.

Vad är en PWA och varför är det en game-changer?

Egenskap Beskrivning
Prestanda Snabb laddningstid, även vid låg bandbredd, tack vare cache-lagring och service workers.
Tillgänglighet offline Funktionen att fortsätta använda tjänsten offline ökar användarnas tillfredsställelse och tillgänglighet.
Installation Enkelt att installera direkt från webbläsaren utan att gå via appbutiker.
Uppdateringar Automatiska och smidiga uppdateringar ger användarna alltid den senaste versionen.

Implementeringen av PWA i biblioteksverksamheten

Fler offentliga bibliotek globalt har insett att PWA-lösningar inte bara förbättrar användarupplevelsen utan även stärker bibliotekets digitala närvaro. Europabadets bibliotek i Stockholm, till exempel, har nyligen integrerat en PWA för sina digitala kataloger, vilket möjliggör snabbare åtkomst och sömlös funktionalitet på mobiler.

En av de mest framstående exemplen är Big Shelf PWA för mobilen. Denna lösning optimerar användarens resa, genom att erbjuda snabb sökning, tillgång till digitala samlingar och personliga bibliotek direkt i telefonen — oavsett plats och tid på dygnet.

Fördelar för användare och bibliotek

Framtiden för digitalt bibliotekande

Kommande år förväntas PWA-teknologin integreras djupare inom biblioteksvärlden med ökande krav på användarcentrerad design och tillgänglighet. För att vara konkurrenskraftiga och relevanta måste kulturinstitutioner anpassa sig till dessa digitala trender.

Det är inte längre tillräckligt att bara ha en digital närvaro; att erbjuda en mobil- och användarvänlig lösning är ett krav för att möta dagens och morgondagens användares behov. Innovationer som Big Shelf PWA för mobilen visar hur denna utveckling kan se ut i praktiken — där tillgängligheten, prestandan och användarcentrerad design samverkar för att forma framtidens digitala bibliotek.

Sammanfattning

“Att anpassa bibliotekens digitala ekosystem till en mobil värld är inte längre ett tillägg — det är grunden för en inkluderande och innovativ kulturarvssektor.”

Genom att investera i PWA-teknologi, som exemplifieras av lösningen Big Shelf PWA för mobilen, är bibliotek och kulturinstitutioner rustade för att möta framtidens krav. Denna teknikutveckling innebär en demokratisk fördel, där tillgång till kultur och information kan ske på de mest användarcentrerade och hållbara sätt.

Leave a Reply

Your email address will not be published. Required fields are marked *