Обработка плейсхолдеров(тегов) в своём модуле

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
User avatar
Reanimator
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 09, 2013 9:12 am

Обработка плейсхолдеров(тегов) в своём модуле

Post by Reanimator »

Гуру данной цмски. Поможите.

Пишу модуль идентичный встроенному "модулю" "Блоки Контента", только с чуть более продвинутыми возможностями.

Встал вопрос, можно ли автоматом обрабатвать все плейсхолдеры, которые вставляются в контент блока.
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by guro »

Поясните, что в вашем понимании "плейсхолдеры"? И как вы их хотите обрабатывать?
User avatar
Reanimator
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 09, 2013 9:12 am

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by Reanimator »

плейсхолдеры = теги.

я хочу парсить теги других модулей.
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by guro »

Как в вашем модуле выводится шаблон?
User avatar
Reanimator
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 09, 2013 9:12 am

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by Reanimator »

Условно это код функции DoAction.

Code: Select all

function DoAction($action, $id, &$params, $returnid=-1) 
{
    switch ($action) 
    {
      case 'default':
      {
          .....
          $section_data = $this->fetchSectionFrontendData($params["name"]);
          $smarty->assign("sec_content", $section_data);
      }
      case ....
    }
    echo $smarty->fetch($this->GetFileResource($action.".tpl"));
}
Это содержимое файла default.tpl в папке templates:

Code: Select all

{eval var=$sec_content}
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by guro »

Понятно.
Я обычно не так делаю.
Я сохраняю шаблоны в БД

Code: Select all

$this->DeleteTemplate($tpl_name);
$this->SetTemplate($tpl_name, $template);
а на сайт вывожу вот так

Code: Select all

echo $this->ProcessTemplateFromDatabase($tpl_name);
При таком способе, внутри шаблона работают, и вызовы других модулей, и вызовы тегов пользователя, и блоки контента.
User avatar
Reanimator
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 09, 2013 9:12 am

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by Reanimator »

Спасибо. Действительно. Таким образом всё работает.
Интересно, с чем это связано?
User avatar
Reanimator
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 09, 2013 9:12 am

Re: Обработка плейсхолдеров(тегов) в своём модуле

Post by Reanimator »

Да. Точно. Спасибо.

Вот этот модуль) Можете пользоваться. Если есть какие-либо баги..пишите)

http://dev.cmsmadesimple.org/projects/sections

Модуль по своей сути отличается от глобальных блоков только тем, что можно выбрать станицы на которых блок будет виден или/и промежуток дат в которые блок будет показываться. Если честно, то этого очень часто не хватает, не понимаю почему до сих пор этот функционал не запилили в блоках контента... он вроде бы очевиден...))

Планирую также сделать группировку блоков по категориям.
Post Reply

Return to “Russian - русский”