Page 1 of 3

Вывод общего количества мувиков (переменная)

Posted: Thu Feb 18, 2021 5:34 pm
by BTN
Добрый день.
Подскажите, пожалуйста, пробую реализовать вывод ссылок на сайтмапы:

Code: Select all

<?php $total_pages = ceil('<!--TOTAL_ITEMS-->'/5000); for ($i = 1; $i <= $total_pages; $i++) {?>
<sitemap>
    <loc>https://<?=$_SERVER['HTTP_HOST']?>/sitemap-index/<?=$i?>.xml</loc>
    <lastmod><?=date('c', strtotime('now'))?></lastmod>
</sitemap>
<?php } ?>
Но <!--TOTAL_ITEMS--> не выводит общее количество мувиков на сайте( соответственно и не работает разбиение на страницы сайтмапа. Приходится вписывать вручную общее количество.
Подскажите, какой переменной или каким способом можно вывести общее количество мувиков на сайте в темплейт?

Вот полный код темплейта для индекса сайтмапа.

Code: Select all

<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
    <loc>https://<?=$_SERVER['HTTP_HOST']?>/sitemap-tags.xml</loc>
    <lastmod><?=date('c', strtotime('now'))?></lastmod>
</sitemap>
<sitemap>
    <loc>https://<?=$_SERVER['HTTP_HOST']?>/sitemap-models.xml</loc>
    <lastmod><?=date('c', strtotime('now'))?></lastmod>
</sitemap>
<sitemap>
    <loc>https://<?=$_SERVER['HTTP_HOST']?>/sitemap-sponsors.xml</loc>
    <lastmod><?=date('c', strtotime('now'))?></lastmod>
</sitemap>
<?php $total_pages = ceil('<!--TOTAL_ITEMS-->'/5000); for ($i = 1; $i <= $total_pages; $i++) {?>
<sitemap>
    <loc>https://<?=$_SERVER['HTTP_HOST']?>/sitemap-index/<?=$i?>.xml</loc>
    <lastmod><?=date('c', strtotime('now'))?></lastmod>
</sitemap>
<?php } ?>
</sitemapindex>

Re: Вывод общего количества мувиков (переменная)

Posted: Thu Feb 18, 2021 5:48 pm
by admin
что б узнать общее кол-во в базе - надо их все посчитать
это операция длинная и грузит сервак

потому что б экономить ресурсы по дефолту - не считает
считает только если есть пагинация своя

в данном случае я бы вставил туда заведомо большое число и все

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 2:12 am
by btr
Как вариант, может кешировать TOTAL_ITEMS для sitemap или если заведомо указываем большее число, проверять страницы которые отдают 404 и не выводить их на индексной паге sitemap?

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 2:24 am
by btr
К sitemap не так уж часто поступают обращения, думаю если кешировать на сутки один запрос не сильно нагрузит.

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 8:00 am
by btr
решил накостылить своими силами, получаю общее количество так:

Code: Select all

<?php
require('./includes/config.php');
$conn = new redis();
try {
$conn->connect($config['redis_host'], $config['redis_port'], 5);
} catch (RedisException $e) {
die("Unable to connect to redis");
}
$result = $conn->get('total_active');
if (!empty($result)) {
$total = $result;
} else {
$mysqli = new mysqli($config["db_server"], $config["db_username"], $config["db_password"], $config["db_database"]);
if ($mysqli->connect_errno) {
echo "Error connect MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$res = $mysqli->query("SELECT COUNT(*) FROM rot_gallery_info WHERE gallery_status='active'");
$row = $res->fetch_assoc();
$conn->set('total_active', $row['COUNT(*)']);
$conn->expire('total_active', 86400);
$total = $row['COUNT(*)'];
}
?>
в темплейте делаю так:

Code: Select all

<?php
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n"; ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php $total_pages = ceil($total/3000); for ($i = 1; $i <= $total_pages; $i++) {?>
<sitemap>
<loc>https://<?=$_SERVER['HTTP_HOST']?>/sitemap-<?=$i?>.xml</loc>
<lastmod><?=date('c', strtotime('now'))?></lastmod>
</sitemap>
<?php } ?>
</sitemapindex>
так вот, если код получения общего количества использовать в php файле то все ок, а вот если все это запихать в темплейт, то вылетает ошибка:

Code: Select all

<br />
<b>Warning</b>:  Illegal string offset 'html' in <b>/home/admin/smarts/***.org/public_html/scj-***/tube/index.php</b> on line <b>967</b><br />
и ничего не работает.

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 8:22 am
by admin
Ошибка тк вы в своем коде переписываете $res \ $result
а эта переменная юзается в коде скрипта, простой вариант называть переменные типа $uservar_res

но в этом подсчете не учтено если категории или споны выключены и тп

простой вариант

https://smartcj.com/wiki/doku.php?id=ru ... pagination

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 8:52 am
by btr
С переменными решил, спасибо. С вариантом вашего подсчета что то не получается.
Во первых, в Custom Templates <!--TOTAL_ITEMS--> не обрабатывается, выводится как есть, во вторых в sitemap template если использовать ваш метод, выводится комментарий HTML и он ломает xml (((

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 9:03 am
by admin
в каком именно варианте не обрабатывает?

а если сделать коммент не html , а xml?

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 9:42 am
by btr
admin wrote: Fri Apr 23, 2021 9:03 am в каком именно варианте не обрабатывает?

а если сделать коммент не html , а xml?
1.

Code: Select all

<!-- <pagination>.</pagination> -->
<!--TOTAL_ITEMS--> 
вот это на странице выводится так:

Code: Select all

<!--  -->
<!--TOTAL_ITEMS-->
2. комменты вроде одинаковые что в html что в xml, верстку не ломает, первый раз я сам не правильно разместил комент.

Re: Вывод общего количества мувиков (переменная)

Posted: Fri Apr 23, 2021 9:48 am
by admin
делаем тестовый темпелйт

<thumb num=1-10> <!--GALLERY_ID--> </thumb>

<!-- <pagination >.</pagination> -->

<!--TOTAL_ITEMS-->


выводит?