• Sign In
    • Forgot your password?
    • Forgot your username?

K2 | The powerful content extension for Joomla! developed by JoomlaWorks

  • home
  • about
  • blog
  • documentation
  • extend K2
  • showcase
  • community
  • demo
The 'de facto' content solution for Joomla professionals!
seo
4SEO dashboard showing pages count, structured data count, sitemaps details, Core Web Vitals status and more

4SEO all-in-one SEO extension

12 October 2021
Published in Extensions

4SEO is a modern, integrated Search Engine Optimization solution for Joomla.

It constantly analyzes your site to detect changes, identifies important pages, adds meta and structured data, optimizes for social sharing and builds your sitemap. It also mesures actual Google Core Web Vitals speed information.

4SEO also provides you with tools for every day SEO work: list of broken links, redirections, content replacement, robots.txt...

More
Extending K2's Google Structured Data output to support additional content types

Extending K2's Google Structured Data output to support additional content types

27 January 2020
Published in Tutorials

K2 supports Google Structured Data (GSD) since version 2.10.x (in the item view). However it does so for the most basic content types of GSD: article, news article & blog post

In the K2 component's Settings you'll notice that 6 more content types are listed there for product, event, video, course, movie and recipe. However these additional content types require data to be output that are not standard in K2, e.g. the start and end dates for an event. Usually K2 integrators will create these as extra fields and display them to one or more K2 categories.

If you've done that step already, then extending K2's GSD output to support additional content types is not hard.

Here are the steps to do so for the "event" content type...

0. Upgrade to K2 v2.10.3 (dev) from https://getk2.org/downloads/?f=K2_Development_Release.zip - this is required to be able to get the raw URL from a "link" type extra field. This step will not be necessary once K2 v2.10.3 is officially released.

1. Create an override for item.php to apply our GSD code for event content types. Copy the file /components/com_k2/templates/default/item.php into /templates/YOUR_TEMPLATE/html/com_k2/events/ (create the additional folders after /templates/YOUR_TEMPLATE/html/). This will only override the item view. If you want to override the category listing as well (for templating reasons), just copy all the files in /components/com_k2/templates/default/ into /templates/YOUR_TEMPLATE/html/com_k2/events/. More info on overriding K2 templates can be found here: https://getk2.org/documentation/tutorials/templating-with-k2-and-the-concepts-of-sub-templates

2. Create a new K2 Extra Fields Group and call it "Events".

3. Create a K2 Category and also call it "Events". Make sure that the new "events" sub-template (created on step 1) as well as the "Events" extra fields group (created on step 2) are both selected. 

4. Now create extra fields in K2 for each of the GSD data you wish to add. According to https://developers.google.com/search/docs/data-types/event the bare minimum for a GSD event type are "location" (object), "name" (we can use the K2 item's title here), "startDate" and optionally "endDate" and "offers" (object). The GSD properties "description" and "image" already come with default K2 GSD. For any object element referenced, you'll have to create an extra field for each of its properties. So for "location" and given that GSD guidelines reference this:

"location": {
  "@type": "Place",
  "name": "Snickerpark Stadium",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 West Snickerpark Dr",
    "addressLocality": "Snickertown",
    "postalCode": "19019",
    "addressRegion": "PA",
    "addressCountry": "US"
  }
}

...you would need to add the following ("text" type) extra fields:
- Location Name (with extra field alias 'e_loc_name')
- Location Address (with extra field alias 'e_loc_addr')
- Location Town/City (with extra field alias 'e_loc_city')
- Location Postal Code (with extra field alias 'e_loc_pc')
- Location State/Province (with extra field alias 'e_loc_state')
- Location Country (with extra field alias 'e_loc_country')

Additionally, for the rest of the fields
- Start Date ("date" type extra field and alias 'e_start_date')
- End Date ("date" type extra field and alias 'e_end_date')
- Ticket Price ("text" type extra field and alias 'e_ticket_price')
- Ticket Purchase URL ("link" type extra field and alias 'e_ticket_link')

Make sure the extra field "alias" is inserted exactly as stated in each line above (but without the quotes). This step is important as we will fetch each extra field separately by using this alias.

6. You will now fetch each of these extra fields separately (as described here as well https://getk2.org/documentation/tips-a-tricks/display-single-extra-fields-anywhere-in-your-k2-content) and build your new GSD properties.

Your default K2 GSD look like this: https://jmp.sh/gmcOnu3 (or just do a view source on https://getk2.org/blog/k2-v2102-released-now-with-a-100-mobile-friendly-backend-user-interface).

We will change and extend these using the following PHP code added in your item.php override, right after the "defined('_JEXEC') or die;" part:

// Get current GSD
$getItemGSD = $this->params->get('itemGoogleStructuredData');

// Search and extend/replace GSD
$document = JFactory::getDocument();
foreach ($document->_script as $type => $script) {
    if ($type == 'application/ld+json' && $script == $getItemGSD) {
        // Remove current GSD from the 
        unset($document->_script['application/ld+json']);
        $itemGSD = json_decode($getItemGSD);

        // Remove any default K2 GSD properties we don't want for the GSD "event" content type
        unset($itemGSD->articleBody);
        unset($itemGSD->articleSection);
        unset($itemGSD->author);
        unset($itemGSD->dateModified);
        unset($itemGSD->datePublished);
        unset($itemGSD->headline);
        unset($itemGSD->keywords);
        unset($itemGSD->publisher);

        // Append new GSD data as object properties to '$itemGSD'
        $itemGSD->location = new stdClass;
        $itemGSD->location->{'@type'} = 'Place';
        $itemGSD->location->name = $this->item->extraFields->e_loc_name->value;
        $itemGSD->location->address = new stdClass;
        $itemGSD->location->address->{'@type'} = 'PostalAddress';
        $itemGSD->location->address->streetAddress = $this->item->extraFields->e_loc_addr->value;
        $itemGSD->location->address->addressLocality = $this->item->extraFields->e_loc_city->value;
        $itemGSD->location->address->postalCode = $this->item->extraFields->e_loc_pc->value;
        $itemGSD->location->address->addressRegion = $this->item->extraFields->e_loc_state->value;
        $itemGSD->location->address->addressCountry = $this->item->extraFields->e_loc_state->value;
        $itemGSD->name = $this->item->title;
        $itemGSD->startDate = $this->item->extraFields->e_start_date->value;
        $itemGSD->endDate = $this->item->extraFields->e_end_date->value;
        $itemGSD->offers = new stdClass;
        $itemGSD->offers->{'@type'} = 'Offer';
        $itemGSD->offers->price = $this->item->extraFields->e_ticket_price->value;
        $itemGSD->offers->priceCurrency = 'USD'; // Use EUR or other currency here based on your needs
        $itemGSD->offers->url = $this->item->extraFields->e_ticket_link->rawValue;

        // Re-insert GSD data with new additions
        $itemGSD = json_encode($itemGSD, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
        $document->addScriptDeclaration($itemGSD, 'application/ld+json');
    }
}

7. Now start filling up the event data in the K2 items' extra fields of yours "Events" category.

In the end you'll see something like this on each event K2 item's page source: https://jmp.sh/qUvDXud (wherever you see "null" is where I just didn't add data for these demo purposes).

8. Finally test one of your K2 items on: https://search.google.com/structured-data/testing-tool - this tool will tell you if you need to change anything or if some property is missing.

And you're ready!

The code above will work on all Joomla versions that K2 supports by default.

More
Route 66 PRO

Route 66 PRO

10 October 2016
Published in Extensions

Beautiful SEF URLs, SEO content analysis by Yoast, Google PageSpeed optimization, Facebook Instant Articles and XML Sitemaps for K2!

 

SEO Content Analysis Powered by Yoast

SEO content analysis for K2 items powered by the fabulous Yoast SEO engine. Optimize your Joomla K2 pages based on keywords you provide. Check quickly how your page will look in search results using the Snippet preview that Route 66 provides!

Flexible SEF URLs definition using patterns

Route 66 allows you to define your K2 SEF URLs using patterns and not be restricted by limited URL options! Patterns can include any URL friendly character along with some tokens for generating dynamic variables ( like the item's date for example ). Here are some examples of URL patterns you can use in Route 66:

  • blog/{itemYear}/{itemMonth}/{itemAlias}
  • {categoryAlias}/{itemAlias}
  • {itemAlias}
  • page-{itemId}
  • {categoryPath}/{itemAlias}

It's that simple to add SEF URLs to your site with Route 66. Check out the documentation to see a list of all available tokens that Route 66 supports. Last but not least, Route 66 allows you to define different pattern per language when multiple languages are enabled to your site.

Exceptional performance

Unlike bulky SEF extensions that can store thousands of URLs to your site's database, Route 66 offers dynamic and high performance URL generation. In short, Route 66 will not impact your website’s performance.

Duplicate URLs handling - Canonical Links

If Route 66 detects any duplicate URLs it will redirect to the canonical URL automatically. Let's say for example that you have an item with ID 9 and alias "have-a-nice-day" . Let's also assume that you have set up Route 66 using the pattern story/{itemAlias}. The generated URL will be story/have-a-nice-day . URLs like the following which lead to the same item will get redirected to story/have-a-nice-day:

  • index.php?option=com_k2&view=item&id=9:have-a-nice-day
  • component/k2/item/9-have-a-nice-day
  • menu-alias/item/9-have-a-nice-day

For optimal SEO, Route 66 automatically adds the canonical url to the page header. This is especially important when pages utilize query and/or anchor variables appended to the URL (story/have-a-nice-day?modal=welcome ).



Google PageSpeed

Route 66 can optimize your site to achieve a high score at Google PageSpeed! Route 66 follows the Google PageSpeed recommendations to make your Joomla K2 site get ranked high by Google.

Facebook Instant Articles

Route 66 now supports Facebook Instant Articles! It allows you to generate a feed of Facebook Instant Articles based on your site's K2 Items. You can also filter the feed items based on categories. Finally, Route 66 comes with built-in integration for Google Analytics and Google DFP!

XML Sitemaps

Make it easier for Google and other search engines to discover your site content with XML sitemaps. Route 66 can generate those sitemaps for you! It allows you to filter the sitemap content based on categories. The sitemap can include entries from K2 Items and Menu items.

More
K2 Plugin for sh404SEF

K2 Plugin for sh404SEF

29 March 2016
Published in Extensions

A plugin for supporting K2 in sh404SEF.

Use the plugin to configure K2 URLs when using sh404SEF in a multitude of options.

Unlike the previous built-in implementation for sh404SEF, this new plugin provides new URL manipulation options and it has dual compatibility with K2 versions 2.7.0 or newer.

The plugin has been successfully tested with sh404SEF versions 4.x in Joomla 2.5 and Joomla 3.x.

SCREENSHOTS

k2 plugin for sh404sef backend

More
BF SEO

BF SEO

06 February 2016
Published in Extensions
The built in SEO capabilities of Joomla 3 are quite good, but it can be a time consuming process getting it all right, for example if you wanted to edit the meta tile and description for your menus, you would need to open up each one individually, go to the Page Display tab to edit the Browser Page Title, then go to the Metadata tab to update the Meta Description, then save and close, and repeat for each menu item. BF SEO can save you heaps of time by giving you all these fields on a single screen, and allow you to quickly update all your meta data in one go. It supports K2 articles and categories, and allows you to quickly and easily update metadata for multiple items via a single screen.

What you will really love is the fact that it places the data in the core Joomla tables directly and does not hold the data in the extension, so this really is a speedy centralisation of SEO tasks.

You will also enjoy the Joomla config check, the green ticks will show you what you are doing right, and the red crosses will help you learn basic Joomla SEO that may have alluded you in the past, and you will have the satisfaction of seeing those crosses turn to ticks once you've adjusted the settings.

With BF SEO you can:
-Support for K2 articles and categories
-Generate Meta Tags automatically (articles). Our software is smarter than most meta generators which just pick the first part of the text, ours actually analyses the keywords used and selects the most appropriate text. Of course you can still manually edit if required.
-Change meta tags (title & description) on single page for menus, articles and categories.
-Check for duplicate meta data
-Audit your Joomla SEO configuration and recommend changes
-Page Check Tool. Check any internal or external page
-Robots.txt Tool. Check to make sure your site has a Robots.txt file, and create one if needed. Make sure changes since Joomla 3.3 have been applied. Integrated editor so you can make changes as needed.
-.htaccess Tool. Check to make sure your site has a .htaccess file, and create one if needed. View the contents of your .htaccess file
-Sitemap Tool. Check if your site has a sitemap.xml, and create one if needed. Dynamically builds sitemap based on your menu selection.





More
Econa

Econa

17 January 2016
Published in Extensions

Custom image names for K2 items

Improve K2 SEO by giving custom names to your K2 items images! You can enter the desired filename for the item image in the corresponding field that Econa adds in K2 "Image" tab in the item edit form.

The result filename will be the text you entered plus an identification for the image size. If for example you enter the text "apples" to be used as the filename the result for the large image will be "apples_L.jpg" . Note that K2 converts all uploaded images in JPEG format and this cannot be changed by Econa. 

In addition to custom image names, Econa makes the K2's image uploading experience even better! All image uploads are now performed using AJAX requests making things even faster.

HTML5 Responsive Images

Econa can optimize the images that users add to K2 items content! You can choose whether you wish to resize those images in the dimensions provided by the WYSIWYG editor or define multiple dimensions and enable HTML5 responsive images ( retina images are also supported ) !

When responsive images are enabled your site will serve automatically the most appropriate image size depending on the visitor's device saving user's bandwidth and thus making your site load faster! If you define an image size for retina displays, devices with retina pixel density will get served with that image automatically.


Econa Image Editor

K2 now gets a great image editor! Econa allows you to perform basic image editing operations like cropping, rotating and flipping directly in the K2 item edit form.

 

More
K2 Canonical Links

Canonical Links for K2

31 August 2013
Published in Extensions

Do you care about SEO? Are you tired of being penalized by Google for having a duplicate content?

With our plugin you will get real canonical links for your K2 articles/tags/categories. We've tried all other solutions, tried Joomla 3 native solution, and found out that they all had some issues, as reported on various forums around the web.

We care about SEO, so we decided to develop our own plugin, to have real K2 canonical links.

Don't worry anymore if you can reach a K2 article with links like:

www.example.com/article 
www.example.com/category/article 
www.example.com/tag1/article 
www.example.com/tag2/article 

All of them will have the same canonical link!

Same goes for tags like

www.example.com/tag1 
www.example.com/category1/tag/tag1 
www.example.com/category2/tag/tag1

or categories

www.example.com/category2 
www.example.com/category1/content/category2

etc.

Even user views are supported!

Furthermore, it will detect if an article/tag/category has a direct link in the menu and use it as the canonical version, attention is payed so that the most appropriate link is chosen!

Works with Joomla 2.5 and 3.x!

Recent changes:

3.26 (2016/08/23)

* Encode canonical link parts, improvement for links with utf-8 characters

3.25 (2016/05/02)

+ One click updates using native Joomla interface

3.24 (2016/03/12)

+ Option to enable/disable redirection between slashed and non-slashed page
* K2: Do not redirect ChronoForms for K2

3.23 (2016/02/28)

* Potential infinite redirect loop for the homepage

3.22 (2016/02/27)

* Differentiate links with and without a trailing slash
+ Enable Chronoforms support in item view

3.21 (2016/02/10)

* Full PHP 7 support
* Canonical for tag with own menu would sometimes be incorrect

3.20 (2016/01/30)

+ Added support for 'latest' view

3.19 (2015/12/14)

+ Option to remove trailing slash from canonical links
+ Option to remove canonical link when on canonical page
* Don't execute the plugin if component option was overriden via POST

3.18 (2015/08/09)

* remove possible notice in error log (no negative influence otherwise)

3.17 (2015/08/03)

* make sure the plugin is activated only for html views, and not for json etc

3.16 (2015/07/31)

* fix compatility between date filtering in K2 tools module and permanent redirect

3.15 (2015/06/26)

+ Added full support with pagination for User view in K2
* Fixed a potential issue with redirection and query ignore parameter

3.14 (2015/06/19)

* do not redirect non-sef urls with raw output

3.13 (2015/06/16)

+ Added an option to ignore query in url's for permanent redirection

3.12 (2015/05/14)

+ Added support for itemllist view filtered by date using K2 Tools

3.11 (2015/05/07)

* Improved redirection mechanism

3.10 (2015/05/05)

* Improved compatibility with JotCache and System Language Filter plugin

3.9 (2015/03/26)

* Improved compatibility with Language filter system plugin

 

More

Page Title for K2

06 March 2013
Published in Extensions
K2 title plugin will add an additional field "page title" into item and category of K2 component. More
SEO Glossary for K2

SEO Glossary for K2

28 September 2012
Published in Extensions

Get the most advanced glossary to define terms, generate nice and automatic tooltips, showing definition in your Joomla content. With SEO Glossary it's easy to define one or billions terms in your website. Now compatible with Joomla 2.5 and 3.x.

With SEO glossary you can create multilingual dictionary, glossary, glossary of abbreviations, and much more.

Video demo available here: http://www.joomunited.com/products/seo-glossary


Main features

- Display definition in jQuery tooltip, in dedicated page, in component view
- Create some inner links with semantic content automatically
- Glossary term is inserted your URL to enhance your website SEO (using joomla native URL optimization)
- 2 additional responsive themes available in the package
- Dedicated search engine and Joomla search plugin
- K2, Zoo (pages & blog), Redshop, Hikashop, Flexicontent compatible and all extension calling content plugin
- Ability to disable SEO Glossary in specific Joomla articles
- Ability to choose how many times your term will be linked to his definition per article
- Ability to show only tooltip definition, not links to glossary
- Add synonyms in tooltips
- Globally disable tooltips
- Disable glossary tooltips by: article categories, menus, Joomla components
- Xmap plugin, Jsitemap compatible, Kunena compatible
- Menu option to show one or all glossaries
- Create unlimited glossaries
- Add custom alphabets for each glossary (ie categories of definition)
- Visually customization available for tooltips (not necessary to change css style)
- The tooltip can be manage with a pickup color (no css used)
- HTML output in tooltips
- Frontend edition
- Search module with filters
- Import/Export tool: export as csv, import or update definitions and glossaries
- Definition module with display as list, intro and both with auto crop
- All element in the glossary view can be shown/hide with parameters (search display, number of terms, glossary list, pagination...)
- The component is translated in English, Dutch, Spanish, French, Sweden, German
- A definition can be linked with others definitions
- Everything is managed from the component (easy to use)
- Use the native joomla multilingual
- Cut your definition in tooltips with a "Read more..."
- Use the Joomla ACL to submit terms definitions from the frontend
- Follow/Nofollow SEO option
- Advanced features to use the non latin characters
- Share on social networks button
- Integration with Disqus (coments)
- Video support in tooltips
- Tested and compatible with Yootheme, Joomlart and rockettheme products

More
Gogodigital K2 Missing Metadata

Gogodigital K2 Missing Metadata

26 October 2011
Published in Extensions
With this simple module you can see if you forgot to include in any article of K2 component metadata information: description and keywords. This information is essential for placement on search engines and are therefore crucial to any site. More
  • Contact us
  • Privacy Policy
  • License
  • K2 Downloads
  • K2 Metrics
  • K2 on GitHub
back to top
Copyright © 2006 - 2025 JoomlaWorks Ltd. All rights reserved. K2 is a joint project by JoomlaWorks & Nuevvo, released under the GNU/GPL license.
Joomla is a registered trademark of Open Source Matters, Inc. K2 is not affiliated with or endorsed by Open Source Matters or the Joomla Project.
designed by Nuevvo