Рассмотрим возможность вывода маленького изображения фотоальбома в
спецблоке "Анонс фотоальбома" для организации привью альбомов на сайте.
По умолчанию в шаблоне 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 Ну естественно нужно убедиться, что для модуля категорий фотоальбома включено расширение изображений.
|