Jump to content

The Old Man

Clients
  • Posts

    3,958
  • Joined

  • Last visited

  • Days Won

    11

 Content Type 

Downloads

Release Notes

IPS4 Guides

IPS4 Developer Documentation

Invision Community Blog

Development Blog

Deprecation Tracker

Providers Directory

Forums

Events

Store

Gallery

Posts posted by The Old Man

  1. I couldn't find anything in the docs, but I want to apply some different code in template logic for desktops, tablets and phones.

    We can use media queries in CSS to make styling relevant for certain device screen widths and we have ipsResponsive_showPhone etc.

    However, is there a utility available to do the same for HTML in IPS' template logic, perhaps a PHP expression or something?

    Something like:

    {{ is small-device/phone? }}
    this code
    {{elseif is medium-device/tablet? }}
    this code
    {{else}}
    use this for everything else
    {{endif}}

    Many thanks!

  2. Thanks, I just took a screenshot while trying out different variations.

    I did try your corrected syntax but for some reason, it didn't work.

    Could contain: File, Page, Text, Computer Hardware, Electronics, Hardware, Monitor, Screen

     

    Update: It returns NULL for other custom theme settings too. It works for a standard one like primary_button so I must have the syntax wrong for the variable. If it wasn't asking for raw PHP, I could just use theme.mysetting

  3. Hi,

    Do we know if this functionality is designed to work 'as is' in Custom Theme Settings?

    Presumably, the setting is eval'd when the settings page loads or is updated via some AJAX or something so that it knows what to display.

    It kind of seems back to front to me. Setting A should toggle Setting B on/off but the way it is set up says the code goes in Setting B (so it toggles itself on/off based on Setting A).

    Could contain: Page, Text, File, Computer Hardware, Electronics, Hardware, Monitor, Screen

    The text description below the Condition field suggests it should work, so it is probably a case of me not using the correct theme setting format, because although there is no error generated, all it seems to actually do is hide itself from view after saving. I can't see it working as the setting shows as NULL unless that's what it checks for. Maybe I should check for not null! 

     

     

     

     

  4. Hi,

    According to this help guide and an existing setting in the AdminCP

    https://invisioncommunity.com/4guides/themes-and-customizations/advanced-theming/managing-theme-settings-r128/

    <?php
    
    return \IPS\Settings::i()->bot_antispam_type === 'recaptcha2';

    This would return true for use in a conditional theme setting so that a setting will be shown or not, but when I try this using my own custom theme setting:

    <?php
    
    return \IPS\Theme::i()->my_theme_setting == true;

    it gives me an error:

    Error: Undefined constant "my_theme_setting" (0)
    #0 C:\laragon\htdocs\ips4-dev-theme3\system\Theme\Theme.php(1818): eval()
    #1 C:\laragon\htdocs\ips4-dev-theme3\system\Theme\Theme.php(1797): IPS\_Theme->getCustomSettingField(Array)
    #2 C:\laragon\htdocs\ips4-dev-theme3\system\Node\Controller.php(496): IPS\_Theme->form(Object(IPS\Helpers\Form))
    #3 C:\laragon\htdocs\ips4-dev-theme3\system\Node\Controller.php(395): IPS\Node\_Controller->_addEditForm(Object(IPS\Theme))
    #4 C:\laragon\htdocs\ips4-dev-theme3\system\Dispatcher\Controller.php(107): IPS\Node\_Controller->form()
    #5 C:\laragon\htdocs\ips4-dev-theme3\system\Node\Controller.php(69): IPS\Dispatcher\_Controller->execute()
    #6 C:\laragon\htdocs\ips4-dev-theme3\applications\core\modules\admin\customization\themes.php(59): IPS\Node\_Controller->execute()
    #7 C:\laragon\htdocs\ips4-dev-theme3\system\Dispatcher\Dispatcher.php(153): IPS\core\modules\admin\customization\_themes->execute()
    #8 C:\laragon\htdocs\ips4-dev-theme3\admin\index.php(13): IPS\_Dispatcher->run()
    #9 {main}

    I've also tried:

    <?php
    
    return theme.my_theme_setting == true;

    This attempt produces no errors, but the theme setting doesn't show, it is hidden:

    return $this->my_theme_setting == true;

    and this one gives me undefined constant again!

    return $this->theme.my_theme_setting == true;

    Er, little help please?!

×
×
  • Create New...