zemnoy Опубликовано 1 декабря, 2014 Жалоба Поделиться Опубликовано 1 декабря, 2014 Добрый вечер подскажите пожалуйста как прикрутить модуль обратной связи к любой странице? Цитата Ссылка на сообщение Поделиться на другие сайты
simplashop Опубликовано 1 декабря, 2014 Жалоба Поделиться Опубликовано 1 декабря, 2014 интересно, зачем это нужно?но можно попробовать такой вариант: переносите форму и вывод ошибок из файла feedback.tpl в нужный вам файл шаблона (для ТГ страниц - page.tpl)и переносите обработку формы из FeedbackView.php в IndexView.phpтогда страница контактов становится не нужной,а форму можно отправить с любой страницы. Цитата Ссылка на сообщение Поделиться на другие сайты
SimplaDev Опубликовано 1 декабря, 2014 Жалоба Поделиться Опубликовано 1 декабря, 2014 Если надо вывести форму обратной связи на парочке конкретных страниц (именно "страниц"), то можно обойтись малой кровью - просто в htaccess добавить строчку: RewriteRule ^нужная_страница/?$ index.php?module=FeedbackView [L,QSA] Цитата Ссылка на сообщение Поделиться на другие сайты
zemnoy Опубликовано 2 декабря, 2014 Автор Жалоба Поделиться Опубликовано 2 декабря, 2014 Куда впихнуть кусок кода? ереносите форму и вывод ошибок из файла 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; }} Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.