Giter Club home page Giter Club logo

t3ext-seo_basics's Introduction

SEO Basics - A TYPO3 Extension

Introduction

SEO Basics is a TYPO3 CMS extension installable via TYPO3.org/TER and the extension manager.

It is compatible with TYPO3 CMS 6.2+. You can get it here: http://typo3.org/extensions/repository/view/seo_basics

What does it do?

This extension bundles most SEO features needed for getting a simple website going with search engine optimizations.

Well – so what does it do? - It adds an extra field to every page for manipulating the title-tag of the page. Since this is – next to the content – the most important data for a search engine of a web page, it deserves an extra field. If the field is left blank for a page, the regular page title will be used.

Also, the fields keywords and description are now available for the page type "standard". Also, keywords and description for a page as well as the last time a page was changed will be added to the output automatically. It does not add DC tags since we believe that search engines don't care about it that much.

A new submodule under "Web" => "Info" is added to have an overview over all title-tags, all keywords and all descriptions. It is possible to edit all fields at once, which is nice for comparing. When in editing mode this page shows where there are enough (or maybe too many) keywords, and colors the background of every field depending on the length of the content.

A new tag called the "Canonical Tag", a tag in the head area of the web page that the search engines wanted to avoid duplicated content.

SEO Basics also relies heavily on the realurl extension, adding a new page type that is redirected automatically when google asks for sitemap.xml file. Right after the installation of the SEO extension there is a new page type available that is mapped to "sitemap.xml" which means that if you enter www.your-typo3-page.com/sitemap.xml that you'll get the google sitemap / XML sitemap for all your pages.

There is no need for an extra "google sitemap" extension, no need for an extra “metatags” extension.

Why did we create this extension?

Well, first of all... we did quite some research and did some tests with pages to see how manipulating e.g. the page title or the description affects the ranking and also the output on the search result pages. We then found out what is important for the search engines and what they care about. Then we tried out several extensions but we noticed that they are not quite usable e.g. several googlesitemap extensions weren't working as expected and not out of the box. We also wanted one extension that does almost most of the things out of the box, so there's not a lot to configure. We wanted to have an extension to get new installations up and running with SEO pretty fast, without a lot of configuration and without dozens of not-quite-perfect extensions.

ToDo

  • Check all labels
  • Release 1.0
  • Add new og: fields
  • Come up with a new backend module

Credits

Pull Requests are very welcome!

  • Thanks to EDV-Sachverständigenbüro Weißleder Stuttgart (www.weissleder.de) and ITANA (www.itana.com) for sponsoring the initial development of this extension.
  • Thanks to b13 and its clients to sponsor the further development of this extension.
  • Thanks to the TYPO3 community for giving feedback on the extension.
  • Thanks to Jesus Christ who gave me the power and energy to live and therefore to write this extension.

t3ext-seo_basics's People

Contributors

bjo3rnf avatar bmack avatar davidsteeb avatar denismir avatar dgorges avatar ervaude avatar frans-beech-it avatar hbraune avatar infabo avatar jlochstampfer avatar masi avatar misterboe avatar oliversalzburg avatar pixelbrackets avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

t3ext-seo_basics's Issues

Superfluous meta title tag

seo_basics adds a <meta name="title" content=".."/> tag that has the exact same contents as the <title> tag it adds earlier.

This is nonsense.

Please remove that meta tag.

Typo3 9 sitemap.xml is not working

We are using Typo3 9 without realurl installed since it comes with its own Speakingurl Settings per Page.

Currently if you open the url "domain.tld/sitemap.xml" you get a 404 Error.
From reading the readme section here it seems to come from the missing realurl Extension. Are there Plans to make the Extension run with and without realurl?

DB Error in Typo3 Backend at Info

The SEO ext. try to query the tx_realurl_pathcache Table wich not exits.
ERROR => 'Table 'tx_realurl_pathcache' doesn't exist'
lastBuiltQuery => 'SELECT page_id, language_id, pagepath FROM tx_realurl_pathcache WHERE page_i d IN (1,6,5,3,25,34,52,55,57,71,86,84,273) AND language_id = 0 ORDER BY lan guage_id ASC, expire ASC'
The Error is locatet at SeoModule->loadPathCache#232

I use:

  • Typo3 8.7.26 Composer Installation
  • Realurl 2.5.0
  • seo_basics 0.10.3

Multilanguage Sitemap

Your extension is working, but i did not get it working for multi language sitemaps. I want to achieve a sitemap for each language, f.e.

sitemap.xml (is default language)
sitemap_en.xml (for english),
etc.

Can you give an example how to achieve that? I tried do define the sys_language_uid and set it to the following for the page type 776

sys_language_uid = 1
language = en

RealUrl worked and i received the sitemap with the prefixed pathes "/en", BUT all pages where shown, although there where not translated.

With kind regards
robsonrobi

Title tag concatenation

On some websites you'll see – at the very first page, that the concatenation of the title tag ouputs something like "Home – Sitetitle".

Would it be a good idea to disable the pagetitle on the homepage via a switch, to supress something like "Home" or "Start" at the beginning of the title string?

I temporarily changed it like this:

[globalVar = TSFE:id = 1]
  plugin.tx_seobasics.10.stdWrap.stdWrap.prepend < plugin.tx_seobasics.10.stdWrap.stdWrap.append
  plugin.tx_seobasics.10.stdWrap.stdWrap.prepend.noTrimWrap = || - |
  plugin.tx_seobasics.10.stdWrap.stdWrap.append >
[global]

Bug: Call to a member function isInWebMount() on a non-object

Hi,

first of all thanks for your extension which is easy to use, has well written code and works like a charm - at least most of the time, because when using the sitemap feature together with TYPO3 6.1.9 the following error occurs:

Fatal error: Call to a member function isInWebMount() on a non-object in /typo3/sysext/backend/Classes/Tree/View/AbstractTreeView.php on line 771

This has something to do with this commit:
TYPO3/typo3@c59d89f
because since that commit, the function getTree calls:

if (!$GLOBALS['BE_USER']->isInWebMount($row['uid']))

and because you are calling this method in class.tx_seobasics_sitemap.php line 102:

$tree->getTree($id, $depth, '');

when no backend user is available, the corresponding var is null.

Should the TYPO3 core class be extended with an additional null check, or do you want to find a new way to retrieve the page tree? Can I help you somehow?

Cheers
Ben

Installing via composer automatically installs typo3-ter/realurl

Hello everybody,
I just tried to install this extension via composer with

require {
"typo3-ter/seo-basics": "^0.9.2"
}

As I have already installed helhum/realurl (folder typo3conf/ext/realurl) the composer update then installed typo3-ter/realurl in the same folder which obviously crashed the system.
Unfortunately I could not find any dependency regarding realurl. There is only a suggest for realurl and cooluri in the composer.json of seo_basics. I do not understand why composer still tries to install another version of realurl and so I just manually downloaded seo_basics from this github repository and implemented it, which worked fine. But somehow this is not the right way to do it...

Could this be fixed somehow or am I doing something wrong?

Kind regards,
Joachim Wetzel

My composer command line log after just adding the require line (see above) to composer.json:

me@dockercontainer:/var/www/cms# composer update
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
  - Installing typo3-ter/realurl (2.2.1): Loading from cache
  - Installing typo3-ter/seo-basics (0.9.2): Loading from cache
Writing lock file
Generating autoload files
Inserting TYPO3_COMPOSER_MODE constant

Backend module generates PHP warning

Core: Error handler (BE): PHP Warning: Declaration of B13\SeoBasics\BackendModule\SeoModule::init($pObj, $conf) should be compatible with TYPO3\CMS\Backend\Module\AbstractFunctionModule::init(&$pObj, $conf) in /var/www/html/schrack/typo3conf/ext/seo_basics/Classes/BackendModule/SeoModule.php line 36

In 6.2 and 7.6 the declaration of init() specifies calling by reference.

seo_basics and cooluri in 6.2 LTS -installation fails

What is the recommended way of installing seo_basics in combination with cooluri? When installing seo_basics through the TER I'm always getting the error that seo_basics requires realurl. But realurl and cooluri are not compatible with each other.

A pull request that would make realurl and cooluri suggestions can be found here:

#9

Using special chars ✅

TYPO3 Version 6.2
seo_basics Version 0.9.2

I want to save special chars like ✅ into title or description but these always replaced by ?

Any idea how to fix that?

Http instead of Https in sitemap.xml

On my https site I have an issue that shows http url's instead of https inside sitemap.xml. Is there any other way to change this beside tweeking SitemapController?

Changing this line solved the problem

if (!empty($baseURL) && strpos($baseURL, '://') === false) { $baseURL = 'http://' . $baseURL; }

Sitemap generates URLs of disabled Pages

I found some URLs in the generated Sitemap, which lead to disabled Pages and thus generate a 404 Errror, i updated this page (enabled and disabled Page Content aswell as the Page itself) to see if the sitemap would update the lastmod-Timestamp, after flushing the Cache i could see that the new Date was shown in the lastmod section of the url.
But the URL should be removed from the Sitemap, because the Page does not exist.

The Page itself is a alternative Language Page to an existent Page which has content and is online. It was removed because it had no Content for the selected Language.

tx_news + seo_basics title problem

Hello,

seo_basics overwrites the title of news articles.
There only will be shown the title of the detail page.
Is there a solution for this problem?

Best regards

Info module not loading correctly

On latest TYPO3 7, when i use the Info module and click the "Edit SEO fields" option, then the whole backend is loading on the right frame and i am not able to edit the seo fields for the pages.

ext_localconf lines 22 and following destroy hook configuration of real_url

The ext_localconf parses the realurl-configuration and extend any key its find with a sitemap configuration. But realurl saves there not only domain based keys. The hooks are saved at that level too. The ext_localconf of seo_basics overwrites these hook-configuration with an array, which leads to a warning in TYPO3 4.* and to an exception in 6.2 (did not test 6.0 and 6.1)

Backend SeoModule throws incopatibility exception

When I go to the INFO module and select the "SEO Management" view, following exception is thrown:

#1: PHP Warning: Declaration of B13\SeoBasics\BackendModule\SeoModule::init($pObj, $conf) should be compatible with TYPO3\CMS\Backend\Module\AbstractFunctionModule::init(&$pObj, $conf) in /var/www/www.dr-beckmann.de/web/typo3conf/ext/seo_basics/Classes/BackendModule/SeoModule.php line 36

It is impossible to chose a different view. The only "workaround" is to switch from Development to Production mode to hide the exception.

seo_basics 0.9.2
TYPO3 7.6.23

Incompatibilities with TYPO3 8.7.1

Hi,
the extension seo_basics (v.0.9.6) doesn't work properly with TYPO3 8.7.1.
We incontered this problems:

  • The class seo_basics/Classes/Tree/PageTreeView.php uses unexisting IconUtility::getSpriteIcon method.
    This causes a FATAL error:

Uncaught TYPO3 Exception: Class 'TYPO3\CMS\Backend\Utility\IconUtility' not found

We have replaced this line (method getTree):

$HTML_depthData = $depthData . IconUtility::getSpriteIcon('treeline-' . $LN);
with

/** @var \TYPO3\CMS\Core\Imaging\IconFactory $iconFactory */ $iconFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconFactory::class); $icon = $iconFactory->getIcon( 'treeline-' . $LN, \TYPO3\CMS\Core\Imaging\Icon::SIZE_SMALL); $HTML_depthData = $depthData . $icon;

  • The class seo_basics/Classes/Tree/PageTreeView.php uses deprecated class TYPO3\CMS\Core\Database\DatabaseConnection.
    In method getDataNext ,
    the function call: $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)

causes this FATAL ERROR:

Core: Exception handler (WEB): Uncaught TYPO3 Exception: Call to undefined method Doctrine\DBAL\Driver\Mysqli\MysqliStatement::fetch_assoc() | Error thrown in file /var/www/project/htdocs/typo3_src-8.7.1/typo3/sysext/core/Classes/Database/DatabaseConnection.php in line 1131.

Currently we've modified properly the class DatabaseConnection to work fine with MysqliStatement, using method $res->fetch(\PDO::FETCH_ASSOC) instead of $res->fetch_assoc.

Thank you,
Gianluca

Wrong root id for multidomain setup

If you have a multidomain setup and the root page for the domain the sitemap is requested is a shortcut, the root page for this domain is wrong, in function "fetchPagesFromTreeStructure" the determined root page then has id "0".

That has the result, that function "fetchPagesFromTreeStructure" returns all subpages of all(!!) domains configured in this backend.

The generated sitemap still includes only the pages for the current domain, but returning and processing all subpages results in invalid records in the realurl tables.

optimize addQueryString.exclude for canonical URLs

The link which is created for the canonical URL should have the cHash and L parameter excluded. (see this post from Dimitry Dulepov)

Otherwise every L parameter could be added to URLs created by TYPO3 which than leads to an exception in realurl. But that's not exactly the problem. After all it's just a wrong configuration to not exclude the L parameter when having multiple languages. config.linkVars should be configured correct and TYPO3 will take care of adding the L parameter to links if the parameter is valid.

Excluding the "L" and "cHash" parameter should not lead to a problem.

(happens in UrlService::getCanonicalUrl())

Is it possible to add those two parameters?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.