Нужна помощь
| Дмитрий |
|
|---|---|
|
Ребят, никто ещё не модернизировал плагины PageText by ID или GetPageText на предмет поддержки i18n? Или может кто подскажет, как это сделать. Я как понимаю, это не сложно, но сам не обладаю азами програмирования на PHP. Посему прошу помощи в этом вопросе.
|
| Kort |
|
|---|---|
|
Вряд ли кто-то эти плагины будет модернизировать. Pagelist попробуйте, там есть поддержка i18n SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
| Дмитрий |
|
|---|---|
|
Ну может кто-то под свои проекты модернизировал. Я сейчас программисту отдал плагин на доработку, если он сделает, то выложу сдесь обновленный. А 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, буду благодарен.
This post was edited by Дмитрий (2017-01-19 10:34, 8 years ago)
|
| Denisbox |
|
|---|---|
|
Неправда ваша, pagelist очень даже может вывести отдельную страницу, правда не по ID а по алиас-у:
contact: fonts (at) otlab . ru
|
| Дмитрий |
|
|---|---|
#42590 Denisbox: И правда можно, что-то я упустил этот момент. Но в любом случае плагин PageText by ID уже модернизирован и для определенных моментов он более удобен, например когда нужно выдергнуть только текст, без использования шаблонов. Добавлено 5 часов спустя: UPD: кстати, с ID Pagelist тоже работает, я проверил. В таком случае он действительно удобен и о старых плагинах можно забыть.
This post was edited by Дмитрий (2017-01-19 23:04, 8 years ago)
|