【问题标题】:How to use conditional tags to switch this style sheets?如何使用条件标签来切换这个样式表?
【发布时间】:2015-09-26 02:46:30
【问题描述】:

我的网站运行良好,但我想根据我的新要求稍微更改 if else 条件。 现在我认为这不是关于wordpress,而是关于如何改变一些PHP conditional tags。 所以我在这里问。

我之前的要求是:

  1. 如果网站是在移动网站上加载的,我必须显示一个按钮,然后 当它被点击时,该站点应该排队一个名为的样式表 responsive.css
  2. 当网站(移动)响应时,另一个按钮应该是 显示为在单击按钮时切换到默认 style.css。

我放了以下按钮:

<div class="cr-athavan-lang-image">
    <a href="?site=mobile" class="mobile_site" id="mobile_site"><img src="file/path/to/img" alt="switch to mobile site"></a>
    <a href="?site=desktop" class="desktop_site"><img src="file/path/to/img" alt="switch to desktop site"></a>  
</div>

style.css

.desktop_site { display: none; }  /* Hiding switch to desktop site button if the site is loaded on desktop */

responsive.css

.desktop_site { display: block; margin-top: 5px; } /* bring back switch to desktop site button if the site is loaded on mobile */

还有我的functions.php

<?php
if ( !wp_is_mobile() ) { // to hide mobile switching button on desktop site 
    function print_inline_script_hide_site_switch() {                   
        ?>
        <script type="text/javascript">     
            jQuery('.mobile_site').hide();                                              
        </script>
        <?php                 
    }
    add_action( 'wp_footer', 'print_inline_script_hide_site_switch' );
}
    else {              
        add_action('init', 'is_it_mobile_or_desktop', 1);
        function is_it_mobile_or_desktop(){
            if (isset($_GET['site']) && in_array($_GET['site'], array('mobile', 'desktop'))){
                setcookie( 'site', $_GET['site'], time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
            }
        }

        add_action('init', 'who_am_i', 2);
        function who_am_i(){

            $site = isset($_GET['site']) && in_array($_GET['site'], array('mobile', 'desktop')) ?  $_GET['site'] : 
                    (isset($_COOKIE['site']) && in_array($_COOKIE['site'], array('mobile', 'desktop'))  ? $_COOKIE['site'] : 'default_css');

            if ($site == 'mobile'){
                function responsive_css(){
                    wp_enqueue_style(
                        'wpa_custom',
                        get_template_directory_uri() . '/css/responsive.css'
                    );
                }
                add_action( 'wp_enqueue_scripts', 'responsive_css', 999 );

                function print_my_inline_script() {                 
                    ?>
                    <script type="text/javascript">
                    /*My inline scripts*/                                               
                    </script>
                    <?php                 
                }
                add_action( 'wp_footer', 'print_my_inline_script' );

            } 
            else {
                function default_css(){
                    wp_enqueue_style(
                        'default_css',
                        get_template_directory_uri() . '/style.css'
                    );
                }
                add_action( 'wp_enqueue_scripts', 'default_css', 999 );
            }
        }
    }
?>

这就是我实现旧要求并正常工作的方式。第一个和第二个要求没有任何问题

现在我更新了要求:

  1. 默认情况下,如果用户来自 桌面
  2. 默认情况下,如果用户来自 移动
  3. 如果用户从移动设备单击桌面切换按钮 (响应式)站点,非响应式站点应加载到 移动。
  4. 如果用户从移动设备点击移动切换按钮 (非响应式)网站,应加载响应式网站。

总结:

  1. 如果网站是在移动设备上加载的,它应该将样式表排入队列 style.css 应该显示button desktop_site

  2. 如果用户点击button desktop_site,那么它应该排队 responsive.css 应该显示button mobile_site

  3. 如果用户再次点击mobile_site button,它应该排队 style.css并且应该显示button desktop_site

我认为它几乎只是if else condition changes,但我无法解决。

请提出建议和解决方案....

【问题讨论】:

  • 您似乎要求访问者单击一个按钮,以便 CSS 隐藏或显示元素以使它们“响应”。为什么不使用媒体查询?
  • 这就是我一开始就向我的客户提出的建议。但是当用户从桌面访问时,他们仍然想要网站的非响应版本
  • (旁白:在帖子中添加投票评论没有任何价值 - 大多数不赞成投票的人不会在那里看到它,并且它不会阻止希望投票反对的人。我已将其删除,因为它通常只是大多数读者不感兴趣的绒毛。如果您真的想对人们的投票说些什么,请使用评论 - 即使那样我也不会打扰。谢谢)。

标签: javascript php if-statement conditional-statements


【解决方案1】:

我认为这个问题与您的一个 wordpress 交换问题有关:wordpress.stackexchange.com/questions/193813/how-to-switch-css-files-according-to-devices-and-button-click/

是的,因为您认为解决方案在 if 声明中:

改变

if (($site == 'desktop'){ // code line }

if (($site == 'desktop') && (wp_is_mobile())) { // code line }

【讨论】:

  • 谢谢..这行得通..而不是投票你理解要求..客户是对的,即使他们是错的..怎么办..这就是我需要这个的原因....
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 2019-09-01
  • 1970-01-01
相关资源
最近更新 更多