(Grav GitSync) Automatic Commit from dan
This commit is contained in:
parent
7c9f8bee8d
commit
630d899b6a
27 changed files with 709 additions and 250 deletions
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
title: 'EU bans Meta''s use of personal data for behavioural advertising'
|
||||||
|
author: Dan
|
||||||
|
published: true
|
||||||
|
date: '11-11-2023 23:34'
|
||||||
|
taxonomy:
|
||||||
|
category:
|
||||||
|
- news
|
||||||
|
tag:
|
||||||
|
- facebook
|
||||||
|
- meta
|
||||||
|
- ban
|
||||||
|
- EU
|
||||||
|
aura:
|
||||||
|
author: dan
|
||||||
|
---
|
||||||
|
|
||||||
|
The European Data Protection Board said Wednesday it had adopted a binding decision that will ban Facebook and Instagram owner Meta from using the personal data of users for targeted advertisements.
|
||||||
|
|
||||||
|
The order will "impose a ban on the processing of personal data for behavioural advertising on the legal bases of contract and legitimate interest across the entire European Economic Area," the EDPB said.
|
||||||
|
|
||||||
|
The order comes after Meta said on Monday that Facebook and Instagram users in Europe will be able to buy subscriptions to use the social networks without any advertising from this month.
|
||||||
|
|
||||||
|
"Meta has already announced that we will give people in the EU and EEA the opportunity to consent and, in November, will offer a subscriptions model to comply with regulatory requirements," a Meta representative said.
|
||||||
|
|
||||||
|
The company said EDPB members have been aware of its consent plan for weeks and that it had been fully engaged with them to arrive at a satisfactory outcome.
|
||||||
|
|
||||||
|
"This development unjustifiably ignores that careful and robust regulatory process," the company representative added.
|
||||||
|
|
||||||
|
The EDPB said it took the decision following a request from Norway's data regulator, which earlier this year imposed a ban on sending Facebook and Instagram users targeted advertisements based on their personal data which the social media platform collects without their explicit consent.
|
||||||
|
|
||||||
|
The EDPB decision forces Ireland's data regulator, which has authority over Meta's operations in Europe, to take final measures on the issue within two weeks, with a ban to enter force a week later.
|
||||||
|
|
||||||
|
More at https://www.france24.com/en/live-news/20231101-eu-bans-meta-s-use-of-personal-data-for-behavioural-advertising
|
|
@ -1,3 +1,9 @@
|
||||||
|
# v1.10.43
|
||||||
|
## 10/02/2023
|
||||||
|
|
||||||
|
1. [](#improved)
|
||||||
|
* Updated vendor libraries
|
||||||
|
|
||||||
# v1.10.42
|
# v1.10.42
|
||||||
## 06/14/2023
|
## 06/14/2023
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name: Admin Panel
|
name: Admin Panel
|
||||||
slug: admin
|
slug: admin
|
||||||
type: plugin
|
type: plugin
|
||||||
version: 1.10.42
|
version: 1.10.43
|
||||||
description: Adds an advanced administration panel to manage your site
|
description: Adds an advanced administration panel to manage your site
|
||||||
icon: empire
|
icon: empire
|
||||||
author:
|
author:
|
||||||
|
|
87
plugins/admin/composer.lock
generated
87
plugins/admin/composer.lock
generated
|
@ -816,16 +816,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/promises",
|
"name": "guzzlehttp/promises",
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/guzzle/promises.git",
|
"url": "https://github.com/guzzle/promises.git",
|
||||||
"reference": "b94b2807d85443f9719887892882d0329d1e2598"
|
"reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
|
"url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e",
|
||||||
"reference": "b94b2807d85443f9719887892882d0329d1e2598",
|
"reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -835,11 +835,6 @@
|
||||||
"symfony/phpunit-bridge": "^4.4 || ^5.1"
|
"symfony/phpunit-bridge": "^4.4 || ^5.1"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.5-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"files": [
|
"files": [
|
||||||
"src/functions_include.php"
|
"src/functions_include.php"
|
||||||
|
@ -880,7 +875,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/guzzle/promises/issues",
|
"issues": "https://github.com/guzzle/promises/issues",
|
||||||
"source": "https://github.com/guzzle/promises/tree/1.5.2"
|
"source": "https://github.com/guzzle/promises/tree/1.5.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -896,7 +891,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-08-28T14:55:35+00:00"
|
"time": "2023-05-21T12:31:43+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/psr7",
|
"name": "guzzlehttp/psr7",
|
||||||
|
@ -3184,16 +3179,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.27.0",
|
"version": "v1.28.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
|
"reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
|
||||||
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
|
"reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3208,7 +3203,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.27-dev"
|
"dev-main": "1.28-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
|
@ -3246,7 +3241,7 @@
|
||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
|
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -3262,20 +3257,20 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-03T14:55:06+00:00"
|
"time": "2023-01-26T09:26:14+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-idn",
|
"name": "symfony/polyfill-intl-idn",
|
||||||
"version": "v1.27.0",
|
"version": "v1.28.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
||||||
"reference": "639084e360537a19f9ee352433b84ce831f3d2da"
|
"reference": "ecaafce9f77234a6a449d29e49267ba10499116d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d",
|
||||||
"reference": "639084e360537a19f9ee352433b84ce831f3d2da",
|
"reference": "ecaafce9f77234a6a449d29e49267ba10499116d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3289,7 +3284,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.27-dev"
|
"dev-main": "1.28-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
|
@ -3333,7 +3328,7 @@
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
|
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -3349,20 +3344,20 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-03T14:55:06+00:00"
|
"time": "2023-01-26T09:30:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-normalizer",
|
"name": "symfony/polyfill-intl-normalizer",
|
||||||
"version": "v1.27.0",
|
"version": "v1.28.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||||
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
|
"reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
|
||||||
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
|
"reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3374,7 +3369,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.27-dev"
|
"dev-main": "1.28-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
|
@ -3417,7 +3412,7 @@
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
|
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -3433,20 +3428,20 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-03T14:55:06+00:00"
|
"time": "2023-01-26T09:26:14+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
"version": "v1.27.0",
|
"version": "v1.28.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
|
"reference": "42292d99c55abe617799667f454222c54c60e229"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
|
||||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
"reference": "42292d99c55abe617799667f454222c54c60e229",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3461,7 +3456,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.27-dev"
|
"dev-main": "1.28-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
|
@ -3500,7 +3495,7 @@
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
|
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -3516,20 +3511,20 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-03T14:55:06+00:00"
|
"time": "2023-07-28T09:04:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php80",
|
"name": "symfony/polyfill-php80",
|
||||||
"version": "v1.27.0",
|
"version": "v1.28.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
"reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
|
||||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
"reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3538,7 +3533,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.27-dev"
|
"dev-main": "1.28-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
|
@ -3583,7 +3578,7 @@
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
"source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -3599,7 +3594,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-03T14:55:06+00:00"
|
"time": "2023-01-26T09:26:14+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/process",
|
"name": "symfony/process",
|
||||||
|
|
96
plugins/admin/vendor/composer/ClassLoader.php
vendored
96
plugins/admin/vendor/composer/ClassLoader.php
vendored
|
@ -45,35 +45,34 @@ class ClassLoader
|
||||||
/** @var \Closure(string):void */
|
/** @var \Closure(string):void */
|
||||||
private static $includeFile;
|
private static $includeFile;
|
||||||
|
|
||||||
/** @var ?string */
|
/** @var string|null */
|
||||||
private $vendorDir;
|
private $vendorDir;
|
||||||
|
|
||||||
// PSR-4
|
// PSR-4
|
||||||
/**
|
/**
|
||||||
* @var array[]
|
* @var array<string, array<string, int>>
|
||||||
* @psalm-var array<string, array<string, int>>
|
|
||||||
*/
|
*/
|
||||||
private $prefixLengthsPsr4 = array();
|
private $prefixLengthsPsr4 = array();
|
||||||
/**
|
/**
|
||||||
* @var array[]
|
* @var array<string, list<string>>
|
||||||
* @psalm-var array<string, array<int, string>>
|
|
||||||
*/
|
*/
|
||||||
private $prefixDirsPsr4 = array();
|
private $prefixDirsPsr4 = array();
|
||||||
/**
|
/**
|
||||||
* @var array[]
|
* @var list<string>
|
||||||
* @psalm-var array<string, string>
|
|
||||||
*/
|
*/
|
||||||
private $fallbackDirsPsr4 = array();
|
private $fallbackDirsPsr4 = array();
|
||||||
|
|
||||||
// PSR-0
|
// PSR-0
|
||||||
/**
|
/**
|
||||||
* @var array[]
|
* List of PSR-0 prefixes
|
||||||
* @psalm-var array<string, array<string, string[]>>
|
*
|
||||||
|
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
|
||||||
|
*
|
||||||
|
* @var array<string, array<string, list<string>>>
|
||||||
*/
|
*/
|
||||||
private $prefixesPsr0 = array();
|
private $prefixesPsr0 = array();
|
||||||
/**
|
/**
|
||||||
* @var array[]
|
* @var list<string>
|
||||||
* @psalm-var array<string, string>
|
|
||||||
*/
|
*/
|
||||||
private $fallbackDirsPsr0 = array();
|
private $fallbackDirsPsr0 = array();
|
||||||
|
|
||||||
|
@ -81,8 +80,7 @@ class ClassLoader
|
||||||
private $useIncludePath = false;
|
private $useIncludePath = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string[]
|
* @var array<string, string>
|
||||||
* @psalm-var array<string, string>
|
|
||||||
*/
|
*/
|
||||||
private $classMap = array();
|
private $classMap = array();
|
||||||
|
|
||||||
|
@ -90,21 +88,20 @@ class ClassLoader
|
||||||
private $classMapAuthoritative = false;
|
private $classMapAuthoritative = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var bool[]
|
* @var array<string, bool>
|
||||||
* @psalm-var array<string, bool>
|
|
||||||
*/
|
*/
|
||||||
private $missingClasses = array();
|
private $missingClasses = array();
|
||||||
|
|
||||||
/** @var ?string */
|
/** @var string|null */
|
||||||
private $apcuPrefix;
|
private $apcuPrefix;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var self[]
|
* @var array<string, self>
|
||||||
*/
|
*/
|
||||||
private static $registeredLoaders = array();
|
private static $registeredLoaders = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ?string $vendorDir
|
* @param string|null $vendorDir
|
||||||
*/
|
*/
|
||||||
public function __construct($vendorDir = null)
|
public function __construct($vendorDir = null)
|
||||||
{
|
{
|
||||||
|
@ -113,7 +110,7 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return array<string, list<string>>
|
||||||
*/
|
*/
|
||||||
public function getPrefixes()
|
public function getPrefixes()
|
||||||
{
|
{
|
||||||
|
@ -125,8 +122,7 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array[]
|
* @return array<string, list<string>>
|
||||||
* @psalm-return array<string, array<int, string>>
|
|
||||||
*/
|
*/
|
||||||
public function getPrefixesPsr4()
|
public function getPrefixesPsr4()
|
||||||
{
|
{
|
||||||
|
@ -134,8 +130,7 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array[]
|
* @return list<string>
|
||||||
* @psalm-return array<string, string>
|
|
||||||
*/
|
*/
|
||||||
public function getFallbackDirs()
|
public function getFallbackDirs()
|
||||||
{
|
{
|
||||||
|
@ -143,8 +138,7 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array[]
|
* @return list<string>
|
||||||
* @psalm-return array<string, string>
|
|
||||||
*/
|
*/
|
||||||
public function getFallbackDirsPsr4()
|
public function getFallbackDirsPsr4()
|
||||||
{
|
{
|
||||||
|
@ -152,8 +146,7 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[] Array of classname => path
|
* @return array<string, string> Array of classname => path
|
||||||
* @psalm-return array<string, string>
|
|
||||||
*/
|
*/
|
||||||
public function getClassMap()
|
public function getClassMap()
|
||||||
{
|
{
|
||||||
|
@ -161,8 +154,7 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $classMap Class to filename map
|
* @param array<string, string> $classMap Class to filename map
|
||||||
* @psalm-param array<string, string> $classMap
|
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
@ -179,24 +171,25 @@ class ClassLoader
|
||||||
* Registers a set of PSR-0 directories for a given prefix, either
|
* Registers a set of PSR-0 directories for a given prefix, either
|
||||||
* appending or prepending to the ones previously set for this prefix.
|
* appending or prepending to the ones previously set for this prefix.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix
|
* @param string $prefix The prefix
|
||||||
* @param string[]|string $paths The PSR-0 root directories
|
* @param list<string>|string $paths The PSR-0 root directories
|
||||||
* @param bool $prepend Whether to prepend the directories
|
* @param bool $prepend Whether to prepend the directories
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function add($prefix, $paths, $prepend = false)
|
public function add($prefix, $paths, $prepend = false)
|
||||||
{
|
{
|
||||||
|
$paths = (array) $paths;
|
||||||
if (!$prefix) {
|
if (!$prefix) {
|
||||||
if ($prepend) {
|
if ($prepend) {
|
||||||
$this->fallbackDirsPsr0 = array_merge(
|
$this->fallbackDirsPsr0 = array_merge(
|
||||||
(array) $paths,
|
$paths,
|
||||||
$this->fallbackDirsPsr0
|
$this->fallbackDirsPsr0
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$this->fallbackDirsPsr0 = array_merge(
|
$this->fallbackDirsPsr0 = array_merge(
|
||||||
$this->fallbackDirsPsr0,
|
$this->fallbackDirsPsr0,
|
||||||
(array) $paths
|
$paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,19 +198,19 @@ class ClassLoader
|
||||||
|
|
||||||
$first = $prefix[0];
|
$first = $prefix[0];
|
||||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
$this->prefixesPsr0[$first][$prefix] = $paths;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($prepend) {
|
if ($prepend) {
|
||||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
(array) $paths,
|
$paths,
|
||||||
$this->prefixesPsr0[$first][$prefix]
|
$this->prefixesPsr0[$first][$prefix]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
$this->prefixesPsr0[$first][$prefix],
|
$this->prefixesPsr0[$first][$prefix],
|
||||||
(array) $paths
|
$paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,9 +219,9 @@ class ClassLoader
|
||||||
* Registers a set of PSR-4 directories for a given namespace, either
|
* Registers a set of PSR-4 directories for a given namespace, either
|
||||||
* appending or prepending to the ones previously set for this namespace.
|
* appending or prepending to the ones previously set for this namespace.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
* @param string[]|string $paths The PSR-4 base directories
|
* @param list<string>|string $paths The PSR-4 base directories
|
||||||
* @param bool $prepend Whether to prepend the directories
|
* @param bool $prepend Whether to prepend the directories
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
*
|
*
|
||||||
|
@ -236,17 +229,18 @@ class ClassLoader
|
||||||
*/
|
*/
|
||||||
public function addPsr4($prefix, $paths, $prepend = false)
|
public function addPsr4($prefix, $paths, $prepend = false)
|
||||||
{
|
{
|
||||||
|
$paths = (array) $paths;
|
||||||
if (!$prefix) {
|
if (!$prefix) {
|
||||||
// Register directories for the root namespace.
|
// Register directories for the root namespace.
|
||||||
if ($prepend) {
|
if ($prepend) {
|
||||||
$this->fallbackDirsPsr4 = array_merge(
|
$this->fallbackDirsPsr4 = array_merge(
|
||||||
(array) $paths,
|
$paths,
|
||||||
$this->fallbackDirsPsr4
|
$this->fallbackDirsPsr4
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$this->fallbackDirsPsr4 = array_merge(
|
$this->fallbackDirsPsr4 = array_merge(
|
||||||
$this->fallbackDirsPsr4,
|
$this->fallbackDirsPsr4,
|
||||||
(array) $paths
|
$paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||||
|
@ -256,18 +250,18 @@ class ClassLoader
|
||||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||||
}
|
}
|
||||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
$this->prefixDirsPsr4[$prefix] = $paths;
|
||||||
} elseif ($prepend) {
|
} elseif ($prepend) {
|
||||||
// Prepend directories for an already registered namespace.
|
// Prepend directories for an already registered namespace.
|
||||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||||
(array) $paths,
|
$paths,
|
||||||
$this->prefixDirsPsr4[$prefix]
|
$this->prefixDirsPsr4[$prefix]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// Append directories for an already registered namespace.
|
// Append directories for an already registered namespace.
|
||||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||||
$this->prefixDirsPsr4[$prefix],
|
$this->prefixDirsPsr4[$prefix],
|
||||||
(array) $paths
|
$paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -276,8 +270,8 @@ class ClassLoader
|
||||||
* Registers a set of PSR-0 directories for a given prefix,
|
* Registers a set of PSR-0 directories for a given prefix,
|
||||||
* replacing any others previously set for this prefix.
|
* replacing any others previously set for this prefix.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix
|
* @param string $prefix The prefix
|
||||||
* @param string[]|string $paths The PSR-0 base directories
|
* @param list<string>|string $paths The PSR-0 base directories
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
@ -294,8 +288,8 @@ class ClassLoader
|
||||||
* Registers a set of PSR-4 directories for a given namespace,
|
* Registers a set of PSR-4 directories for a given namespace,
|
||||||
* replacing any others previously set for this namespace.
|
* replacing any others previously set for this namespace.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
* @param string[]|string $paths The PSR-4 base directories
|
* @param list<string>|string $paths The PSR-4 base directories
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
*
|
*
|
||||||
|
@ -481,9 +475,9 @@ class ClassLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
* Returns the currently registered loaders keyed by their corresponding vendor directories.
|
||||||
*
|
*
|
||||||
* @return self[]
|
* @return array<string, self>
|
||||||
*/
|
*/
|
||||||
public static function getRegisteredLoaders()
|
public static function getRegisteredLoaders()
|
||||||
{
|
{
|
||||||
|
|
4
plugins/admin/vendor/composer/installed.php
vendored
4
plugins/admin/vendor/composer/installed.php
vendored
|
@ -3,7 +3,7 @@
|
||||||
'name' => 'getgrav/grav-plugin-admin',
|
'name' => 'getgrav/grav-plugin-admin',
|
||||||
'pretty_version' => 'dev-develop',
|
'pretty_version' => 'dev-develop',
|
||||||
'version' => 'dev-develop',
|
'version' => 'dev-develop',
|
||||||
'reference' => 'be85fb4194474700fbd8fe60b48b27613b47ce59',
|
'reference' => '8c17ca7d75e271ee2cf4e38ae54e75d2ce8b9224',
|
||||||
'type' => 'grav-plugin',
|
'type' => 'grav-plugin',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
'getgrav/grav-plugin-admin' => array(
|
'getgrav/grav-plugin-admin' => array(
|
||||||
'pretty_version' => 'dev-develop',
|
'pretty_version' => 'dev-develop',
|
||||||
'version' => 'dev-develop',
|
'version' => 'dev-develop',
|
||||||
'reference' => 'be85fb4194474700fbd8fe60b48b27613b47ce59',
|
'reference' => '8c17ca7d75e271ee2cf4e38ae54e75d2ce8b9224',
|
||||||
'type' => 'grav-plugin',
|
'type' => 'grav-plugin',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
# v1.10.0
|
||||||
|
## 09/26/2023
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* Allow template overrides based on header feed config [#67](https://github.com/getgrav/grav-plugin-feed/pull/67)
|
||||||
|
1. [](#bugfix)
|
||||||
|
* Fixed the `<lastBuildDate..>` that was broken
|
||||||
|
|
||||||
# v1.9.0
|
# v1.9.0
|
||||||
## 10/05/2022
|
## 10/05/2022
|
||||||
|
|
||||||
|
|
|
@ -131,6 +131,17 @@ Manually updating Feed is pretty simple. Here is what you will need to do to get
|
||||||
|
|
||||||
> Note: Any changes you have made to any of the files listed under this directory will also be removed and replaced by the new set. Any files located elsewhere (for example a YAML settings file placed in `user/config/plugins`) will remain intact.
|
> Note: Any changes you have made to any of the files listed under this directory will also be removed and replaced by the new set. Any files located elsewhere (for example a YAML settings file placed in `user/config/plugins`) will remain intact.
|
||||||
|
|
||||||
|
## Overriding the default feed template:
|
||||||
|
|
||||||
|
Sometimes, you may wish to use a different template for an RSS/ ATOM/ JSON feed. To override a feed's template, place the following in the page header:
|
||||||
|
``` yaml
|
||||||
|
feed:
|
||||||
|
template:
|
||||||
|
rss: my-override
|
||||||
|
```
|
||||||
|
|
||||||
|
Create the `my-override.rss.twig` in your theme/ plugin's `templates` folder and add it to your [twig template paths](https://learn.getgrav.org/17/cookbook/plugin-recipes#custom-twig-templates-plu). Change `*.rss.*` to `*.atom.*` or `*.json.*` to override those page types.
|
||||||
|
|
||||||
## Nginx Note:
|
## Nginx Note:
|
||||||
|
|
||||||
If you are having trouble with 404s with Nginx, it might be related to your configuration. You may need to remove the feed extensions from the list of types to cache as static files: `.xml`, `.rss`, and `.atom`. For example:
|
If you are having trouble with 404s with Nginx, it might be related to your configuration. You may need to remove the feed extensions from the list of types to cache as static files: `.xml`, `.rss`, and `.atom`. For example:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name: Feed
|
name: Feed
|
||||||
type: plugin
|
type: plugin
|
||||||
slug: feed
|
slug: feed
|
||||||
version: 1.9.0
|
version: 1.10.0
|
||||||
description: The **Feed** plugin is a simple yet powerful add-on that lets you view a Grav Collection as **JSON**, **RSS** or **Atom** news feed.
|
description: The **Feed** plugin is a simple yet powerful add-on that lets you view a Grav Collection as **JSON**, **RSS** or **Atom** news feed.
|
||||||
icon: rss
|
icon: rss
|
||||||
author:
|
author:
|
||||||
|
|
|
@ -78,7 +78,6 @@ class FeedPlugin extends Plugin
|
||||||
$this->type = $uri->extension();
|
$this->type = $uri->extension();
|
||||||
|
|
||||||
if ($this->type && in_array($this->type, $this->valid_types)) {
|
if ($this->type && in_array($this->type, $this->valid_types)) {
|
||||||
|
|
||||||
$this->enable([
|
$this->enable([
|
||||||
'onPageInitialized' => ['onPageInitialized', 0],
|
'onPageInitialized' => ['onPageInitialized', 0],
|
||||||
'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0],
|
'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0],
|
||||||
|
@ -95,19 +94,27 @@ class FeedPlugin extends Plugin
|
||||||
|
|
||||||
// Overwrite regular content with feed config, so you can influence the collection processing with feed config
|
// Overwrite regular content with feed config, so you can influence the collection processing with feed config
|
||||||
if (property_exists($page->header(), 'content')) {
|
if (property_exists($page->header(), 'content')) {
|
||||||
|
// Set default template.
|
||||||
|
$template = "feed";
|
||||||
|
|
||||||
if (isset($page->header()->feed)) {
|
if (isset($page->header()->feed)) {
|
||||||
$this->feed_config = array_merge($this->feed_config, $page->header()->feed);
|
$this->feed_config = array_merge($this->feed_config, $page->header()->feed);
|
||||||
|
|
||||||
|
// Look for feed type override,
|
||||||
|
if (isset($this->feed_config['template']) && isset($this->feed_config['template'][$this->type])) {
|
||||||
|
$template = $this->feed_config['template'][$this->type];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$page->header()->content = array_merge($page->header()->content, $this->feed_config);
|
$page->header()->content = array_merge($page->header()->content, $this->feed_config);
|
||||||
|
|
||||||
$this->grav['twig']->template = 'feed.' . $this->type . '.twig';
|
// Set page template.
|
||||||
|
$this->grav['twig']->template = $template . "." . $this->type . '.twig';
|
||||||
|
|
||||||
$this->enable([
|
$this->enable([
|
||||||
'onCollectionProcessed' => ['onCollectionProcessed', 0],
|
'onCollectionProcessed' => ['onCollectionProcessed', 0],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
{% for page in collection %}
|
{% for page in collection %}
|
||||||
{%- set lastBuildDate = max(lastBuildDate, page.date) %}
|
{%- set lastBuildDate = max(lastBuildDate, page.date) %}
|
||||||
{%- if collection.params.show_last_modified %}
|
{%- if collection.params.show_last_modified %}
|
||||||
{%- set lastBuildDate = max(feed_updated, page.modified) %}
|
{%- set lastBuildDate = max(lastBuildDate, page.modified) %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
# v1.3.6
|
||||||
|
## 10/11/2023
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* Added a new `onAdminObjectGet()` event to allow for manipulation of flex objects
|
||||||
|
|
||||||
# v1.3.5
|
# v1.3.5
|
||||||
## 05/09/2023
|
## 05/09/2023
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name: Flex Objects
|
name: Flex Objects
|
||||||
slug: flex-objects
|
slug: flex-objects
|
||||||
type: plugin
|
type: plugin
|
||||||
version: 1.3.5
|
version: 1.3.6
|
||||||
description: Flex Objects plugin allows you to manage Flex Objects in Grav Admin.
|
description: Flex Objects plugin allows you to manage Flex Objects in Grav Admin.
|
||||||
icon: list-alt
|
icon: list-alt
|
||||||
author:
|
author:
|
||||||
|
|
|
@ -1579,6 +1579,8 @@ class AdminController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->grav->fireEvent('onAdminObjectGet', new Event(['object' => $this->object]));
|
||||||
|
|
||||||
return $this->object ?: null;
|
return $this->object ?: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,25 @@
|
||||||
|
# v5.0.0
|
||||||
|
## 10/05/2023
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* New capability to support "standalone" Sitemap News pages
|
||||||
|
* New XSL format for Sitemap News
|
||||||
|
* Added a toggle for XSL transform support to be disabled
|
||||||
|
1. [](#improved)
|
||||||
|
* Improved blueprint and created sections
|
||||||
|
* Hide `x-default` alternate links when `include_default_lang` is enabled
|
||||||
|
1. [](#bugfix)
|
||||||
|
* Fixed an issue with translated links were not being handled properly and not showing all alternate languages
|
||||||
|
|
||||||
|
# v4.0.0
|
||||||
|
## 09/22/2023
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* Added support for Google News tags [#93](https://github.com/getgrav/grav-plugin-sitemap/pull/93)
|
||||||
|
* Enhanced Google News to allow restriction to paths and configurable max-age in days
|
||||||
|
1. [](#improved)
|
||||||
|
* Added YAML syntax highlighting in README.md [#101](https://github.com/getgrav/grav-plugin-sitemap/pull/101)
|
||||||
|
|
||||||
# v3.0.2
|
# v3.0.2
|
||||||
## 06/14/2022
|
## 06/14/2022
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Grav Sitemap Plugin
|
# Grav Sitemap Plugin
|
||||||
|
|
||||||
`Sitemap` is a [Grav](http://github.com/getgrav/grav) Plugin that generates a [map of your pages](http://en.wikipedia.org/wiki/Site_map) in `XML` format that is easily understandable and indexable by Search engines.
|
`Sitemap` is a [Grav](https://github.com/getgrav/grav) Plugin that generates a [map of your pages](https://en.wikipedia.org/wiki/Site_map) in `XML` format that is easily understandable and indexable by Search engines.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Installing the Sitemap plugin can be done in one of two ways. Our GPM (Grav Pack
|
||||||
|
|
||||||
## GPM Installation (Preferred)
|
## GPM Installation (Preferred)
|
||||||
|
|
||||||
The simplest way to install this plugin is via the [Grav Package Manager (GPM)](http://learn.getgrav.org/advanced/grav-gpm) through your system's Terminal (also called the command line). From the root of your Grav install type:
|
The simplest way to install this plugin is via the [Grav Package Manager (GPM)](https://learn.getgrav.org/advanced/grav-gpm) through your system's Terminal (also called the command line). From the root of your Grav install type:
|
||||||
|
|
||||||
bin/gpm install sitemap
|
bin/gpm install sitemap
|
||||||
|
|
||||||
|
@ -16,13 +16,13 @@ This will install the Sitemap plugin into your `/user/plugins` directory within
|
||||||
|
|
||||||
## Manual Installation
|
## Manual Installation
|
||||||
|
|
||||||
To install this plugin, just download the zip version of this repository and unzip it under `/your/site/grav/user/plugins`. Then, rename the folder to `sitemap`. You can find these files either on [GitHub](https://github.com/getgrav/grav-plugin-sitemap) or via [GetGrav.org](http://getgrav.org/downloads/plugins#extras).
|
To install this plugin, just download the zip version of this repository and unzip it under `/your/site/grav/user/plugins`. Then, rename the folder to `sitemap`. You can find these files either on [GitHub](https://github.com/getgrav/grav-plugin-sitemap) or via [GetGrav.org](https://getgrav.org/downloads/plugins#extras).
|
||||||
|
|
||||||
You should now have all the plugin files under
|
You should now have all the plugin files under
|
||||||
|
|
||||||
/your/site/grav/user/plugins/sitemap
|
/your/site/grav/user/plugins/sitemap
|
||||||
|
|
||||||
>> NOTE: This plugin is a modular component for Grav which requires [Grav](http://github.com/getgrav/grav), the [Error](https://github.com/getgrav/grav-plugin-error) and [Problems](https://github.com/getgrav/grav-plugin-problems) plugins, and a theme to be installed in order to operate.
|
>> NOTE: This plugin is a modular component for Grav which requires [Grav](https://github.com/getgrav/grav), the [Error](https://github.com/getgrav/grav-plugin-error) and [Problems](https://github.com/getgrav/grav-plugin-problems) plugins, and a theme to be installed in order to operate.
|
||||||
|
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
@ -31,7 +31,7 @@ The `sitemap` plugin works out of the box. You can just go directly to `http://y
|
||||||
|
|
||||||
## Config Defaults
|
## Config Defaults
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
enabled: true
|
enabled: true
|
||||||
route: '/sitemap'
|
route: '/sitemap'
|
||||||
ignore_external: true
|
ignore_external: true
|
||||||
|
@ -41,9 +41,16 @@ ignores:
|
||||||
- /blog/blog-post-to-ignore
|
- /blog/blog-post-to-ignore
|
||||||
- /ignore-this-route
|
- /ignore-this-route
|
||||||
- /ignore-children-of-this-route/.*
|
- /ignore-children-of-this-route/.*
|
||||||
|
include_news_tags: false
|
||||||
|
standalone_sitemap_news: false
|
||||||
|
sitemap_news_path: '/sitemap-news.xml'
|
||||||
|
news_max_age_days: 2
|
||||||
|
news_enabled_paths:
|
||||||
|
- /blog
|
||||||
whitelist:
|
whitelist:
|
||||||
html_support: false
|
html_support: false
|
||||||
urlset: 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
urlset: 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
||||||
|
urlnewsset: 'http://www.google.com/schemas/sitemap-news/0.9'
|
||||||
short_date_format: true
|
short_date_format: true
|
||||||
include_changefreq: true
|
include_changefreq: true
|
||||||
changefreq: daily
|
changefreq: daily
|
||||||
|
@ -64,7 +71,7 @@ additions:
|
||||||
|
|
||||||
You can ignore your own pages by providing a list of routes to ignore. You can also use a page's Frontmatter to signal that the sitemap should ignore it:
|
You can ignore your own pages by providing a list of routes to ignore. You can also use a page's Frontmatter to signal that the sitemap should ignore it:
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
sitemap:
|
sitemap:
|
||||||
ignore: true
|
ignore: true
|
||||||
```
|
```
|
||||||
|
@ -75,11 +82,27 @@ The latest Sitemap `v3.0` includes all new multi-language support utilizing the
|
||||||
|
|
||||||
This is handled automatically based on your Grav multi-language System configuration.
|
This is handled automatically based on your Grav multi-language System configuration.
|
||||||
|
|
||||||
|
### News Support
|
||||||
|
|
||||||
|
New in version 4.0 of the plugin is support for Google's [**News Sitemap Extension**](https://developers.google.com/search/docs/crawling-indexing/sitemaps/news-sitemap) that uses a specific tags under a `<news:news></news:news>` tag to provide Google News specific data. When enabled, the news extensions will be enabled when an item is in one of the configured news paths (`/` by default, so all), and if the published date is not older than the configured `max age` (default of 2 per Googles recommendations).
|
||||||
|
|
||||||
|
The output of the news tags is controlled by an overridable `sitemap-extensions/news.html.twig` template.
|
||||||
|
|
||||||
|
The default behavior when **Include News Tags** is enabled, is to include the news tags directly in the primary `sitemap.xml` file. However, if you enabled the **Standalone News URLs** option, news tags will not be added to the primary `sitemap.xml`, rather, they will be available in standalone paths that contain only the pages in the designated news paths.
|
||||||
|
|
||||||
|
For example, the default behavior is to enable `/blog` as a news path. If this path exists, you have content in subfolders of this page, and that content is less than the defined "News Max Age" (2 days recommended by Google), then that sitemap-news-specific sitemap would be available via:
|
||||||
|
|
||||||
|
```
|
||||||
|
https://yoursite.com/blog/sitemap-news.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
You can change the "News Path" to be something other than `sitemap-news.xml` if you wish.
|
||||||
|
|
||||||
## Images
|
## Images
|
||||||
|
|
||||||
You can add images to the sitemap by adding an entry in the page's Frontmatter.
|
You can add images to the sitemap by adding an entry in the page's Frontmatter.
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
sitemap:
|
sitemap:
|
||||||
images:
|
images:
|
||||||
your_image:
|
your_image:
|
||||||
|
@ -108,7 +131,7 @@ You can copy and extend this Twig template in your theme to customize it for you
|
||||||
|
|
||||||
You can manually add URLs to the sitemap using the Admin settings, or by adding entries to your `sitemap.yaml` with this format:
|
You can manually add URLs to the sitemap using the Admin settings, or by adding entries to your `sitemap.yaml` with this format:
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
additions:
|
additions:
|
||||||
-
|
-
|
||||||
location: /something-special
|
location: /something-special
|
||||||
|
@ -122,7 +145,7 @@ Note that Regex support is available: Just append `.*` to a path to ignore all o
|
||||||
|
|
||||||
If you have some dynamic content being added to your site via another plugin, or perhaps a 3rd party API, you can now add them dynamically to the sitemap with a simple event:
|
If you have some dynamic content being added to your site via another plugin, or perhaps a 3rd party API, you can now add them dynamically to the sitemap with a simple event:
|
||||||
|
|
||||||
Make sure you are subscribed to the `` event then add simply add your entry to the sitemap like this:
|
Make sure you are subscribed to the `onSitemapProcessed` event then add simply add your entry to the sitemap like this:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function onSitemapProcessed(\RocketTheme\Toolbox\Event\Event $e)
|
public function onSitemapProcessed(\RocketTheme\Toolbox\Event\Event $e)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
name: Sitemap
|
name: Sitemap
|
||||||
type: plugin
|
type: plugin
|
||||||
slug: sitemap
|
slug: sitemap
|
||||||
version: 3.0.2
|
version: 5.0.0
|
||||||
description: "Provide automatically generated **XML sitemaps** with this very useful, but simple to configure, Grav plugin."
|
description: "Provide automatically generated **XML sitemaps** with this very useful, as a simple to configure Grav plugin."
|
||||||
icon: map-marker
|
icon: map-marker
|
||||||
author:
|
author:
|
||||||
name: Team Grav
|
name: Team Grav
|
||||||
|
@ -30,6 +30,14 @@ form:
|
||||||
validate:
|
validate:
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
|
route:
|
||||||
|
type: text
|
||||||
|
size: medium
|
||||||
|
label: PLUGIN_SITEMAP.ROUTE
|
||||||
|
placeholder: /sitemap
|
||||||
|
validate:
|
||||||
|
pattern: "/([a-z-_]+/?)+"
|
||||||
|
|
||||||
multilang_enabled:
|
multilang_enabled:
|
||||||
type: toggle
|
type: toggle
|
||||||
label: PLUGIN_SITEMAP.MULTILANG_ENABLED
|
label: PLUGIN_SITEMAP.MULTILANG_ENABLED
|
||||||
|
@ -78,19 +86,17 @@ form:
|
||||||
validate:
|
validate:
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
ignores:
|
xsl_transform:
|
||||||
type: array
|
type: toggle
|
||||||
label: PLUGIN_SITEMAP.IGNORES
|
label: PLUGIN_SITEMAP.XSL_TRANSFORM
|
||||||
help: PLUGIN_SITEMAP.IGNORES_HELP
|
help: PLUGIN_SITEMAP.XSL_TRANSFORM_HELP
|
||||||
value_only: true
|
highlight: 1
|
||||||
placeholder_value: '/ignore-this-route'
|
default: 1
|
||||||
|
options:
|
||||||
route:
|
1: PLUGIN_ADMIN.ENABLED
|
||||||
type: text
|
0: PLUGIN_ADMIN.DISABLED
|
||||||
label: PLUGIN_SITEMAP.ROUTE
|
|
||||||
placeholder: /sitemap
|
|
||||||
validate:
|
validate:
|
||||||
pattern: "/([a-z-_]+/?)+"
|
type: bool
|
||||||
|
|
||||||
html_support:
|
html_support:
|
||||||
type: toggle
|
type: toggle
|
||||||
|
@ -104,97 +110,95 @@ form:
|
||||||
validate:
|
validate:
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
urlset:
|
ignores:
|
||||||
type: text
|
type: array
|
||||||
default: 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
label: PLUGIN_SITEMAP.IGNORES
|
||||||
label: PLUGIN_SITEMAP.URLSET
|
help: PLUGIN_SITEMAP.IGNORES_HELP
|
||||||
help: PLUGIN_SITEMAP.URLSET_HELP
|
value_only: true
|
||||||
|
placeholder_value: '/ignore-this-route'
|
||||||
|
|
||||||
short_date_format:
|
news_section:
|
||||||
type: toggle
|
type: section
|
||||||
label: PLUGIN_ADMIN.SHORT_DATE_FORMAT
|
title: Sitemap News
|
||||||
help: PLUGIN_ADMIN.SHORT_DATE_FORMAT_HELP
|
underline: true
|
||||||
highlight: 1
|
|
||||||
default: 0
|
|
||||||
options:
|
|
||||||
1: PLUGIN_ADMIN.ENABLED
|
|
||||||
0: PLUGIN_ADMIN.DISABLED
|
|
||||||
validate:
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
include_changefreq:
|
|
||||||
type: toggle
|
|
||||||
label: PLUGIN_SITEMAP.INCLUDE_CHANGEFREQ
|
|
||||||
help: PLUGIN_SITEMAP.INCLUDE_CHANGEFREQ_HELP
|
|
||||||
highlight: 1
|
|
||||||
default: 0
|
|
||||||
options:
|
|
||||||
1: PLUGIN_ADMIN.ENABLED
|
|
||||||
0: PLUGIN_ADMIN.DISABLED
|
|
||||||
validate:
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
changefreq:
|
|
||||||
type: select
|
|
||||||
label: PLUGIN_SITEMAP.CHANGEFREQ
|
|
||||||
default: ''
|
|
||||||
options:
|
|
||||||
'': PLUGIN_SITEMAP.CHANGEFREQ_DEFAULT
|
|
||||||
always: PLUGIN_SITEMAP.CHANGEFREQ_ALWAYS
|
|
||||||
hourly: PLUGIN_SITEMAP.CHANGEFREQ_HOURLY
|
|
||||||
daily: PLUGIN_SITEMAP.CHANGEFREQ_DAILY
|
|
||||||
weekly: PLUGIN_SITEMAP.CHANGEFREQ_WEEKLY
|
|
||||||
monthly: PLUGIN_SITEMAP.CHANGEFREQ_MONTHLY
|
|
||||||
yearly: PLUGIN_SITEMAP.CHANGEFREQ_YEARLY
|
|
||||||
never: PLUGIN_SITEMAP.CHANGEFREQ_NEVER
|
|
||||||
|
|
||||||
include_priority:
|
|
||||||
type: toggle
|
|
||||||
label: PLUGIN_SITEMAP.INCLUDE_PRIORITY
|
|
||||||
help: PLUGIN_SITEMAP.INCLUDE_PRIORITY_HELP
|
|
||||||
highlight: 1
|
|
||||||
default: 0
|
|
||||||
options:
|
|
||||||
1: PLUGIN_ADMIN.ENABLED
|
|
||||||
0: PLUGIN_ADMIN.DISABLED
|
|
||||||
validate:
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
priority:
|
|
||||||
type: select
|
|
||||||
label: PLUGIN_SITEMAP.PRIORITY
|
|
||||||
default: ''
|
|
||||||
options:
|
|
||||||
'': PLUGIN_SITEMAP.PRIORITY_USE_GLOBAL
|
|
||||||
'0.1': 0.1
|
|
||||||
'0.2': 0.2
|
|
||||||
'0.3': 0.3
|
|
||||||
'0.4': 0.4
|
|
||||||
'0.5': 0.5
|
|
||||||
'0.6': 0.6
|
|
||||||
'0.7': 0.7
|
|
||||||
'0.8': 0.8
|
|
||||||
'0.9': 0.9
|
|
||||||
'1.0': 1.0
|
|
||||||
validate:
|
|
||||||
type: float
|
|
||||||
|
|
||||||
additions:
|
|
||||||
type: list
|
|
||||||
label: PLUGIN_SITEMAP.ADDITIONS
|
|
||||||
help: PLUGIN_SITEMAP.ADDITIONS_HELP
|
|
||||||
|
|
||||||
fields:
|
fields:
|
||||||
.location:
|
|
||||||
|
include_news_tags:
|
||||||
|
type: toggle
|
||||||
|
label: PLUGIN_SITEMAP.INCLUDE_NEWS_TAGS
|
||||||
|
help: PLUGIN_SITEMAP.INCLUDE_NEWS_TAGS_HELP
|
||||||
|
highlight: 1
|
||||||
|
default: 0
|
||||||
|
options:
|
||||||
|
1: PLUGIN_ADMIN.ENABLED
|
||||||
|
0: PLUGIN_ADMIN.DISABLED
|
||||||
|
validate:
|
||||||
|
type: bool
|
||||||
|
|
||||||
|
standalone_sitemap_news:
|
||||||
|
type: toggle
|
||||||
|
label: PLUGIN_SITEMAP.STANDALONE_SITEMAP_NEWS
|
||||||
|
help: PLUGIN_SITEMAP.STANDALONE_SITEMAP_NEWS_HELP
|
||||||
|
highlight: 1
|
||||||
|
default: 0
|
||||||
|
options:
|
||||||
|
1: PLUGIN_ADMIN.ENABLED
|
||||||
|
0: PLUGIN_ADMIN.DISABLED
|
||||||
|
validate:
|
||||||
|
type: bool
|
||||||
|
|
||||||
|
sitemap_news_path:
|
||||||
type: text
|
type: text
|
||||||
label: PLUGIN_SITEMAP.LOCATION
|
size: medium
|
||||||
placeholder: "/not-a-grav-url"
|
label: PLUGIN_SITEMAP.SITEMAP_NEWS_PATH
|
||||||
.lastmod:
|
help: PLUGIN_SITEMAP.SITEMAP_NEWS_PATH_HELP
|
||||||
type: text
|
|
||||||
label: PLUGIN_SITEMAP.LASTMOD
|
news_max_age_days:
|
||||||
placeholder: "2017-04-06"
|
type: number
|
||||||
.changefreq:
|
default: 2
|
||||||
|
size: x-small
|
||||||
|
label: PLUGIN_SITEMAP.NEWS_MAX_AGE_DAYS
|
||||||
|
append: Days
|
||||||
|
validate:
|
||||||
|
type: int
|
||||||
|
|
||||||
|
news_enabled_paths:
|
||||||
|
type: array
|
||||||
|
label: PLUGIN_SITEMAP.NEWS_TAG_PATHS
|
||||||
|
value_only: true
|
||||||
|
placeholder_value: '/news'
|
||||||
|
|
||||||
|
data_section:
|
||||||
|
type: section
|
||||||
|
title: Sitemap Data
|
||||||
|
underline: true
|
||||||
|
fields:
|
||||||
|
|
||||||
|
date_type:
|
||||||
type: select
|
type: select
|
||||||
|
label: PLUGIN_SITEMAP.DATE_TYPE
|
||||||
|
default: page_date
|
||||||
|
size: medium
|
||||||
|
options:
|
||||||
|
page_date: PLUGIN_SITEMAP.DATE_TYPE_PAGE_DATE
|
||||||
|
last_modified: PLUGIN_SITEMAP.DATE_TYPE_LAST_MODIFIED
|
||||||
|
|
||||||
|
include_changefreq:
|
||||||
|
type: toggle
|
||||||
|
label: PLUGIN_SITEMAP.INCLUDE_CHANGEFREQ
|
||||||
|
help: PLUGIN_SITEMAP.INCLUDE_CHANGEFREQ_HELP
|
||||||
|
highlight: 1
|
||||||
|
default: 0
|
||||||
|
options:
|
||||||
|
1: PLUGIN_ADMIN.ENABLED
|
||||||
|
0: PLUGIN_ADMIN.DISABLED
|
||||||
|
validate:
|
||||||
|
type: bool
|
||||||
|
|
||||||
|
changefreq:
|
||||||
|
type: select
|
||||||
|
size: medium
|
||||||
label: PLUGIN_SITEMAP.CHANGEFREQ
|
label: PLUGIN_SITEMAP.CHANGEFREQ
|
||||||
default: ''
|
default: ''
|
||||||
options:
|
options:
|
||||||
|
@ -206,9 +210,23 @@ form:
|
||||||
monthly: PLUGIN_SITEMAP.CHANGEFREQ_MONTHLY
|
monthly: PLUGIN_SITEMAP.CHANGEFREQ_MONTHLY
|
||||||
yearly: PLUGIN_SITEMAP.CHANGEFREQ_YEARLY
|
yearly: PLUGIN_SITEMAP.CHANGEFREQ_YEARLY
|
||||||
never: PLUGIN_SITEMAP.CHANGEFREQ_NEVER
|
never: PLUGIN_SITEMAP.CHANGEFREQ_NEVER
|
||||||
.priority:
|
|
||||||
|
include_priority:
|
||||||
|
type: toggle
|
||||||
|
label: PLUGIN_SITEMAP.INCLUDE_PRIORITY
|
||||||
|
help: PLUGIN_SITEMAP.INCLUDE_PRIORITY_HELP
|
||||||
|
highlight: 1
|
||||||
|
default: 0
|
||||||
|
options:
|
||||||
|
1: PLUGIN_ADMIN.ENABLED
|
||||||
|
0: PLUGIN_ADMIN.DISABLED
|
||||||
|
validate:
|
||||||
|
type: bool
|
||||||
|
|
||||||
|
priority:
|
||||||
type: select
|
type: select
|
||||||
label: PLUGIN_SITEMAP.PRIORITY
|
label: PLUGIN_SITEMAP.PRIORITY
|
||||||
|
size: small
|
||||||
default: ''
|
default: ''
|
||||||
options:
|
options:
|
||||||
'': PLUGIN_SITEMAP.PRIORITY_USE_GLOBAL
|
'': PLUGIN_SITEMAP.PRIORITY_USE_GLOBAL
|
||||||
|
@ -224,3 +242,73 @@ form:
|
||||||
'1.0': 1.0
|
'1.0': 1.0
|
||||||
validate:
|
validate:
|
||||||
type: float
|
type: float
|
||||||
|
|
||||||
|
advanced_section:
|
||||||
|
type: section
|
||||||
|
title: Advanced Features
|
||||||
|
underline: true
|
||||||
|
fields:
|
||||||
|
|
||||||
|
additions:
|
||||||
|
type: list
|
||||||
|
label: PLUGIN_SITEMAP.ADDITIONS
|
||||||
|
help: PLUGIN_SITEMAP.ADDITIONS_HELP
|
||||||
|
|
||||||
|
fields:
|
||||||
|
.location:
|
||||||
|
type: text
|
||||||
|
label: PLUGIN_SITEMAP.LOCATION
|
||||||
|
placeholder: "/not-a-grav-url"
|
||||||
|
.lastmod:
|
||||||
|
type: text
|
||||||
|
label: PLUGIN_SITEMAP.LASTMOD
|
||||||
|
placeholder: "2017-04-06"
|
||||||
|
.changefreq:
|
||||||
|
type: select
|
||||||
|
label: PLUGIN_SITEMAP.CHANGEFREQ
|
||||||
|
default: ''
|
||||||
|
options:
|
||||||
|
'': PLUGIN_SITEMAP.CHANGEFREQ_DEFAULT
|
||||||
|
always: PLUGIN_SITEMAP.CHANGEFREQ_ALWAYS
|
||||||
|
hourly: PLUGIN_SITEMAP.CHANGEFREQ_HOURLY
|
||||||
|
daily: PLUGIN_SITEMAP.CHANGEFREQ_DAILY
|
||||||
|
weekly: PLUGIN_SITEMAP.CHANGEFREQ_WEEKLY
|
||||||
|
monthly: PLUGIN_SITEMAP.CHANGEFREQ_MONTHLY
|
||||||
|
yearly: PLUGIN_SITEMAP.CHANGEFREQ_YEARLY
|
||||||
|
never: PLUGIN_SITEMAP.CHANGEFREQ_NEVER
|
||||||
|
.priority:
|
||||||
|
type: select
|
||||||
|
label: PLUGIN_SITEMAP.PRIORITY
|
||||||
|
default: ''
|
||||||
|
options:
|
||||||
|
'': PLUGIN_SITEMAP.PRIORITY_USE_GLOBAL
|
||||||
|
'0.1': 0.1
|
||||||
|
'0.2': 0.2
|
||||||
|
'0.3': 0.3
|
||||||
|
'0.4': 0.4
|
||||||
|
'0.5': 0.5
|
||||||
|
'0.6': 0.6
|
||||||
|
'0.7': 0.7
|
||||||
|
'0.8': 0.8
|
||||||
|
'0.9': 0.9
|
||||||
|
'1.0': 1.0
|
||||||
|
validate:
|
||||||
|
type: float
|
||||||
|
|
||||||
|
urlset:
|
||||||
|
type: text
|
||||||
|
default: 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
||||||
|
label: PLUGIN_SITEMAP.URLSET
|
||||||
|
help: PLUGIN_SITEMAP.URLSET_HELP
|
||||||
|
|
||||||
|
urlimageset:
|
||||||
|
type: text
|
||||||
|
default: 'http://www.google.com/schemas/sitemap-image/1.1'
|
||||||
|
label: PLUGIN_SITEMAP.URLIMAGESET
|
||||||
|
help: PLUGIN_SITEMAP.URLIMAGESET_HELP
|
||||||
|
|
||||||
|
urlnewsset:
|
||||||
|
type: text
|
||||||
|
default: 'http://www.google.com/schemas/sitemap-news/0.9'
|
||||||
|
label: PLUGIN_SITEMAP.URLNEWSSET
|
||||||
|
help: PLUGIN_SITEMAP.URLNEWSSET_HELP
|
||||||
|
|
|
@ -14,6 +14,11 @@ class SitemapEntry
|
||||||
public $images;
|
public $images;
|
||||||
public $hreflangs = [];
|
public $hreflangs = [];
|
||||||
|
|
||||||
|
public int $timestamp;
|
||||||
|
public string $rawroute;
|
||||||
|
public string $longdate;
|
||||||
|
public string $shortdate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SitemapEntry constructor.
|
* SitemapEntry constructor.
|
||||||
*
|
*
|
||||||
|
@ -258,5 +263,44 @@ class SitemapEntry
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTimestamp(): int
|
||||||
|
{
|
||||||
|
return $this->timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTimestamp(int $timestamp): void
|
||||||
|
{
|
||||||
|
$this->timestamp = $timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRawroute(): string
|
||||||
|
{
|
||||||
|
return $this->rawroute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRawroute(string $rawroute): void
|
||||||
|
{
|
||||||
|
$this->rawroute = $rawroute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLongdate(): string
|
||||||
|
{
|
||||||
|
return $this->longdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLongdate(string $longdate): void
|
||||||
|
{
|
||||||
|
$this->longdate = $longdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortdate(): string
|
||||||
|
{
|
||||||
|
return $this->shortdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setShortdate(string $shortdate): void
|
||||||
|
{
|
||||||
|
$this->shortdate = $shortdate;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ en:
|
||||||
PRIORITY: 'Global - Sitemap Priority'
|
PRIORITY: 'Global - Sitemap Priority'
|
||||||
PRIORITY_USE_GLOBAL: 'Use Global (1)'
|
PRIORITY_USE_GLOBAL: 'Use Global (1)'
|
||||||
ROUTE: 'Route to Sitemap'
|
ROUTE: 'Route to Sitemap'
|
||||||
IGNORES: 'Ignore'
|
IGNORES: 'Ignore URLs'
|
||||||
IGNORES_HELP: 'URLs to ignore (You can ignore all children of a path by using regex and appending ".*" to the ignore path)'
|
IGNORES_HELP: 'URLs to ignore (You can ignore all children of a path by using regex and appending ".*" to the ignore path)'
|
||||||
ADDITIONS: 'Additional URLs'
|
ADDITIONS: 'Additional URLs'
|
||||||
ADDITIONS_HELP: 'Add external URLs to the sitemap'
|
ADDITIONS_HELP: 'Add external URLs to the sitemap'
|
||||||
|
@ -29,7 +29,14 @@ en:
|
||||||
IGNORE_REDIRECT: 'Ignore Redirect Pages'
|
IGNORE_REDIRECT: 'Ignore Redirect Pages'
|
||||||
IGNORE_REDIRECT_HELP: 'Ignores pages that have a custom "redirect" entry in the header'
|
IGNORE_REDIRECT_HELP: 'Ignores pages that have a custom "redirect" entry in the header'
|
||||||
URLSET: 'URLSet'
|
URLSET: 'URLSet'
|
||||||
URLSET_HELP: 'The URLSet XML Namespace, don''t change this!'
|
URLSET_HELP: 'The URLSet XML Namespace'
|
||||||
|
URLIMAGESET: 'URLImageSet'
|
||||||
|
URLIMAGESET_HELP: 'The URLImageSet XML Namespace,'
|
||||||
|
URLNEWSSET: 'URLNewsSet'
|
||||||
|
URLNEWSSET_HELP: 'The URLNewsSet XML Namespace'
|
||||||
|
INCLUDE_NEWS_TAGS: 'Include News Tags'
|
||||||
|
NEWS_MAX_AGE_DAYS: 'News Max Age (Days)'
|
||||||
|
NEWS_TAG_PATHS: 'News Enabled Paths'
|
||||||
MULTILANG_ENABLED: 'Multi-Lang Features'
|
MULTILANG_ENABLED: 'Multi-Lang Features'
|
||||||
MULTILANG_ENABLED_HELP: 'Enables support for multilanguage features'
|
MULTILANG_ENABLED_HELP: 'Enables support for multilanguage features'
|
||||||
INCLUDE_CHANGEFREQ: 'Include Change Frequency'
|
INCLUDE_CHANGEFREQ: 'Include Change Frequency'
|
||||||
|
@ -42,6 +49,15 @@ en:
|
||||||
TITLE_TITLE: 'Title'
|
TITLE_TITLE: 'Title'
|
||||||
TITLE_LASTMOD: 'Last Modified'
|
TITLE_LASTMOD: 'Last Modified'
|
||||||
UNTITLED: 'Untitled'
|
UNTITLED: 'Untitled'
|
||||||
|
XSL_TRANSFORM: 'XSL Transform'
|
||||||
|
XSL_TRANSFORM_HELP: 'Use XSL stylesheets to transform the XML output when viewing in a browser'
|
||||||
|
DATE_TYPE: 'Date Type'
|
||||||
|
DATE_TYPE_PAGE_DATE: 'Page Date'
|
||||||
|
DATE_TYPE_LAST_MODIFIED: 'Last Modified'
|
||||||
|
STANDALONE_SITEMAP_NEWS: 'Standalone News URLs'
|
||||||
|
STANDALONE_SITEMAP_NEWS_HELP: 'Create a standalone sitemap-news.xml file for each news-enabled path'
|
||||||
|
SITEMAP_NEWS_PATH: 'Sitemap News Path'
|
||||||
|
SITEMAP_NEWS_PATH_HELP: 'The path to the Sitemap News file'
|
||||||
ru:
|
ru:
|
||||||
PLUGIN_SITEMAP:
|
PLUGIN_SITEMAP:
|
||||||
SITEMAP: 'Карта сайта'
|
SITEMAP: 'Карта сайта'
|
||||||
|
|
115
plugins/sitemap/sitemap-news.xsl
Normal file
115
plugins/sitemap/sitemap-news.xsl
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
<xsl:stylesheet version="2.0"
|
||||||
|
xmlns:html="http://www.w3.org/TR/REC-html40"
|
||||||
|
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
|
||||||
|
xmlns:s="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||||
|
xmlns:n="http://www.google.com/schemas/sitemap-news/0.9"
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||||
|
<xsl:template match="/">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="robots" content="noindex"/>
|
||||||
|
<title>
|
||||||
|
XML Sitemap
|
||||||
|
</title>
|
||||||
|
<style type="text/css">
|
||||||
|
@import url('//cdn.jsdelivr.net/pure/0.6.0/base-min.css');
|
||||||
|
@import url('//cdn.jsdelivr.net/pure/0.6.0/pure-min.css');
|
||||||
|
@import url('//cdn.jsdelivr.net/pure/0.6.0/grids-responsive-min.css');
|
||||||
|
@import
|
||||||
|
url('//fonts.googleapis.com/css?family=Raleway:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic');
|
||||||
|
.font_smooth {
|
||||||
|
font-smooth: auto;
|
||||||
|
text-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
text-rendering: auto;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-text-size-adjust: 100%
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
font-smooth: auto;
|
||||||
|
text-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
text-rendering: auto;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
background-color: #fff
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: 'Raleway', sans-serif;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1.8em;
|
||||||
|
letter-spacing: 0;
|
||||||
|
text-align: left;
|
||||||
|
color: #333
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
overflow: auto;
|
||||||
|
padding: 20px
|
||||||
|
}
|
||||||
|
.clear {
|
||||||
|
clear: both;
|
||||||
|
float: none
|
||||||
|
}
|
||||||
|
a,
|
||||||
|
a:link,
|
||||||
|
a:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
border-bottom: dotted 1px #333;
|
||||||
|
color: #333
|
||||||
|
}
|
||||||
|
h1,h2,h3,h4,h5,h6 {
|
||||||
|
font-family: Raleway;
|
||||||
|
font-weight: 300;
|
||||||
|
line-height: 1.2em;
|
||||||
|
letter-spacing: 0px;
|
||||||
|
color: #000
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
border: solid 1px #cbcbcb !important;
|
||||||
|
text-align: center;
|
||||||
|
background: #fff
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table class="pure-table pure-table-striped" border="0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="5">News Sitemap</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th width="45%">loc</th>
|
||||||
|
<th width="35%">news:title</th>
|
||||||
|
<th width="20%">news:publication_date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tfoot>
|
||||||
|
</tfoot>
|
||||||
|
<tbody>
|
||||||
|
<xsl:for-each select="s:urlset/s:url">
|
||||||
|
<xsl:sort select="n:news/n:publication_date" order="descending" data-type="text"/>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<xsl:variable name="itemURL">
|
||||||
|
<xsl:value-of select="s:loc"/>
|
||||||
|
</xsl:variable>
|
||||||
|
<a href="{$itemURL}">
|
||||||
|
<xsl:value-of select="s:loc"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<xsl:value-of select="n:news/n:title"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat(substring(n:news/n:publication_date,0,11),concat(' ', substring(n:news/n:publication_date,12,5)))"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
|
@ -38,6 +38,8 @@ class SitemapPlugin extends Plugin
|
||||||
protected $ignore_protected = true;
|
protected $ignore_protected = true;
|
||||||
protected $ignore_redirect = true;
|
protected $ignore_redirect = true;
|
||||||
|
|
||||||
|
protected $news_route = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
|
@ -74,9 +76,19 @@ class SitemapPlugin extends Plugin
|
||||||
|
|
||||||
/** @var Uri $uri */
|
/** @var Uri $uri */
|
||||||
$uri = $this->grav['uri'];
|
$uri = $this->grav['uri'];
|
||||||
$route = $this->config->get('plugins.sitemap.route');
|
$route = $this->config()['route'];
|
||||||
|
$uri_route = $uri->route();
|
||||||
|
$news_page = false;
|
||||||
|
|
||||||
if ($route && $route == $uri->path()) {
|
if ($this->config()['include_news_tags'] &&
|
||||||
|
$this->config()['standalone_sitemap_news'] &&
|
||||||
|
Utils::endsWith($uri->uri(), $this->config()['sitemap_news_path']) &&
|
||||||
|
in_array(dirname($uri->route()), $this->config()['news_enabled_paths'])) {
|
||||||
|
$this->news_route = dirname($uri->route());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($route === $uri->route() || !empty($this->news_route)) {
|
||||||
|
|
||||||
$this->enable([
|
$this->enable([
|
||||||
'onTwigInitialized' => ['onTwigInitialized', 0],
|
'onTwigInitialized' => ['onTwigInitialized', 0],
|
||||||
|
@ -100,7 +112,7 @@ class SitemapPlugin extends Plugin
|
||||||
$pages = $this->grav['pages'];
|
$pages = $this->grav['pages'];
|
||||||
|
|
||||||
$cache_id = md5('sitemap-data-'.$pages->getPagesCacheId());
|
$cache_id = md5('sitemap-data-'.$pages->getPagesCacheId());
|
||||||
$this->sitemap = $cache->fetch($cache_id);
|
// $this->sitemap = $cache->fetch($cache_id);
|
||||||
|
|
||||||
if ($this->sitemap === false) {
|
if ($this->sitemap === false) {
|
||||||
$this->multilang_enabled = $this->config->get('plugins.sitemap.multilang_enabled');
|
$this->multilang_enabled = $this->config->get('plugins.sitemap.multilang_enabled');
|
||||||
|
@ -110,6 +122,7 @@ class SitemapPlugin extends Plugin
|
||||||
$default_lang = $language->getDefault() ?: 'en';
|
$default_lang = $language->getDefault() ?: 'en';
|
||||||
$active_lang = $language->getActive() ?? $default_lang;
|
$active_lang = $language->getActive() ?? $default_lang;
|
||||||
$languages = $this->multilang_enabled && $language->enabled() ? $language->getLanguages() : [$default_lang];
|
$languages = $this->multilang_enabled && $language->enabled() ? $language->getLanguages() : [$default_lang];
|
||||||
|
$include_default_lang = $this->config->get('system.languages.include_default_lang');
|
||||||
|
|
||||||
$this->multilang_skiplang_prefix = $this->config->get('system.languages.include_default_lang') ? '' : $language->getDefault();
|
$this->multilang_skiplang_prefix = $this->config->get('system.languages.include_default_lang') ? '' : $language->getDefault();
|
||||||
$this->multilang_include_fallbacks = $this->config->get('system.languages.pages_fallback_only') || !empty($this->config->get('system.languages.content_fallback'));
|
$this->multilang_include_fallbacks = $this->config->get('system.languages.pages_fallback_only') || !empty($this->config->get('system.languages.content_fallback'));
|
||||||
|
@ -148,7 +161,7 @@ class SitemapPlugin extends Plugin
|
||||||
if ($language->enabled()) {
|
if ($language->enabled()) {
|
||||||
foreach ($route_data as $l => $l_data) {
|
foreach ($route_data as $l => $l_data) {
|
||||||
$entry->addHreflangs(['hreflang' => $l, 'href' => $l_data['location']]);
|
$entry->addHreflangs(['hreflang' => $l, 'href' => $l_data['location']]);
|
||||||
if ($l == $default_lang) {
|
if ($include_default_lang === false && $l == $default_lang) {
|
||||||
$entry->addHreflangs(['hreflang' => 'x-default', 'href' => $l_data['location']]);
|
$entry->addHreflangs(['hreflang' => 'x-default', 'href' => $l_data['location']]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -176,10 +189,11 @@ class SitemapPlugin extends Plugin
|
||||||
{
|
{
|
||||||
$page = $event['page'] ?? null;
|
$page = $event['page'] ?? null;
|
||||||
$route = $this->config->get('plugins.sitemap.route');
|
$route = $this->config->get('plugins.sitemap.route');
|
||||||
|
$uri = $this->grav['uri'];
|
||||||
|
$html_support = $this->config->get('plugins.sitemap.html_support', false);
|
||||||
|
$extension = $this->grav['uri']->extension() ?? ($html_support ? 'html': 'xml');
|
||||||
|
|
||||||
if (is_null($page) || $page->route() !== $route) {
|
if (is_null($page) || $uri->route() === $route || !empty($this->news_route)) {
|
||||||
$html_support = $this->config->get('plugins.sitemap.html_support', false);
|
|
||||||
$extension = $this->grav['uri']->extension() ?? ($html_support ? 'html': 'xml');
|
|
||||||
|
|
||||||
// set a dummy page
|
// set a dummy page
|
||||||
$page = new Page;
|
$page = new Page;
|
||||||
|
@ -188,7 +202,16 @@ class SitemapPlugin extends Plugin
|
||||||
unset($this->grav['page']);
|
unset($this->grav['page']);
|
||||||
$this->grav['page'] = $page;
|
$this->grav['page'] = $page;
|
||||||
$twig = $this->grav['twig'];
|
$twig = $this->grav['twig'];
|
||||||
$twig->template = "sitemap.$extension.twig";
|
|
||||||
|
if (!empty($this->news_route)) {
|
||||||
|
$header = $page->header();
|
||||||
|
$header->sitemap['news_route'] = $this->news_route;
|
||||||
|
$page->header($header);
|
||||||
|
$twig->template = "sitemap-news.$extension.twig";
|
||||||
|
} else {
|
||||||
|
$twig->template = "sitemap.$extension.twig";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,6 +221,9 @@ class SitemapPlugin extends Plugin
|
||||||
$this->grav['twig']->twig()->addFunction(
|
$this->grav['twig']->twig()->addFunction(
|
||||||
new TwigFunction('sort_sitemap_entries_by_language', [$this, 'sortSitemapEntriesByLanguage'])
|
new TwigFunction('sort_sitemap_entries_by_language', [$this, 'sortSitemapEntriesByLanguage'])
|
||||||
);
|
);
|
||||||
|
$this->grav['twig']->twig()->addFunction(
|
||||||
|
new TwigFunction('timestamp_within_days', [$this, 'timestampWithinDays'])
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -255,6 +281,13 @@ class SitemapPlugin extends Plugin
|
||||||
return $entries;
|
return $entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function timestampWithinDays(int $timestamp, int $days): bool
|
||||||
|
{
|
||||||
|
$now = time();
|
||||||
|
$days_ago = $now - ($days * 24 * 60 * 60);
|
||||||
|
return $timestamp >= $days_ago;
|
||||||
|
}
|
||||||
|
|
||||||
protected function addRouteData($pages, $lang)
|
protected function addRouteData($pages, $lang)
|
||||||
{
|
{
|
||||||
$routes = array_unique($pages->routes());
|
$routes = array_unique($pages->routes());
|
||||||
|
@ -264,6 +297,7 @@ class SitemapPlugin extends Plugin
|
||||||
/** @var PageInterface $page */
|
/** @var PageInterface $page */
|
||||||
$page = $pages->get($path);
|
$page = $pages->get($path);
|
||||||
|
|
||||||
|
$rawroute = $page->rawRoute();
|
||||||
$header = $page->header();
|
$header = $page->header();
|
||||||
$external_url = $this->ignore_external ? isset($header->external_url) : false;
|
$external_url = $this->ignore_external ? isset($header->external_url) : false;
|
||||||
$protected_page = $this->ignore_protected ? isset($header->access) : false;
|
$protected_page = $this->ignore_protected ? isset($header->access) : false;
|
||||||
|
@ -285,6 +319,10 @@ class SitemapPlugin extends Plugin
|
||||||
'translated' => in_array($lang, $page_languages),
|
'translated' => in_array($lang, $page_languages),
|
||||||
'location' => $location,
|
'location' => $location,
|
||||||
'lastmod' => date($this->datetime_format, $page->modified()),
|
'lastmod' => date($this->datetime_format, $page->modified()),
|
||||||
|
'longdate' => date('Y-m-d\TH:i:sP', $page->date()),
|
||||||
|
'shortdate' => date('Y-m-d', $page->date()),
|
||||||
|
'timestamp' => $page->date(),
|
||||||
|
'rawroute' => $page->rawRoute(),
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->include_change_freq) {
|
if ($this->include_change_freq) {
|
||||||
|
@ -310,7 +348,7 @@ class SitemapPlugin extends Plugin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->route_data[$route][$lang] = $lang_route;
|
$this->route_data[$rawroute][$lang] = $lang_route;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,19 @@ route: '/sitemap'
|
||||||
ignore_external: true
|
ignore_external: true
|
||||||
ignore_protected: true
|
ignore_protected: true
|
||||||
ignore_redirect: true
|
ignore_redirect: true
|
||||||
|
include_news_tags: false
|
||||||
|
standalone_sitemap_news: false
|
||||||
|
sitemap_news_path: '/sitemap-news.xml'
|
||||||
|
news_max_age_days: 2
|
||||||
|
news_enabled_paths:
|
||||||
|
- /blog
|
||||||
ignores:
|
ignores:
|
||||||
whitelist:
|
whitelist:
|
||||||
|
xsl_transform: true
|
||||||
html_support: false
|
html_support: false
|
||||||
urlset: 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
urlset: 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
||||||
|
urlnewsset: 'http://www.google.com/schemas/sitemap-news/0.9'
|
||||||
|
urlimageset: 'http://www.google.com/schemas/sitemap-image/1.1'
|
||||||
short_date_format: true
|
short_date_format: true
|
||||||
include_changefreq: true
|
include_changefreq: true
|
||||||
changefreq: daily
|
changefreq: daily
|
||||||
|
|
17
plugins/sitemap/templates/sitemap-extensions/image.xml.twig
Normal file
17
plugins/sitemap/templates/sitemap-extensions/image.xml.twig
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<image:image>
|
||||||
|
{% if image.loc %}
|
||||||
|
<image:loc>{{ url(image.loc, true) }}</image:loc>
|
||||||
|
{% endif %}
|
||||||
|
{% if image.caption %}
|
||||||
|
<image:caption>{{ image.caption }}</image:caption>
|
||||||
|
{% endif %}
|
||||||
|
{% if image.geoloc %}
|
||||||
|
<image:geo_location>{{ image.geoloc }}</image:geo_location>
|
||||||
|
{% endif %}
|
||||||
|
{% if image.title %}
|
||||||
|
<image:title>{{ image.title }}</image:title>
|
||||||
|
{% endif %}
|
||||||
|
{% if image.license %}
|
||||||
|
<image:license>{{ image.license }}</image:license>
|
||||||
|
{% endif %}
|
||||||
|
</image:image>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<news:news>
|
||||||
|
<news:publication>
|
||||||
|
<news:name>{{ site.title }}</news:name>
|
||||||
|
<news:language>{{ entry.lang }}</news:language>
|
||||||
|
</news:publication>
|
||||||
|
<news:publication_date>{{ entry.longdate }}</news:publication_date>
|
||||||
|
<news:title>{{ entry.title }}</news:title>
|
||||||
|
</news:news>
|
19
plugins/sitemap/templates/sitemap-news.xml.twig
Normal file
19
plugins/sitemap/templates/sitemap-news.xml.twig
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{% set sitemap_config = page.header.sitemap %}
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
{% if config.plugins.sitemap.xsl_transform %}
|
||||||
|
<?xml-stylesheet type="text/xsl" href="{{ uri.rootUrl }}/user/plugins/sitemap/sitemap-news.xsl"?>
|
||||||
|
{% endif %}
|
||||||
|
<urlset
|
||||||
|
xmlns="{{ config.plugins.sitemap.urlset }}"
|
||||||
|
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:news="{{ config.plugins.sitemap.urlnewsset }}">
|
||||||
|
{% for entry in sitemap %}
|
||||||
|
{% if timestamp_within_days(entry.timestamp, config.plugin.sitemap.news_max_age_days|default(2)) and
|
||||||
|
entry.rawroute|starts_with(sitemap_config.news_route ~ '/') %}
|
||||||
|
<url>
|
||||||
|
<loc>{{ entry.location|e }}</loc>
|
||||||
|
{% include 'sitemap-extensions/news.xml.twig' %}
|
||||||
|
</url>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</urlset>
|
|
@ -1,11 +1,24 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
{% if config.plugins.sitemap.xsl_transform %}
|
||||||
<?xml-stylesheet type="text/xsl" href="{{ uri.rootUrl }}/user/plugins/sitemap/sitemap.xsl"?>
|
<?xml-stylesheet type="text/xsl" href="{{ uri.rootUrl }}/user/plugins/sitemap/sitemap.xsl"?>
|
||||||
<urlset xmlns="{{ config.plugins.sitemap.urlset }}"
|
{% endif %}
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
<urlset
|
||||||
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
|
xmlns="{{ config.plugins.sitemap.urlset }}"
|
||||||
|
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:image="{{ config.plugins.sitemap.urlimageset }}"
|
||||||
|
{% if config.plugins.sitemap.include_news_tags %}
|
||||||
|
xmlns:news="{{ config.plugins.sitemap.urlnewsset }}"
|
||||||
|
{% endif %}>
|
||||||
{% for entry in sitemap %}
|
{% for entry in sitemap %}
|
||||||
<url>
|
<url>
|
||||||
<loc>{{ entry.location|e }}</loc>
|
<loc>{{ entry.location|e }}</loc>
|
||||||
|
{% if config.plugins.sitemap.include_news_tags and
|
||||||
|
config.plugins.sitemap.standalone_sitemap_news == false and
|
||||||
|
timestamp_within_days(entry.timestamp, config.plugin.sitemap.news_max_age_days|default(2)) and
|
||||||
|
entry.rawroute|starts_with(config.plugins.sitemap.news_enabled_paths)
|
||||||
|
%}
|
||||||
|
{% include 'sitemap-extensions/news.xml.twig' %}
|
||||||
|
{% endif %}
|
||||||
{% for hreflang in entry.hreflangs %}
|
{% for hreflang in entry.hreflangs %}
|
||||||
<xhtml:link rel="alternate" hreflang="{{ hreflang.hreflang }}" href="{{ hreflang.href }}" />
|
<xhtml:link rel="alternate" hreflang="{{ hreflang.hreflang }}" href="{{ hreflang.href }}" />
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -19,23 +32,7 @@
|
||||||
<priority>{{ entry.priority|number_format(1) }}</priority>
|
<priority>{{ entry.priority|number_format(1) }}</priority>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% for image in entry.images %}
|
{% for image in entry.images %}
|
||||||
<image:image>
|
{% include 'sitemap-extensions/image.xml.twig' %}
|
||||||
{% if image.loc %}
|
|
||||||
<image:loc>{{ url(image.loc, true) }}</image:loc>
|
|
||||||
{% endif %}
|
|
||||||
{% if image.caption %}
|
|
||||||
<image:caption>{{ image.caption }}</image:caption>
|
|
||||||
{% endif %}
|
|
||||||
{% if image.geoloc %}
|
|
||||||
<image:geo_location>{{ image.geoloc }}</image:geo_location>
|
|
||||||
{% endif %}
|
|
||||||
{% if image.title %}
|
|
||||||
<image:title>{{ image.title }}</image:title>
|
|
||||||
{% endif %}
|
|
||||||
{% if image.license %}
|
|
||||||
<image:license>{{ image.license }}</image:license>
|
|
||||||
{% endif %}
|
|
||||||
</image:image>
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</url>
|
</url>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -10,12 +10,12 @@ body#layout .nav-collapse,.no-image,.pagenavi .pages,#navbar,.date-header,.feed-
|
||||||
body#layout #content {float:left;width:600px;margin-left:30px}
|
body#layout #content {float:left;width:600px;margin-left:30px}
|
||||||
body#layout #side-bar {float:right;width:300px;}
|
body#layout #side-bar {float:right;width:300px;}
|
||||||
#column1,#column2,#column3 {float:left}
|
#column1,#column2,#column3 {float:left}
|
||||||
body,.body-fauxcolumn-outer{font-family: "Gotham";background:#E9F0F4;font-size:18px;font-weight:400;line-height:1.75;overflow-x:hidden;position:relative; line-height: 25px;
|
body,.body-fauxcolumn-outer{font-family: "Arial";background:#E9F0F4;font-size:18px;font-weight:400;line-height:1.75;overflow-x:hidden;position:relative; line-height: 25px;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
color: #6d7683;}
|
color: #6d7683;}
|
||||||
a{color:#333}
|
a{color:#333}
|
||||||
a:hover{color:#E74C3C}
|
a:hover{color:#E74C3C}
|
||||||
h1,h2,h3,h4,h5{font-family:"Gotham";}
|
h1,h2,h3,h4,h5{font-family:"Arial";}
|
||||||
.bl_background{position:fixed;z-index:-1;width:100%;height:100%;left:0;top:0}
|
.bl_background{position:fixed;z-index:-1;width:100%;height:100%;left:0;top:0}
|
||||||
.bl_background img{width:100%;height:100%}
|
.bl_background img{width:100%;height:100%}
|
||||||
#background_pattern{background-repeat:repeat;height:100%;left:0;position:fixed;top:0;width:100%;z-index:-1}
|
#background_pattern{background-repeat:repeat;height:100%;left:0;position:fixed;top:0;width:100%;z-index:-1}
|
||||||
|
|
Loading…
Reference in a new issue