Forumlar / National / Russian / Модули и плагины / Page Text by ID + i18n

Нужна помощь

Дмитрий
#42589 2017-01-18 19:52

Ну может кто-то под свои проекты модернизировал. Я сейчас программисту отдал плагин на доработку, если он сделает, то выложу сдесь обновленный.

А Pagelist у меня в проекте уже используется с интернационализацией и вполне успешно. Но для этой конкретной цели, он не очень подходит. Мне нужно дергать текст из 2х страниц в 2 отдельных блока на главной странице, а Pagelist работает с категориями, а не с id страницы.

Добавлено 14 часов спустя:

В общем получилось вот так. Плагин PageText by ID теперь работает с i18n. Код писал не я, так что на его идеальность не предендую)

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=global
[END_COT_EXT]
==================== */

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

require_once cot_incfile('page', 'module');

/**
 * Returns parsed page_text for a given page
 * @param int|string $pid Page ID or Alias
 * @return string
 */
function pagetextbyid($pid)
{
	global $db, $db_pages, $cfg, $last_pagetext;
	$last_pagetext = array();
	$last_pagetext['pid'] = $pid;
	
	if (is_numeric($pid)) {
		$last_pagetext['id'] = $id;
		$where_condition = 'p.page_id = '.((int)$pid);
	} else {
		$last_pagetext['alias'] = $pid;
		$where_condition = 'p.page_alias = "'.$db->quote($pid).'"';
	}
	
	// Add i18n features if installed
	if (cot_plugin_active('i18n'))
	{
		global $db_i18n_pages, $i18n_locale;
		$join_columns .= ' , i18n.ipage_text, i18n.ipage_title ';
		$join_tables .= ' LEFT JOIN '.$db_i18n_pages.' AS i18n ON i18n.ipage_id=p.page_id AND i18n.ipage_locale="'.$i18n_locale.'" AND i18n.ipage_id IS NOT NULL ';
	}
	
	$res = $db->query("SELECT p.page_id, p.page_alias, p.page_title, p.page_text, p.page_parser $join_columns
		FROM $db_pages AS p
		$join_tables
		WHERE $where_condition");

	if ($res->rowCount() > 0)
	{
		$row = $res->fetch();
		$row['page_text'] = ($row['ipage_text'] ?: $row['page_text']);
		$row['page_title'] = ($row['ipage_title'] ?: $row['page_title']);
		$last_pagetext['text'] = cot_parse($row['page_text'], $cfg['page']['markup'], $row['page_parser']);
		$last_pagetext['id'] = $row['page_id'];
		$last_pagetext['alias'] = $row['page_alias'];
		$last_pagetext['title'] = $row['page_title'];
		return $last_pagetext['text'];
	}
	else
	{
		return '';
	}
}

?>

З.Ы. Если кто ещё подскажет как им дергать не только поле text, а ещё и title, буду благодарен.

Bu gönderi Дмитрий tarafından düzenlendi (2017-01-19 10:34, 8 yıllar önce)