Нужна помощь
Дмитрий |
|
---|---|
Ребят, никто ещё не модернизировал плагины 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, буду благодарен. |
|
Отредактировано: Дмитрий (19.01.2017 10:34, 7 лет назад) |
Denisbox |
|
---|---|
Неправда ваша, pagelist очень даже может вывести отдельную страницу, правда не по ID а по алиас-у:
contact: fonts (at) otlab . ru
|
Дмитрий |
|
---|---|
#42590 Denisbox: И правда можно, что-то я упустил этот момент. Но в любом случае плагин PageText by ID уже модернизирован и для определенных моментов он более удобен, например когда нужно выдергнуть только текст, без использования шаблонов. Добавлено 5 часов спустя: UPD: кстати, с ID Pagelist тоже работает, я проверил. В таком случае он действительно удобен и о старых плагинах можно забыть.
|
|
Отредактировано: Дмитрий (19.01.2017 23:04, 7 лет назад) |