Заметки об Amiro.CMS

Получение тегов для элемента новостей

20.06.11 16:19

В списке новостей теги элементов не выводятся. Чтобы реализовать данную задачу для одного из проектов был написан простой плагин.

Внимание: Мы не претендуем на то, что способ, который здесь будет изложен, является оптимальным. Поэтому данный материал может служить только как справочное пособие.

Создаем в корне сайта файл с именем news_tags.php со следующим содержимым:

<?php
// ---------------------------------------------------------------------------
// Version: 0.1 $ 20.06.2011 for Amiro.CMS 5.12.0.4
// ---------------------------------------------------------------------------

//
// INIT SYSTEM OBJECTS
// ---------------------------------------------------------------------------
$AMI_ENV_SETTINGS = array(
    "response_type" => "JSON",
    "response_buffered" => "false",
);
require_once("ami_env.php");  // for $Core and $db objects
// ---------------------------------------------------------------------------

// ---------------------------------------------------------------------------
$res = "";
$search_field = 'ext_tags';
$modId = 'news';
$news_id = (isset($_GET['id']) && $_GET['id'] ) ? intval($_GET['id']) : false;
// ---------------------------------------------------------------------------

$oResponse = AMI_Response::getInstance();
$oResponse->start();

$res = AMI::getResourceModel('news/table')->getItem()->load($news_id)->$search_field;

if ($res)
{
    $oQuery = new DB_Query('cms_tags', 'i');
    $oQuery
        -> addField('id', 'i')
        -> addField('tag', 'i')
        -> addField('sublink', 'i')
        -> addOrder('id', 'asc')
        -> setWhereDef(" AND id IN (". $res .")");
    $oRS = AMI::getSingleton('db')->select($oQuery->get());
    $HTML_string = "";
    foreach($oRS as $aRecord) {
        $id = (isset($aRecord['id'])) ? intval($aRecord['id']) : false;
        $tag = (isset($aRecord['tag'])) ? trim($aRecord['tag']) : false;
        $sublink = (isset($aRecord['sublink'])) ? trim($aRecord['sublink']) : false;
        $HTML_string .= '<a href="/tags/'. $sublink .'">'. $tag .'</a>, ';
    }
    $HTML_result = "document.write('". substr(addslashes($HTML_string), 0, -2) ."');
    $oResponse->write($HTML_result);
    $oResponse->send();
}
exit;
?>

Полезные ссылки:

  1. The DB_Query class (Database Query Constructor). Конструктор запросов. В примере используется для построения SQL запроса к базе данных MySQL.
    » http://manual.amiro.ru/docs/api6/DB/DB_Query.html
  2. The AMI_DB class (Database API). API для "общения" с БД MySQL.
    » http://manual.amiro.ru/docs/api6/DB/AMI_DB.html
  3. The News_TableItem class (News module table item model). Непосредственно класс для работы с данными элемента модуля новости. В примере используется для получения списка ID  используемых тегов.
    » http://manual.amiro.ru/docs/api6/Module_News/Model/News_TableItem.html


Рубрики: Amiro.CMS 5.12.0.4 PHPкодим


« Настройка вывода дочерних элементов для карта раздела  | В начало |  Делаем свою капчу или о том, как использовать капчу в плагине »



При перепечатке, копировании материалов с сайта прямая и активная ссылка, разрешенная для индексации поисковыми роботами, на источник www.amirocmspro.ru обязательна!

Поиск по сайту

Loading

Облако тегов

5.10.x 5.12.0.4 5.14.x.x 6.0.x AMI AMI::getOption Amiro.CMS AMI_Registry AMI_RequestHTTP API CSS DBD MySQL DB_Query ErrorDocument getPluginOption HTML https INSERT jQuery modId mod_rewrite MySQL Perl PHP PHPкодим pluginId sm_tree.tpl SSL subs_send_single Tools



Купить Amiro CMS

Хотите купить платную редакцию Amiro.CMS? Напишите нам!




Почему коммерческие CMSПочему Amiro.CMSПоискПартнеры и друзьяКарта сайта
2010-2014 © AmiroCMSPro.ru | Amiro.CMS глазами администратора системы. - проект nsk21.ru
Лучший хостинг для сайтов на Амиро.CMS». Учебе время - потехе час!
Работает на Amiro CMS - Free