Форумы / National / Russian / Модули и плагины / [Plugin] Pagelist

<<<12345>>>

Build customized page list widgets

foxhound
#16 17.01.2014 21:53

Ok, thanks for confirming that Kort. Than I will have to adjust my idea a bit ;)

Added 1 year later:

Currently I am trying to add the ratings to the pagelist plugin. I am doing that cause I want to be able to sort pages in a nice list on its rating.
I think I am nearly there cause all tags are already available (which I can see by using ?tpl_debug=1) but the plugin is currently showing an error.
But first let me show what I did:
I have copied the pagelist.comments.loop and changed it to the following: 

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=pagelist.loop
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

global $cfg;

if ($cfg['plugin']['pagelist']['ratings'] && cot_plugin_active('ratings'))
{
	$rowe_urlp = empty($row['page_alias']) ? array('c' => $row['page_cat'], 'id' => $row['page_id']) : array('c' => $row['page_cat'], 'al' => $row['page_alias']);
	$t->assign(array(
		'PAGE_ROW_RATINGS' => cot_ratings_display('page', $rowe_urlp, 'page', $row['page_id'], $c, $row),
		'PAGE_ROW_RATINGS_AVARAGE' => cot_ratings_display('page', $row['page_id'], $row)
	));
}

?>

I named it pagelist.ratings.loop.php.

Than I copied the 
pagelist.comments.query and changed it to the following: 

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=pagelist.query
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

global $cfg;

if ($cfg['plugin']['pagelist']['ratings'] && cot_plugin_active('ratings'))
{
	global $db_ratings;

	require_once cot_incfile('ratings', 'plug');

	$cns_join_columns .= ", (SELECT COUNT(*) FROM `$db_ratings` WHERE rating_area = 'page' AND rating_code = p.page_id) AS rating_average";
}

?>

I named this pagelist.ratings.query.php.


I am sure I did something wrong but not sure what cause now I get this error:
D:\Dropbox\Xampp\htdocs\new_armaholic\plugins\ratings\inc\ratings.functions.php on line 196

I am not sure if the joincolums SQL is correct or maybe the error is somewhere else and hope someone here can help me to get this working.

<img src="http://www.armaholic.com/datas/thumbs/green-sea-battalion-uniforms-version-03-preview_4.jpg" alt="green-sea-battalion-uniforms-version-03-" />
Отредактировано: foxhound (08.06.2015 12:54, 8 лет назад)
Anonymous
#17 26.01.2017 02:11
$pagination - имя параметра паджинации (опционально, например pld – убедитесь в отсутствии конфликтов одинаковых имен!)

Если ставлю FALSE или оставляю параметр пустым то паджинация работает не корректно. Перечень с номерами страниц не перелистываются при переходе на следующую страницу. На старой "сборке" такого нет.

Kort
#18 27.01.2017 08:54

Как именно вызывается функция? Только что проверял:

{PHP|pagelist('pagelist', 10, '', '', 'articles')}

и

{PHP|pagelist('pagelist', 10, '', '', 'articles', '', '', true, 'ppp')}

И там и там паджинация работает, тестировал и с главной и с внутряков. В первом случае ссылки паджинации дефолтные http://site.by/?pld=5, во втором пользовательские: http://site.by/about?ppp=2

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Отредактировано: Kort (27.01.2017 13:24, 7 лет назад)
Kopusha
#19 28.02.2017 00:54

Не будет работать {PHP|pagelist('pagelist','4','page_count DESC','page_rating > "0"', '', 'system;archives','news;events','TRUE', 'pld')} ???

Kort
#20 28.02.2017 10:47

Почему нет? Будет! Единственный момент: одновременно whitelist и blacklist не будут работать. Это бессмысленно ))

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Yusupov
#21 28.02.2017 12:11

Чет никак найти не могу, где у нас поле page_rating обновляется? И обновляется ли он вообще?

Kort
#22 28.02.2017 12:32

Да, такого поля уже нет )) Плагин рейтингов пишет в собственные таблицы

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#23 28.02.2017 12:54

Не выводит {PHP|pagelist('pagelist','4','page_rating DESC','page_count > "0"', '', 'system;archives','','TRUE', 'pld')} как надо. С рейтингом ноль первая с рейтингом 6 вторая.

При этом  ничего не меняется в порядке 
 

{PHP|pagelist('pagelist','4','page_rating ASC')}
{PHP|pagelist('pagelist','4','page_rating DESC')}

 

 

Kort
#24 28.02.2017 13:11

По аналогии с заголовками экстраполей: где-то что-то делаешь не так. Без доступа ничем не помогу. Проверь тип поля, посмотри в phpmyadmin что там, отсортируй в нем же. Чудес не бывает.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#25 28.02.2017 13:13

Дима, правильно?

Еще провожусь, интерсно самому понять где я олень. 

Yusupov
#26 28.02.2017 13:16

Не работает потому, что поле page_rating в таблице $db_pages у всех записей по нулям. Ибо значение рейтинга не считается и не записывается в это поле.

Добавлено 5 минут спустя:

По идее должен помочь такой хак через хук):

Создать в плагине ratings файл: ratings.page.ratings.send.done.php

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=ratings.send.done
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

if($area == 'page')
{
    global $db_page;

    $db->update($db_page, array('page_rating' => $ratingnewaverage), "page_id=" . $code);
}

 

Отредактировано: Yusupov (28.02.2017 13:22, 7 лет назад)
Kort
#27 28.02.2017 13:24

Поле ж вроде бы создано и заполнено. Как -- другой вопрос ))

По решению: я бы вынес это в отдельный плагин с указанным хуком.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Отредактировано: Kort (28.02.2017 13:39, 7 лет назад)
Kopusha
#28 28.02.2017 13:46

Зачем отдельно. Есть рейтинги, Есть желание отсортировать страницы По рейтингу, фактически прямое назначение модуля. Это не какие-то посторонние редко встречающиеся желания,  Просто поправить и сделать новую версию. 

Added 41 minutes later:

#42712 Yusupov:

Не работает потому, что поле page_rating в таблице $db_pages у всех записей по нулям. Ибо значение рейтинга не считается и не записывается в это поле.

Добавлено 5 минут спустя:

По идее должен помочь такой хак через хук):

Создать в плагине ratings файл: ratings.page.ratings.send.done.php

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=ratings.send.done
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

if($area == 'page')
{
    global $db_page;

    $db->update($db_page, array('page_rating' => $ratingnewaverage), "page_id=" . $code);
}

 

Пробую - дошел до такого -     $db->update($db_pages, array('page_rating' => $ratings_average), "page_id=" . $code);

 Не помогло. А вот такое - вроде бы работает.     $db->update($db_pages, array('page_rating' => $ratingnewaverage), "page_id=" . $code);

 

Почему "ratingnewaverage"??? Если переменная выше - ratings_average???

Отредактировано: Kopusha (28.02.2017 14:29, 7 лет назад)
Yusupov
#29 28.02.2017 14:30
if($area == 'page')
{
    global $db_pages;

    $db->update($db_pages, array('page_rating' => $ratingnewaverage), "page_id=" . $code);
}

 

Kopusha
#30 28.02.2017 14:55

Да да, так работает великолепно! Я просто не понял почему и окуда выскочило "ratingnewaverage" 

<<<12345>>>