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

Вывод маленького изображения фотоальбома в спецблоке "Анонс фотоальбома"

02.06.11 16:56

Рассмотрим возможность вывода маленького изображения фотоальбома в спецблоке "Анонс фотоальбома" для организации привью альбомов на сайте. По умолчанию в шаблоне photoalbum.tpl в сете small_row стоит переменная ##cat_detail##, которая выводит только название альбома. 

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

В СТП «Амиро» по данному поводу ответили:

Стандартными способами получить адрес до изображения категории фотоальбома - невозможно.

Варианты решений:

1. Использовать переменную названия категории:
В шаблоне photoalbum.tpl, в сете var="small_row" получать изображение категории исходя из названия категории, т.е.:
<IMG src=_mod_files/ce_images/photoalbum/##cat_sublink##.jpg>
Но в этом случае название изображения должно соответствовать названию категории.

2. Использовать плагины - разработка плагина, который бы получал изображение категории и добавлял его на необходимую страницу/нужный сет.


Первый вариант не подходит в силу того, что он сложный для пользователя при обновлении. А стало быть пишем плагин!

Вариант для Amiro.CMS версии 5.10.x

<?php
// ---------------------------------------------------------------------------
// Version: 0.2 $ 01.03.2011
// ---------------------------------------------------------------------------

//
// INIT SYSTEM OBJECTS
// ---------------------------------------------------------------------------
require_once("cm_ini.php");  // for $Core and $db objects
// ---------------------------------------------------------------------------
$res = "";
$sublink = (isset($_GET['sublink']) && $_GET['sublink'] ) ? trim($_GET['sublink']) : false;
// ---------------------------------------------------------------------------
$oResponse = AMI_Response::getInstance();
$oResponse->start();
// ---------------------------------------------------------------------------
$modId = 'photoalbum_cat';

// GET MODEL
// ---------------------------------------------------------------------------
$oPhotoalbumModelList = AMI::getResourceModel($modId . '/table')->getList();


// INITIALIZE AND LOAD MODEL
// ---------------------------------------------------------------------------
$oPhotoalbumModelList
  ->addColumns(array('ext_small_picture'))
  ->addWhereDef('AND ' . $oPhotoalbumModelList->getFieldName('public') . ' = 1')
  ->addWhereDef('AND ' . $oPhotoalbumModelList->getFieldName('lang') . " = 'ru'")
  ->addWhereDef('AND ' . $oPhotoalbumModelList->getFieldName('sublink') . " = '". $sublink ."'")
  ->setLimitParameters(0, 1)
  ->load();

foreach($oPhotoalbumModelList as $oPhotoalbumModelItem)
{
    if ($res = $oPhotoalbumModelItem->ext_small_picture)
    {
        $_name = @array_pop(@explode("/", $res));
        if ($_ext = strtolower(@array_pop(@explode(".", $_name))))
        {
            @header("Location:". $res . "\n");
            exit;
        }

        // DISABLE CACHE
        // ---------------------------------------------------------------------------
        @header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
        @header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
        @header("Cache-Control: post-check=0, pre-check=0", false);
        @header("Pragma: no-cache"); // HTTP/1.0
    }
}

// *************
// Show items list end
// *************
$oResponse->write($res);
$oResponse->send();

?>

Вот и все. В этом примере мы находим URL до требуемого изображения в БД сайта и перенаправляем на картинку.

Вариант для Amiro.CMS версии 5.12.x

<?php
// ---------------------------------------------------------------------------
// Version: 0.3 $ Wed Jun 15 21:09:49 NOVST 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 = "";
$small_picture = 'ext_img_small';
$modId = 'photoalbum_cat';
$sublink = (isset($_GET['sublink']) && $_GET['sublink'] ) ? trim($_GET['sublink']) : false;
// ---------------------------------------------------------------------------

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

// ---------------------------------------------------------------------------
AMI::initModExtensions($modId);
// ---------------------------------------------------------------------------

// GET MODEL
// ---------------------------------------------------------------------------
$oPhotoalbumModelList = AMI::getResourceModel($modId . '/table')->getList();

// INITIALIZE AND LOAD MODEL
// ---------------------------------------------------------------------------
$oPhotoalbumModelList
  ->addColumns(array($small_picture))
  ->addWhereDef('AND ' . $oPhotoalbumModelList->getFieldName('public') . "='1'")
  ->addWhereDef('AND ' . $oPhotoalbumModelList->getFieldName('lang') . "='ru'")
  ->addWhereDef('AND ' . $oPhotoalbumModelList->getFieldName('sublink') . "='". $sublink ."'")
  ->setLimitParameters(0, 1)
  ->load(1);

foreach($oPhotoalbumModelList as $oPhotoalbumModelItem)
{
    if ($res = $oPhotoalbumModelItem->$small_picture)
    {
        $_name = @array_pop(@explode("/", $res));
        if ($_ext = strtolower(@array_pop(@explode(".", $_name))))
        {
            @header("Location:". $res . "\n");
            exit;
        }

        // DISABLE CACHE
        // ---------------------------------------------------------------------------
        @header("HTTP/1.1 404 Not Found");
        @header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
        @header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
        @header("Cache-Control: post-check=0, pre-check=0", false);
        @header("Pragma: no-cache"); // HTTP/1.0
    }
}

// *************
// Show items list end
// *************
$oResponse->write($res);
$oResponse->send();

?>

В варианте для версии 5.12.x пришлось отдельно использовать метод, инициализирующий поля расширений:

AMI::initModExtensions($modId);

http://manual.amiro.ru/docs/api6/Service/AMI.html#methodinitModExtensions

Ну естественно нужно убедиться, что для модуля категорий фотоальбома включено расширение изображений.



Рубрики: Amiro.CMS 5.12.0.4 Подсказали Инструкция PHPкодим 5.10.x


« Делаем свою капчу или о том, как использовать капчу в плагине  | В начало |  Замена стандартного alert() на более современный »



При перепечатке, копировании материалов с сайта прямая и активная ссылка, разрешенная для индексации поисковыми роботами, на источник 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