<ict-articleurl:(title-of-the-article-that-we-are-40-rating)>Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Vestibulum id ligula porta felis euismod semper. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
- Cursus
- Pharetra
- Mattis
- Dolor
- Tortor
- Donec sed odio dui. Curabitur blandit tempus porttitor.
- Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
Is my icon in the corect place?

Sed posuere consectetur this is a link est at lobortis. Donec sed odio dui. Aenean lacinia bibendum nulla sed consectetur. Duis mollis, est non commodo luctus, nisi erat porttitor Link Test ligula, eget lacinia odio sem nec elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
<article>
<h1>Title Here</h1>
</article>
_ictt.push(['_allocate', function() {
console.log('Done Things');
}]);
// Package leap provides functions relating to leap year calculations
package leap
// IsLeapYear tells you if the provided year is a leap year or not based on some overly simple rules
func IsLeapYear(year int) bool {
// A leap year is true;
// on every year that is evenly divisible by 4
// except every year that is evenly divisible by 100
// unless the year is also evenly divisible by 400
return year%400 == 0 || (year%100 != 0 && year%4 == 0)
}
<?php
class Monkey {
public function getName()
{
return 'Mike';
}
}
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
JavaScript Implementation

This is Super Secreting 2
The Infinity tracking service is powered on the client side by JavaScript. This JavaScript is unobtrusive and won't affect any other script on your page. This JavaScript DOES NOT replace your Google, Bing or any other tracking, this should be left in place.
You should have a moderate technical understanding of HTML and JavaScript to install the Infinity Tracking JavaScript.
Installation of Infinity Tracking Code
To install Infinity Tracking you need to add the code snippet you have generated in the JavaScript Configuration page of the Portal. This needs to be placed just before the closing tag element within each page of the website as this will allow for the fastest execution. This is a lightweight, asynchronous code base of around 3kb and will not block the rest of the site from loading.
Putting it at the bottom will not affect the code running, but the page will load before the Infinity code executes which may cause the phone number to notably flicker as it changes. If, however, you want to have the numbers hidden until the dynamic update has been performed to avoid this flicker, you can find the technical implementation information here:
Note It is important that this code is installed on every page that a visitor might land on or visit, or the code may not be able to detect the visitors channel information correctly.
Auto Discovery JavaScript
Our Auto Discovery code looks for phone numbers in your site that are wrapped in an element, and have the InfinityNumber class on them. <span class="InfinityNumber">0808 123 456</span>
The phone number(s) that are found are then looked up against the configuration of your tracking pool(s) so see which one to use.
Once the Tracking Pool(s) to use has/have been discovered, a dynamic number is assigned for each one, and the number replaces the contents of the element in question.
The below is only an example code:
<script>
var _ictt = _ictt || [];
_ictt.push(['_setIgrp','XXX']); // Installation ID
_ictt.push(['_enableGAIntegration',{'gua':true,'ga':false}]);
_ictt.push(['_enableAutoDiscovery']);
_ictt.push(['_track']);
(function() {
var ict = document.createElement('script'); ict.type = 'text/javascript'; ict.async = true;
ict.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'ict.infinity-tracking.net/js/nas.v1.min.js';
var scr = document.getElementsByTagName('script')[0]; scr.parentNode.insertBefore(ict, scr);
})();
</script>
<?php
namespace Infinity\Cms\Bundle\RendererBundle;
use InvalidArgumentException;
use Exception;
/**
* Responsible for translating Path Enumeration to actual object/array hierarchy
* and back
*
* @author Chris Sedlmayr <chris.sedlmayr@infinity-tracking.com>
*/
class PathEnumerator
{
/**
* Translates an array of PageElement(s) that use Path Enumeration to
* define hierarchy, into structure using PageElement->children and arrays
*
* @param array $pageElements The elements you want to translate
* @param PathEnumerableInterface $root Optional. The element you want to start with
* @return array $root The elements, now in array hierarchy
*/
public function unserialise($pageElements, PathEnumerableInterface $root = null)
{
if (!(is_array($pageElements) || ($pageElements instanceof \Traversable))) {
throw new InvalidArgumentException('$pageElements must be iterable');
}
// as we process each element, we add a child to the root
// as you go down each part of the path, you fetch the item and consider that root
// then add the element as a child of that element
//
// you start at root, and look at all the items.
// those that have the same path as you are siblings.
// if you see one that doesn't, and it has a path containing structure '/s', then
// you loop through each child (/1/2/3), set that as a child, then decend into it so
// it can set it's own children on itself and continue down to the bottom
// then the iteration comes back up, goes to the next child (from the top level), and does it again
// that carries on until all elements have been enumerated
foreach ($pageElements as $element) {
if (!$element instanceof PathEnumerableInterface) {
throw new Exception(
'Must be an instance of Infinity\\Cms\\Bundle\\RendererBundle\\PathEnumerableInterface, '
.(is_object($element) ? get_class($element) : gettype($element)).' given'
);
}
if (is_null($root)) {
$root = $element;
} else {
$obj = $root;
// if the root element, has the same path as our element
// then we are at the same level, i.e. a sibling
if ($obj->getPath() === $element->getPath()) {
$obj->addSibling($element);
// otherwise, we have a different path to the root
} else {
// we want to treat each sub part of our path, as the ID of a child
$pathParts = explode('/', $element->getPath());
foreach ($pathParts as $idx) {
// if the ID of the child seen in our path, is that of a real child
if (!empty($idx) && $obj->getChildren($idx)) {
// fetch that child into $obj
$obj = $obj->getChildren($idx);
// if our childs path, is the same as our elements path
if ($obj->getPath() === $element->getPath()) {
// then it's a sibling to our child
// this shouldn't actually ever be reached as we have reassigned ourself
// the be a child at this point, but it's a safety net for incorrect path structure
// otherwise the item would go missing
$obj->addSibling($element);
}
}
}
// the element, is a child of our child
$obj->addChild($element);
}
}
}
return $root;
}
/**
* Convert the parental hierarchy of an element, into it's path
*
* @param PathEnumerableInterface $element The element you want to serialise the path of
* @return PathEnumerableInterface $element The element, with serialised path complete
*/
public function serialise(PathEnumerableInterface $element)
{
$path = '';
if (($parent = $element->getParent()) && $parent->getId()) {
$path = $parent->getPath().'/'.$parent->getId();
}
$element->setPath($path);
return $element;
}
}
The Infinity tracking service is powered on the client side by JavaScript. This JavaScript is a lightweight asynchronous code base and won't affect loading or any other script on your page.
The implementation really is a very simple process, in fact some clients find they don’t even require the services of a developer to implement the code – if you are familiar with inserting code via a Tag Manager and being able to update a telephone number class, it really is straightforward.
Alternatively you may wish to ask a developer or someone with HTML experience for support implementing the code.
We have 2 different versions of our code, Auto Discovery and Classic. Installations set up before June 2015 will use the Classic version of our code. You can switch to Auto Discovery code at any time, please contact Support if you have any questions.