Nette Seo Components

SEO components for Nette framework
Alternatives To Nette Seo Components
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Routing18124115 months ago6January 18, 20233otherPHP
Nette Routing: two-ways URL conversion
Nette Seo Components3
6 years ago3otherPHP
SEO components for Nette framework
Combinefiles1
7 years agoCSS
[ABANDONED] Combine files js, css, less,... for SEO
Alternatives To Nette Seo Components
Select To Compare


Alternative Project Comparisons
Readme

SEO components

This is seo components for Nette Framework which uses Doctrine2. It's allows you control these things:

  • Google analytics
  • Google webmaster tools
  • Auto generated sitemap.xml
  • robots.txt
  • meta tags (title, keywords, description and robots)
  • SEO friendly URLs

Instalation

The best way to install brabijan/nette-seo-components is using Composer:

$ composer require brabijan/nette-seo-components:@dev

Then you have to register extension in config.neon.

extensions:
	- Brabijan\SeoComponents\DI\SeoExtension

Usage

You have to insert following lines to your BasePresenter and use components in your @layout.latte (typically MetaTags to <head> and GoogleAnalytics before </body> tag)

/** @var \Brabijan\SeoComponents\Components\MetaTagsFactory @inject */
public $metaTagsFactory;

/** @var \Brabijan\SeoComponents\Components\GoogleAnalyticsFactory @inject */
public $googleAnalyticsFactory;



public function createComponentMetaTags()
{
	return $this->metaTagsFactory->create();
}



public function createComponentGoogleAnalytics()
{
	return $this->googleAnalyticsFactory->create();
}

Administration

Application targets

For proper generating sitemap.xml or setting up target meta data we have to create list of application targets. Let's have PagesManager for example. If we want to use it as application target list, implement ITargetSectionProvider on it.

<?php

namespace App\Model\Pages;

use Brabijan\SeoComponents\DI\ITargetSectionProvider;
use Brabijan\SeoComponents\Router\Target;

class PagesManager extends Object implements ITargetSectionProvider {


	/**
	 * @return Page
	 */
	public function getPagesList()
	{
		// return ...;
	}



	/**
	 * @return TargetSection
	 */
	public function getTargetSection()
	{
		$section = new TargetSection("Pages");
		foreach ($this->getPagesList() as $page) {
			$section->addTarget($page->name, new Target("Page", "show", $page->id));
		}

		return $section;
	}
	
}

and register it in your config.neon

services
	-
		class: App\Model\Pages\PageManager
		tags: [ Brabijan.seo.targetSectionProvider ]

Forms

Library contains few forms in namespace Brabijan\SeoComponents\Forms, which you can use for set up Google Analytics, Google Webmaster tools and robots.txt.

Form controls

In class Brabijan\SeoComponents\Forms\Controls\SeoContainer you can find container, which allows you to set up meta tags and url directly in your forms. Above we have example with pages, and now we're continue in it.

<?php

namespace App\AdminModule\Components;

use App\Model\Pages\Page;
use App\Model\Pages\PageManager;
use Brabijan\SeoComponents\Forms\Controls;
use Brabijan\SeoComponents\Router\Target;
use Nette\Application\UI\Form;
use Nette;

class SetPageForm extends Nette\Object
{

	/** @var PageManager */
	private $pageManager;

	/** @var Controls\SeoContainerFactory */
	private $seoContainerFactory;

	/** @var Page */
	private $page;



	public function __construct(PageFacade $pageManager, Controls\SeoContainerFactory $seoContainerFactory)
	{
		$this->pageManager = $pageManager;
		$this->seoContainerFactory = $seoContainerFactory;
	}



	public function setPage(Page $page)
	{
		$this->page = $page;
	}



	public function create()
	{
		$form = new Form();
		$form->addGroup($this->page ? "Edit page" : "Add page");
		$form->addText("name", "Name:");
		$form->addTextArea("content", "Content:");
		$seoGroup = $form->addGroup("SEO");
		$form['seoComponents'] = $this->seoContainerFactory->create($seoGroup);
		$form->addGroup();
		$form->addSubmit("send", $this->page ? "Edit page" : "Add page");

		$form->onSuccess[] = $this->processForm;
		if ($this->page) {
			$form->setDefaults(array(
				"name" => $this->page->name,
				"content" => $this->page->content,
			));
		}

		return $form;
	}



	public function processForm(Form $form)
	{
		$values = $form->values;
		$page = $this->page ? $this->page : new Page();
		$page->name = $values->name;
		$page->content = $values->content;
		$this->pageManager->save($page);

		/** @var Controls\SeoContainer $seoComponents */
		$seoComponents = $form['seoComponents'];
		$seoComponents->setTarget(new Target("Page", "show", $page->id));
		$seoComponents->saveChanges();
	}

}

Components

There is component Brabijan\SeoComponents\Components\SetTarget. It's used for global settings all application targets. Use it anywhere in your administration.

/** @var SetTargetFactory @inject */
public $setTargetFactory;



public function createComponentSetTarget()
{
	return $this->setTargetFactory->create();
}
Popular Nette Framework Projects
Popular Seo Projects
Popular Frameworks Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Php
Google
Form
Seo
Nette
Nette Framework