Перейти к содержанию
Официальный форум поддержки Simpla

Как прикрутить модуль обратная связь к любой странице


Рекомендуемые сообщения

интересно, зачем это нужно?

но можно попробовать такой вариант:
 

переносите форму и вывод ошибок из файла feedback.tpl в нужный вам файл шаблона (для ТГ страниц - page.tpl)
и переносите обработку формы из FeedbackView.php в IndexView.php
тогда страница контактов становится не нужной,а форму можно отправить с любой страницы.


 

Ссылка на сообщение
Поделиться на другие сайты

Если надо вывести форму обратной связи на парочке конкретных страниц (именно "страниц"), то можно обойтись малой кровью - просто в htaccess добавить строчку:

 

RewriteRule ^нужная_страница/?$    index.php?module=FeedbackView  [L,QSA]
 
Ссылка на сообщение
Поделиться на другие сайты

Куда впихнуть кусок кода? 

 

ереносите форму и вывод ошибок из файла feedback.tpl в нужный вам файл шаблона (для ТГ страниц - page.tpl)
и переносите обработку формы из FeedbackView.php в IndexView.php
тогда страница контактов становится не нужной,а форму можно отправить с любой страницы.

Пробую сайт ложится!

 

Вот Это не работает!

Если надо вывести форму обратной связи на парочке конкретных страниц (именно "страниц"), то можно обойтись малой кровью - просто в htaccess добавить строчку:

 

RewriteRule ^нужная_страница/?$    index.php?module=FeedbackView  [L,QSA]
 

 

 

ВОТ Фитбэк!

FEEDBACK
 
<?PHP
 
/**
 * Simpla CMS
 *
 * @copyright  2011 Denis Pikusov
 * @link   http://simp.la
 * @author   Denis Pikusov
 *
 * Отображение статей на сайте
 * Этот класс использует шаблоны articles.tpl и article.tpl
 *
 */
 
require_once('View.php');
 
class FeedbackView extends View
{
 function fetch()
 {
  if($this->request->method('post') && $this->request->post('feedback'))
  {
   $feedback->name         = $this->request->post('name');
   $feedback->email        = $this->request->post('email');
   $feedback->message      = $this->request->post('message');
   $captcha_code           = $this->request->post('captcha_code');
   
   $this->design->assign('name',  $feedback->name);
   $this->design->assign('email', $feedback->email);
   $this->design->assign('message', $feedback->message);
   
   if(empty($feedback->name))
    $this->design->assign('error', 'empty_name');
   elseif(empty($feedback->email))
    $this->design->assign('error', 'empty_email');
   elseif(empty($feedback->message))
    $this->design->assign('error', 'empty_text');
   elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
   {
    $this->design->assign('error', 'captcha');
   }
   else
   {
    $this->design->assign('message_sent', true);
    
    $feedback->ip = $_SERVER['REMOTE_ADDR'];
    $feedback_id = $this->feedbacks->add_feedback($feedback);
    
    // Отправляем email
    $this->notify->email_feedback_admin($feedback_id);    
    
    // Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
    unset($_SESSION['captcha_code']);
        
   }
   
   if(!empty($password))
   {
    $this->users->update_user($this->user->id, array('password'=>$password));
   }
 
  }
 
  if($this->page)
  {
   $this->design->assign('meta_title', $this->page->meta_title);
   $this->design->assign('meta_keywords', $this->page->meta_keywords);
   $this->design->assign('meta_description', $this->page->meta_description);
  }
 
  $body = $this->design->fetch('feedback.tpl');
  
  return $body;
 }
}
 
А ВОТ ИНДЕКС.
INDEX
<?PHP
 
/**
 * Simpla CMS
 *
 * @copyright  2011 Denis Pikusov
 * @link   http://simp.la
 * @author   Denis Pikusov
 *
 * Этот класс использует шаблон index.tpl,
 * который содержит всю страницу кроме центрального блока
 * По get-параметру module мы определяем что сожержится в центральном блоке
 *
 */
 
require_once('View.php');
 
class IndexView extends View
 public $modules_dir = 'view/';
 
 public function __construct()
 {
  parent::__construct();
 }
 
  
 /**
  *
  * Отображение
  *
  */
 function fetch()
 {
  // Содержимое корзины
  $this->design->assign('cart',  $this->cart->get_cart());
 
        // Категории товаров
  $this->design->assign('categories', $this->categories->get_categories_tree());
  
  // Страницы
  $pages = $this->pages->get_pages(array('visible'=>1));  
  $this->design->assign('pages', $pages);
       
  // Текущий модуль (для отображения центрального блока)
  $module = $this->request->get('module', 'string');
  $module = preg_replace("/[^A-Za-z0-9]+/", "", $module);
 
  // Если не задан - берем из настроек
  if(empty($module))
   return false;
  //$module = $this->settings->main_module;
 
  // Создаем соответствующий класс
  if (is_file($this->modules_dir."$module.php"))
  {
    include_once($this->modules_dir."$module.php");
    if (class_exists($module))
    {
     $this->main = new $module($this);
    } else return false;
  } else return false;
 
  // Создаем основной блок страницы
  if (!$content = $this->main->fetch())
  {
   return false;
  }  
 
  // Передаем основной блок в шаблон
  $this->design->assign('content', $content);  
  
  // Передаем название модуля в шаблон, это может пригодиться
  $this->design->assign('module', $module);
    
  // Создаем текущую обертку сайта (обычно index.tpl)
  $wrapper = $this->design->smarty->getTemplateVars('wrapper');
  if(is_null($wrapper))
   $wrapper = 'index.tpl';
   
  if(!empty($wrapper))
   return $this->body = $this->design->fetch($wrapper);
  else
   return $this->body = $content;
 
 }
}
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...