Тема: Как переопределить функцию

Здравствуйте!
Как можно переопределить в своем модуле функцию находящеюся в modules\catalog\model\orm ?

Повысить оценку Понизить оценку

2 Отредактировано Дмитрий (07.08.2015 09:20:04)

Re: Как переопределить функцию

Сергей пишет:

Здравствуйте!
Как можно переопределить в своем модуле функцию находящеюся в modules\catalog\model\orm ?

Тут об этом подробно написано:
http://readyscript.ru/text-blog/Kak-pra … adyScript/

Повысить оценку Понизить оценку

3 Отредактировано Александр (07.08.2015 12:27:55)

Re: Как переопределить функцию

Всё верно. Если нужен более конкретный пример, то напишите, какой именно Вас интересует момент.

4

Re: Как переопределить функцию

Более конкретно этот \modules\catalog\model\orm\dir.inc.php функцию getUrl.

Повысить оценку Понизить оценку

Re: Как переопределить функцию

Сделайте КОПИЮ файла с расширением .my.inc.php вместо .inc.php и спокойно правьте файл. Система подхватит именно Ваш файл.

\modules\catalog\model\orm\dir.my.inc.php

6

Re: Как переопределить функцию

Спасибо, с эти понял. А как переопределить функцию в своем модуле, не создавая подмены классов?

Повысить оценку Понизить оценку

7 Отредактировано Александр (11.08.2015 15:27:44)

Re: Как переопределить функцию

Переопределения самих функций в других классах нет, но у нас появятся behavior расширения классов, и тогда можно будет дописывать из своего модуля функции классам. Пока этого нет. У нас сейчас возможно расширять систему и с помощью хуков в системе. Ну или можно вызывать статическую публичную функцию из шаблона при помощи нашего static_call плагина к smarty, в ней уже реализовать Ваши действия и вернуть значения. Туда можно и передать Ваш класс выполнив с ним манипуляции. Вот ссылка.
Ну и вот несколько ссылок для разработки:
http://readyscript.ru/text-blog/Kak-soz … adyScript/
http://readyscript.ru/text-blog/block-c … adyscript/
http://readyscript.ru/text-blog/razraba … nyy-modul/
http://readyscript.ru/text-blog/Kak-pra … adyScript/

Также вот документация для разработчиков.

Если нужны более конкретны примеры спрашивайте.

8 Отредактировано Александр (12.08.2015 11:40:49)

Re: Как переопределить функцию

Подумал, что нужно привести пример использования static_call для вашего случая в шаблоне. Я думаю пригодится.
Допустим у Вас есть модуль с именем custom и есть класс Api для выполнения функций Ваших. Соответственно в папке /modules/custom/model/api.inc.php

В этом классе предположим будет функция myDirUrl, которая возвращает нужные Вам данные. Мы их присвоим в шаблоне переменной $moyaperemennaya

В саму функцию myDirUrl мы передадим переменную содержащуй объект категории ($dir например)

Тогда вызов метода будет выглядеть так:

{* Вызов static_call *}
{static_call var=moyaperemennaya callback['\Custom\Model\Api','myDirUrl'] params=[$dir]}
{* Вывод значения присвоенного функцией *}
{$moyaperemennaya}

Ну а в самом классе Api:

<?php
namespace Custom\Model;

class Api{


   /**
   * Наша функция
   *
   * @param \Catalog\Model\Orm\Dir $dir - объект категории из шаблона
   */
   public static function myDirUrl($dir){
        //Наши действия
        //
        //
        return $moeznachenie; //Вернём результат обратно в шаблон
   }

}