Tagged: 

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #164324

    Hey guys, I know this has been asked before but I am still having trouble after looking over different solutions. I want to make the iconbox icons themselves link not just the heading in the box (the default behavior)

    I saw one solutions that made the whole box a link, which I don’t want.

    then I saw this from dude
    https://kriesi.at/support/topic/icon-box-icon-link/

    and that is what I tried. But it isn’t working. and I can’t figure out how to impliment it. I am using a child theme and this is a bit new for me in changing this type of code. I have only modified some of the functions behaviors and css thus far.

    I changed the code per dudes instructions and them I placed the entire iconbox.php file in my child folder and that didn’t work. then because I didn’t know how to deploy the change I tried to add just the new code to functions.php

    Can you please tell me what if anything is wrong with my code in the iconbox.php file and then how/where to place it in my child themes folder.
    Thanks

    ps. line 172 is where the change started, but I guess you can’t see that obviously. but gives general location.
    website is http://jackandaddi.com/ and there are some icon boxes on the home screen.

    <?php
    /**
    * Textblock
    * Shortcode which creates a text element wrapped in a div
    */

    if ( !class_exists( 'avia_sc_icon_box' ) )
    {
    class avia_sc_icon_box extends aviaShortcodeTemplate
    {
    /**
    * Create the config array for the shortcode button
    */
    function shortcode_insert_button()
    {
    $this->config['name'] = __('Icon Box', 'avia_framework' );
    $this->config['tab'] = __('Content Elements', 'avia_framework' );
    $this->config['icon'] = AviaBuilder::$path['imagesURL']."sc-icon_box.png";
    $this->config['order'] = 90;
    $this->config['target'] = 'avia-target-insert';
    $this->config['shortcode'] = 'av_icon_box';
    $this->config['tooltip'] = __('Creates a content block with icon to the left or above', 'avia_framework' );
    }

    /**
    * Popup Elements
    *
    * If this function is defined in a child class the element automatically gets an edit button, that, when pressed
    * opens a modal window that allows to edit the element properties
    *
    * @return void
    */
    function popup_elements()
    {
    $this->elements = array(

    array(
    "name" => __("IconBox Icon",'avia_framework' ),
    "desc" => __("Select an IconBox Icon bellow",'avia_framework' ),
    "id" => "icon",
    "type" => "iconfont",
    "font" => "entypo-fontello",
    "folder"=> AviaBuilder::$path['assetsURL']."fonts/",
    "chars" => AviaBuilder::$path['pluginPath'].'assets/fonts/entypo-fontello-charmap.php',
    "std" => "1"),

    array(
    "name" => __("Icon Position", 'avia_framework' ),
    "desc" => __("Should the icon be positioned at the left or at the top?", 'avia_framework' ),
    "id" => "position",
    "type" => "select",
    "std" => "left",
    "subtype" => array( __('Left', 'avia_framework' )=>'left',
    __('Top', 'avia_framework' )=>'top')),

    array(
    "name" => __("Title",'avia_framework' ),
    "desc" => __("Add an IconBox title here",'avia_framework' ),
    "id" => "title",
    "type" => "input",
    "std" => __("IconBox Title",'avia_framework' )),

    array(
    "name" => __("Title Link?", 'avia_framework' ),
    "desc" => __("Do you want to apply a link to the title?", 'avia_framework' ),
    "id" => "link",
    "type" => "linkpicker",
    "fetchTMPL" => true,
    "std" => "",
    "subtype" => array(
    __('No Link', 'avia_framework' ) =>'',
    __('Set Manually', 'avia_framework' ) =>'manually',
    __('Single Entry', 'avia_framework' ) =>'single',
    __('Taxonomy Overview Page', 'avia_framework' )=>'taxonomy',
    ),
    "std" => ""),

    array(
    "name" => __("Open in new window", 'avia_framework' ),
    "desc" => __("Do you want to open the link in a new window", 'avia_framework' ),
    "id" => "linktarget",
    "required" => array('link', 'not', ''),
    "type" => "select",
    "std" => "no",
    "subtype" => array(
    __('Yes', 'avia_framework' ) =>'yes',
    __('No', 'avia_framework' ) =>'no')),

    array(
    "name" => __("Content",'avia_framework' ),
    "desc" => __("Add some content for this IconBox",'avia_framework' ),
    "id" => "content",
    "type" => "tiny_mce",
    "std" => __("Click here to add your own text", "avia_framework" )),
    );

    }

    /**
    * Editor Element - this function defines the visual appearance of an element on the AviaBuilder Canvas
    * Most common usage is to define some markup in the $params['innerHtml'] which is then inserted into the drag and drop container
    * Less often used: $params['data'] to add data attributes, $params['class'] to modify the className
    *
    *
    * @param array $params this array holds the default values for $content and $args.
    * @return $params the return array usually holds an innerHtml key that holds item specific markup.
    */
    function editor_element($params)
    {
    $icon_el = $this->elements[0];

    $chars = $icon_el['chars'];

    if(!is_array($chars))
    {
    include($icon_el['chars']);
    }

    $display_char = isset($chars[($params['args']['icon'] - 1)]) ? $chars[($params['args']['icon'] - 1)] : $chars[0];

    $inner = "<div class='avia_iconbox avia_textblock avia_textblock_style'>";
    $inner .= " <div ".$this->class_by_arguments('position' ,$params['args']).">";
    $inner .= " <span data-update_with='icon_fakeArg' class='avia_iconbox_icon avia-font-".$icon_el['font']."'>".$display_char."</span>";
    $inner .= " <div class='avia_iconbox_content_wrap'>";
    $inner .= " <h4 class='avia_iconbox_title' data-update_with='title'>".html_entity_decode($params['args']['title'])."</h4>";
    $inner .= " <div class='avia_iconbox_content' data-update_with='content'>".stripslashes(wpautop(trim(html_entity_decode($params['content']))))."</div>";
    $inner .= " </div>";
    $inner .= " </div>";
    $inner .= "</div>";

    $params['innerHtml'] = $inner;
    $params['class'] = "";

    return $params;
    }

    /**
    * Frontend Shortcode Handler
    *
    * @param array $atts array of attributes
    * @param string $content text within enclosing form of shortcode element
    * @param string $shortcodename the shortcode found, when == callback name
    * @return string $output returns the modified html string
    */
    function shortcode_handler($atts, $content = "", $shortcodename = "", $meta = "")
    {
    extract(shortcode_atts(array('title' => 'Title', 'icon' => '1', 'position' => 'left', 'link' =>'', 'linktarget' => 'no'), $atts));

    $icon_el = $this->elements[0];

    $chars = $icon_el['chars'];
    $font = $icon_el['font'];
    if(!is_array($chars))
    {
    include($icon_el['chars']);
    }

    $display_char = isset($chars[($icon - 1)]) ? $chars[($icon - 1)] : $chars[0];
    if($position == 'top') $position .= " main_color";

    $linktarget = ($linktarget == 'no') ? '' : 'target="_blank"';
    $link = aviaHelper::get_url($link);
    if(!empty($link))
    {
    $title = "$title";
    }

    // add blockquotes to the content
    $output = '<div class="iconbox iconbox_'.$position.' '.$meta['el_class'].'">';
    $output .= '<div class="iconbox_content">';

    /* commented out the below line wich is default, icon box heading only is the link, and replaced the new code that makes the icon itself a link as well below the lomented out line
    $output .= '<div class="iconbox_icon heading-color avia-font-'.$font.'">'.$display_char.'</div>';*/
    if(!empty($link))
    {
    $output .= "";
    $output .= '<div class="iconbox_icon heading-color avia-font-'.$font.'">'.$display_char.'</div>';
    $output .= '
    ';
    }
    else
    {
    $output .= '<div class="iconbox_icon heading-color avia-font-'.$font.'">'.$display_char.'</div>';
    }
    $output .= '<h3 class="iconbox_content_title">'.$title."</h3>";
    $output .= ShortcodeHelper::avia_apply_autop(ShortcodeHelper::avia_remove_autop( $content ) );
    $output .= '</div></div>';

    return $output;
    }

    }
    }

    #164769

    Any takers on this one?
    If I follow the simple instructions by dude and replace the text in the parent folder the link behavior changes for the better. But if I leave the parent alone and put the changed file into my child folder root nothing happens.

    what else do I need to to do to get this working? Thanks

    #166269

    Same topic answered/addressed here: https://kriesi.at/support/topic/iconbox-link/#post-166268

    I’ll close this one for now since its duplicated.

    Regards,

    Devin

Viewing 3 posts - 1 through 3 (of 3 total)
  • The topic ‘Iconbox link form the icon not just the heading text’ is closed to new replies.