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

Перехват действий или запуск своего скрипта на любом этапе в Amiro.CMS

13.10.11 15:44

Возник вопрос , каким образом можно осуществить запуск кастом скрипта на заданном этапе оформления заказа, или как перехватывать события в Amiro.CMS?

Скажем, на последнем этапе оформления заказа в магазине нужно, чтобы был вызван наш собственный скрипт, получив через параметры всю информацию о заказе. И вставка JavaScript обработчика и/или использование фрейма для вызова скрипта не всегда верный вариант.

А в админке? Допустим администратор добавляет/удаляет или изменяет значение остатка у товара, и по выполнению этих шагов, так же требуется запуск нашего скрипта, который к примеру сообщит клиенту по email, что определенный товар появился на складе, или другое действие. Как быть здесь?

Есть ли другие способы, вызывать пользовательские скрипты PHP на определенные события на фронте и в админке Amiro CMS?

Если кратко, ответ: "Да! Есть!".

А детали?

В _local/ находятся два скрипта:

  • admin_functions.php
  • front_functions.php

В каждом их них есть функция

function CustomApplyVars(&$vObject, $cThread, &$aVars, $pageId = 0){

Эта функция вызывается соответственно на админской/фронтовой части в момент выполнения любого действия.

Мы можем добавить туда вызов своего обработчика, основываясь например на поступивших данных из $_REQUEST или входящие параметры самой функции, опытным путем определив нужный момент.

Следует помнить, что консультаций по поводу использования этих функций служба поддержки Amiro.CMS не оказывает. И все модификации выполняются на свой страх и риск.

Что такое $_REQUEST?

Собой $_REQUEST представляет массив, в котором содержится информация о текущей сессии пользователя, названия текущего и последнего посещенного модуля на сайте под управлением Amiro.CMS ну и адреса этих самых страниц. Кроме того есть "action", в котором можно получить информацию о текущем действии. Внутри функции доступны так же такие стандартные вещи, как глобальная переменная $_SERVER и другие.

Вот примерный вывод:

array(12) {
  ["action"]=>
  string(3) "add"
  ["__utma"]=>
  string(56) "153320552.1235075336.1314591270.1318317003.1318492099.14"
  ["__utmz"]=>
  string(96) "153320552.1318492099.14.10.utmcsr=amirocmsplugins.ru|utmccn=(referral)|utmcmd=referral|utmcct=/"
  ["vid"]=>
  string(32) "ce904336f5adc2e9f5bd76c99f6a6d94"
  ["user_session"]=>
  string(75) "o16.eshop_cart_count1.016.eshop_cart_total30.0%26nbsp%3B%D1%80%D1%83%D0%B1."
  ["hotlog"]=>
  string(1) "1"
  ["__utmc"]=>
  string(9) "153320552"
  ["__utmb"]=>
  string(25) "153320552.3.10.1318492099"
  ["uh_prev_mod"]=>
  string(5) "pages"
  ["uh_prev_url"]=>
  string(23) "http://www.amirocmspro.ru/"
  ["uh_curr_mod"]=>
  string(7) "members"
  ["uh_curr_url"]=>
  string(30) "http://www.amirocmspro.ru/profile"
}

Практическое применение?

И так суть использования проста: определяем, что пользователь находится на требуемой нам странице. Выполняем необходимые проверки и запускаем нужные нам действия (скрипты) или запрещаем выполнение стандартной операции Amiro.CMS путем редиректа или простым die() или exit().

А примеры?

На этом пока все.

p.s. Возникли вопросы - пишите! Нужна помощь - обращайтесь!

UPD от 2011-10-14:

Рекомендуем избегать недокументированные данные, для получения название текущего модуля лучше читать из реестра:
http://manual.amiro.ru/docs/api6/Environment/AMI_Registry.html

Для получения текущего модуля используейте AMI_Registry::get('page/modId')





Рубрики: Amiro.CMS Подсказали PHPкодим


« Amiro.CMS и работа через SSL (https)  | В начало |  Модальные окна в Amiro.CMS »



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