Google советует любой из трех вариантов:
ничего не делать;
настроить rel="canonical" со всех страниц пагинации, включая первую, на страницу со всеми товарами — pageall;
использовать атрибуты next, prev, чтобы показать связь между страницами пагинации (было актуально до марта 2019 года).
SEO-специалисты практикуют и другие методы:
закрывают от сканирования с помощью размещения либо запрещают к индексированию в файле robots.txt (при этом robots не является директивой).
на всех страницах пагинации указывают rel="canonical" на первую (основную) страницу.
Мое мнение это canonical на 1 страницу
Ведь при генерации этого файла для подписи я использую абсолютно произвольные данные
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="date=no">
<meta name="format-detection" content="address=no">
<meta name="format-detection" content="email=no">
const
, то всегда let
. Потому как let
используется в уникальном scope
. А вообще неплохо рассказано тут (в новой редакции).var
:{
var value = 1;
}
console.log(value); // 1
let
(const
):{
let value = 1;
}
console.log(value); // ReferenceError: value is not defined
if
.function dispatch<T>(key: DispatchKey<T>, value: DispatchValue<T>): void;
function dispatch<T>(keys: DispatchKey<T>[], iterator: (key: DispatchKey<T>) => DispatchValue<T>): void;
function dispatch<T>(
keyOrKeys: DispatchKey<T> | DispatchKey<T>[],
valueOrIterator: DispatchValue<T> | ((key: DispatchKey<T>) => DispatchValue<T>)
): void {
if (Array.isArray(keyOrKeys) && typeof valueOrIterator === 'function') {
setState((prev) => {
const updated = keyOrKeys.map((key) => valueOrIterator(key));
console.log(updated);
return prev;
});
} else {
setState((prev) => ({
...prev,
[keyOrKeys]: valueOrIterator,
}));
}
}
class MyJson
{
private array $data;
public function __construct(array $array)
{
$this->data = $array;
}
public function __call(string $name, array $arguments)
{
$action = substr($name, 0, 3);
$property = strtolower(substr($name, 3));
switch ($action) {
case 'get':
return $this->data[$property ] ?? null;
case 'set':
$this->data[$property] = $arguments[0];
break;
}
}
public function __set(string $name, $value)
{
$this->data[$name] = $value;
}
public function __get(string $name)
{
return array_key_exists($name, $this->data)) ? $this->data[$name] : null;
}
public function __isset($name): bool
{
return isset($this->data[$name]);
}
public function __unset($name): void
{
unset($this->data[$name]);
}
}
$json = new MyJson(json_decode($json, true));
echo $json->name;
$json->name = 'test';
echo $json->getName();
$json->setName('test2');
echo $json->name;