cop2000 Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 Доброго дня всем!Недавно переделал по советам с этого форума отзывы на карточке товара с возможностью через админку отвечать на отзыв (официальный ответ) ну и при этом уведомление на почту автору уходит.Промучался но всё работает, все довольны )Но тут стал вопрос о создании отдельной (статической) страницы отзывов...Под конкретным товаром всё работает а как чтобы все отзывы с ответами на отдельной странице ?Есть у меня на серваке по наследству шаблон review.tpl {* Страница отдельной записи блога *} <div class="product-box"> <!-- Заголовок /--> <h1>Гостевая книга</h1> <!-- Комментарии --> <h2>Отзывы</h2> {if $comments} <!-- Список с комментариями --> <div class="div_review"> <table class="otzivu"> <tr> <td width="60px">Имя:</td> <td> <strong class="rewiew_nime">{$comment->name|escape}</strong></td> </tr> <tr> <td>Город:</td> <td><strong>{$comment->sity|escape}</strong></td> </tr> <tr> <td>Дата:</td> <td><font class="date_review">{$comment->date|date}</font></td> </tr> </table> {if !$comment->approved} <div class="comment_header"> <p>Ожидает модерации...</p> </div> {/if} <p><strong>Сообщение:</strong></p> <p>{$comment->text|escape|nl2br}}</p> <hr /> {/foreach} </div> {else} <p> Пока нет комментариев </p> {/if} <!--Форма отправления комментария--> <!--Подключаем js-проверку формы --> <script src="/js/baloon/js/default.js" language="JavaScript" type="text/javascript"></script> <script src="/js/baloon/js/validate.js" language="JavaScript" type="text/javascript"></script> <script src="/js/baloon/js/baloon.js" language="JavaScript" type="text/javascript"></script> <link href="/js/baloon/css/baloon.css" rel="stylesheet" type="text/css" /> <div class="write"> <div class="heading" id="review_title"> <h2>Оставить отзыв</h2> </div> <div class="div_review_write"> <div id="results"></div> <form class="comment_form" method="post"> <p><strong><font style="color: #F00;">*</font>Ваше имя:</strong><br/> <input class="input_name" type="text" id="comment_name" name="name" size="50" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/><br /></p> <p><strong><font style="color: #F00;">*</font>E-mail:</strong><br/> <input class="input_name" type="text" id="comment_mail" name="mail" size="50" value="{$comment_mail}" data-format=".+" data-notice="Введите E-mail"/><br /></p> <p><strong><font style="color: #F00;">*</font>Город:</strong><br/> <input class="input_name" type="text" id="comment_sity" name="sity" size="50" value="{$comment_sity}" data-format=".+" data-notice="Введите город"/><br /></p> <p><textarea class="comment_textarea" id="comment_text" cols="114" rows="10" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea></p> <p> </p> <table width="370px"> <tr> <td width="150px"> <font style="color: #F00;">*</font> Защитный код: </td> <td> <strong>Введите код с изображения:</strong> </td> </tr> <tr> <td> <img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/> </td> <td> <input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/> <div class="capcha-text"> Если вы не можете прочитать код с изображения, кликните на изображение для генерации нового кода. </div> </td> </tr> </table> <div class="prod-otz"> <input class="button" type="submit" name="comment" value="Осавить отзыв" /> </div> </form> </div> </div> <!--Форма отправления комментария (The End)--> <!-- Комментарии (The End) --> </div> {*Выводим левое меню*} <div class="left-menu"> <p class="brends-glava">Разделы</p> <div id="catalog_menu"> {include file='razdel_menu.tpl'} </div> </div> <div class="clear"></div> по идее это шаблон вывода всех комментариевума не приложу как его использовать при выводе конкретной статической страницы (Отзывы) ?Помогите плиз если есть у кого немного времени или натолкните на правильный путь...запутался я что-тоЗаранее спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
cop2000 Опубликовано 16 марта, 2014 Автор Жалоба Поделиться Опубликовано 16 марта, 2014 огласи плиз в ЛС цену за свою помощь Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 http://forum.simplacms.ru/topic/5705-%D0%BE%D1%82%D0%B2%D0%B5%D1%82-%D0%BD%D0%B0-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9-%D1%81-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D1%83/ Цитата Ссылка на сообщение Поделиться на другие сайты
cop2000 Опубликовано 16 марта, 2014 Автор Жалоба Поделиться Опубликовано 16 марта, 2014 http://forum.simplacms.ru/topic/5705-%D0%BE%D1%82%D0%B2%D0%B5%D1%82-%D0%BD%D0%B0-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9-%D1%81-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D1%83/я это всё реализовално здесь идёт речь о карточке товараа мне бы всё это выкинуть в отдельную страницу... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 я это всё реализовал но здесь идёт речь о карточке товара а мне бы всё это выкинуть в отдельную страницу...По аналогии с главной view/MainView.php и design/default/main.tpl, код для вывода возьмите в view/ProductsView.php т добавьте в свой view/?View.php и т.д. Цитата Ссылка на сообщение Поделиться на другие сайты
cop2000 Опубликовано 16 марта, 2014 Автор Жалоба Поделиться Опубликовано 16 марта, 2014 вроде сделалвыводит мой tpl по ссылкено комментарии не отображает не подскажете косяк где именно в коде tpl {* Страница отдельной записи блога *} <div class="product-box"> <!-- Заголовок /--> <h1>Гостевая книга</h1> <!-- Комментарии --> <h2>Отзывы</h2> <div id="read"> {foreach $comments as $comment} <table class="otzivu" > <tr> <td width="60px">Имя:</td> <td> <strong class="rewiew_nime">{$comment->name|escape}</strong></td> </tr> <tr> <td>Город:</td> <td><strong>{$comment->sity|escape}</strong></td> </tr> <tr> <td>Дата:</td> <td><font class="date_review">{$comment->date|date}</font></td> </tr> </table> {if !$comment->approved} <div class="comment_header"> <p>Ожидает модерации...</p> </div> {else} <div> <p><strong>Сообщение:</strong></p> <p>{$comment->text|escape|nl2br}</p></div> {if $comment->otvet} <br><div class="admotv"> <p style="color:black; margin-left:60px;"><strong>Интернет-магазина "ПростоДар":</strong></p> <p style="color:black; margin-left:60px; margin-right:10px;">{$comment->otvet|escape|nl2br}</p><br></div>{/if} {/if} <hr /> {/foreach} </div> <div class="write"> <div class="heading" id="review_title"> <h2>Оставить отзыв</h2> </div> <div class="div_review_write"> <div id="results"></div> <form class="comment_form" method="post"> <p><strong><font style="color: #F00;">*</font>Ваше имя:</strong><br/> <input class="input_name" type="text" id="comment_name" name="name" size="50" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/><br /></p> <p><strong><font style="color: #F00;">*</font>E-mail:</strong><br/> <input class="input_name" type="text" id="comment_mail" name="mail" size="50" value="{$comment_mail}" data-format=".+" data-notice="Введите E-mail"/><br /></p> <p><strong><font style="color: #F00;">*</font>Город:</strong><br/> <input class="input_name" type="text" id="comment_sity" name="sity" size="50" value="{$comment_sity}" data-format=".+" data-notice="Введите город"/><br /></p> <p><textarea class="comment_textarea" id="comment_text" cols="114" rows="10" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea></p> <p> </p> <table width="370px"> <tr> <td width="150px"> <font style="color: #F00;">*</font> Защитный код: </td> <td> <strong>Введите код с изображения:</strong> </td> </tr> <tr> <td> <img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/> </td> <td> <input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/> <div class="capcha-text"> Если вы не можете прочитать код с изображения, кликните на изображение для генерации нового кода. </div> </td> </tr> </table> <div class="prod-otz"> <input class="button" type="submit" name="comment" value="Оставить отзыв" /> </div> </form> </div> </div> </div> код брал из product.tpl там работает тут не только не отображает комментарии но и не записывает новые...они отправляются куда в неизвестном направлении в базе их нет Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 Ну а вы свой View в папке view создали? Допустим ReviewsView.php, и поместите туда код выборки комментариев из файла View/ProductsView.php. Цитата Ссылка на сообщение Поделиться на другие сайты
cop2000 Опубликовано 16 марта, 2014 Автор Жалоба Поделиться Опубликовано 16 марта, 2014 ну вывод коментариев на карточке товара View/ProductView.phpтам всё танцуется от урла товаранаверно не особо корректно я из этого вью пытаюсь выдернуть код который касается комментов...вот весь ProductView.php equire_once('View.php'); class ProductView extends View { function fetch() { $product_url = $this->request->get('product_url', 'string'); if(empty($product_url)) return false; // Выбираем товар из базы $product = $this->products->get_product((string)$product_url); if(empty($product) || (!$product->visible && empty($_SESSION['admin']))) return false; $product->images = $this->products->get_images(array('product_id'=>$product->id)); $product->image = &$product->images[0]; $variants = array(); foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) $variants[$v->id] = $v; $product->variants = $variants; // Вариант по умолчанию if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id])) $product->variant = $variants[$v_id]; else $product->variant = reset($variants); $product->features = $this->features->get_product_options(array('product_id'=>$product->id)); // Автозаполнение имени для формы комментария if(!empty($this->user)) $this->design->assign('comment_name', $this->user->name); // Принимаем комментарий if ($this->request->method('post') && $this->request->post('comment')) { $comment->name = $this->request->post('name'); $comment->mail = $this->request->post('mail'); $comment->sity = $this->request->post('sity'); $comment->text = $this->request->post('text'); $captcha_code = $this->request->post('captcha_code', 'string'); // Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму $this->design->assign('comment_text', $comment->text); $this->design->assign('comment_mail', $comment->mail); $this->design->assign('comment_sity', $comment->sity); $this->design->assign('comment_name', $comment->name); // Проверяем капчу и заполнение формы if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code)) { $this->design->assign('error', 'captcha'); } elseif (empty($comment->name)) { $this->design->assign('error', 'empty_name'); } elseif (empty($comment->text)) { $this->design->assign('error', 'empty_comment'); } else { // Создаем комментарий $comment->object_id = $product->id; $comment->type = 'product'; $comment->ip = $_SERVER['REMOTE_ADDR']; // Если были одобренные комментарии от текущего ip, одобряем сразу $this->db->query("SELECT 1 FROM __comments WHERE approved=1 AND ip=? LIMIT 1", $comment->ip); if($this->db->num_rows()>0) $comment->approved = 1; // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); // Отправляем email $this->notify->email_comment_admin($comment_id); // Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую unset($_SESSION['captcha_code']); header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id); } } // Комментарии к товару $comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR'])); $this->design->assign('comments', $comments); // Связанные товары $related_ids = array(); $related_products = array(); foreach($this->products->get_related_products($product->id) as $p) { $related_ids[] = $p->related_id; $related_products[$p->related_id] = null; } if(!empty($related_ids)) { foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p) $related_products[$p->id] = $p; $related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products))); foreach($related_products_images as $related_product_image) if(isset($related_products[$related_product_image->product_id])) $related_products[$related_product_image->product_id]->images[] = $related_product_image; $related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'instock'=>true)); foreach($related_products_variants as $related_product_variant) { if(isset($related_products[$related_product_variant->product_id])) { $related_products[$related_product_variant->product_id]->variants[] = $related_product_variant; } } foreach($related_products as $id=>$r) { if(is_object($r)) { $r->image = &$r->images[0]; $r->variant = &$r->variants[0]; } else { unset($related_products[$id]); } } $this->design->assign('related_products', $related_products); } // Отзывы о товаре $comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR'])); // Соседние товары $this->design->assign('next_product', $this->products->get_next_product($product->id)); $this->design->assign('prev_product', $this->products->get_prev_product($product->id)); // И передаем его в шаблон $this->design->assign('product', $product); $this->design->assign('comments', $comments); // Категория и бренд товара $product->categories = $this->categories->get_categories(array('product_id'=>$product->id)); $this->design->assign('brand', $this->brands->get_brand(intval($product->brand_id))); $this->design->assign('category', reset($product->categories)); // Добавление в историю просмотров товаров $max_visited_products = 100; // Максимальное число хранимых товаров в истории $expire = time()+60*60*24*30; // Время жизни - 30 дней if(!empty($_COOKIE['browsed_products'])) { $browsed_products = explode(',', $_COOKIE['browsed_products']); // Удалим текущий товар, если он был if(($exists = array_search($product->id, $browsed_products)) !== false) unset($browsed_products[$exists]); } // Добавим текущий товар $browsed_products[] = $product->id; $cookie_val = implode(',', array_slice($browsed_products, -$max_visited_products, $max_visited_products)); setcookie("browsed_products", $cookie_val, $expire, "/"); $canonical_url = "/products/$product_url"; $this->design->assign('meta_title', $product->meta_title); $this->design->assign('meta_keywords', $product->meta_keywords); $this->design->assign('meta_description', $product->meta_description); $this->design->assign('canonical_url', $canonical_url); return $this->design->fetch('product.tpl'); } } Цитата Ссылка на сообщение Поделиться на другие сайты
cop2000 Опубликовано 16 марта, 2014 Автор Жалоба Поделиться Опубликовано 16 марта, 2014 Ура! Спасибо всем! Комменты вывел!Отзывы отправляются!Последний вопрос!Как к этому всему добавить пагинацию через шаблон?а то комментов много и они сплошным рулоном... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.