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

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

не как не могу в статью комментарий вкинуть...читал тут все дискуссии но толком никто ничего не предложил и ответа не нашел...я создал по аналогу таблицу в бд для отзывов по примеру отзывов к товару,вот мой код, что не так?

Articles.class.php


**********************************************************************************************************************


require_once('Widget.class.php');


class Articles extends Widget
{
/**
*
* Конструктор
*
*/
function Articles(&$parent)
{
Widget::Widget($parent);
}

/**
*
* Отображение
*
*/
function fetch()
{
// Какую статью нужно вывести?
$article_url = $this->url_filtered_param('article_url');

if (!empty($article_url))
{
// Если передан id статьи, выводим ее
return $this->fetch_item($article_url);
}
else
{
// Если нет, выводим список всех новостей
return $this->fetch_list();
}
}

/**
*
* Отображение списка статей
*
*/
function fetch_list()
{
// Выбираем статьи из базы
$this->db->query('SELECT * FROM articles WHERE enabled=1 ORDER BY order_num DESC');
$articles = $this->db->results();

// Передаем в шаблон
$this->smarty->assign('articles', $articles);
$this->body = $this->smarty->fetch('articles.tpl');

// Устанавливаем метатеги для списка (если он вызван как голый модуль)
$this->title = 'Статьи';

return $this->body;
}

/**
*
* Отображение отдельной статьи
*
*/
function fetch_item($url)
{
// Выбираем статью из базы
$query = sql_placeholder('SELECT * FROM articles WHERE url = ? AND enabled=1 LIMIT 1', $url);
$this->db->query($query);

// Если не существует такая статья - ошибка 404
if ($this->db->num_rows() == 0)
{
return false;
}

$item = $this->db->result();

// Устанавливаем метатеги для страницы с этой новостью
$this->title = $item->meta_title;
$this->keywords = $item->meta_keywords;
$this->description = $item->meta_description;

// Передаем в шаблон
$this->smarty->assign('article', $item);

$this->body = $this->smarty->fetch('article.tpl');
return $this->body;

### Принимает отзыв
if (isset($_POST['comment']))
{
$name = trim(strip_tags($_POST['name']));
$comment = trim(strip_tags($_POST['comment']));
if ($this->gd_loaded && ($_SESSION['captcha_code'] != $_POST['captcha_code'] || empty($_POST['captcha_code'])))
{
$this->error = 'Неверно введено число с картинки';
}
elseif (empty($name))
{
$this->error = 'Введите имя';
}
elseif (empty($comment))
{
$this->error = 'Пустой комментарий';
}
else
{
$query = sql_placeholder("INSERT INTO articles_comments (date, article_id, ip, name, comment) VALUES(NOW(), ?, ?, ?, ?)", $article->article_id, $_SERVER['REMOTE_ADDR'], $name, $comment);
$this->db->query($query);
}
// Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
unset($_SESSION['captcha_code']);

if($this->error)
{
$this->smarty->assign('name', $name);
$this->smarty->assign('comment', $comment);
}
}
###

$this->title = $article->meta_title;
$this->keywords = $article->meta_keywords;
$this->description = $article->meta_description;

// Отзывы о товаре
$query = sql_placeholder("SELECT *, DATE_FORMAT(date, '%d.%m.%Y') as date FROM articles_comments WHERE article_id=? ORDER BY comment_id DESC", $article->article_id);
$this->db->query($query);
$comments = $this->db->results();

$this->smarty->assign('comments', $comments);
$this->smarty->assign('error', $this->error);
$this->body = $this->smarty->fetch('article.tpl');
return $this->body;
}
}
*********************************************************************************************************************

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

и вот код статьи и отзыва к ней...точнее ее часть


*********************************************************************************************************************


<!-- Комментарии к статье /-->
<div id="comments">
<a name=comments></a>

<!-- Список каментов /-->
<h2>Отзывы об этой статье</h2>
{if $comments}
{foreach from=$comments item=c}

<!-- Отдельный камент /-->
<div class="comment_pack">
<p><span class="comment_name">{$c->name|escape}</span> <span class="comment_date">{$c->date|escape}</span></p>
<p class="comment_text" tooltip=comment comment_id={$c->comment_id}>{$c->comment|escape|nl2br}</p>
</div>
<!-- Отдельный камент #End /-->

{/foreach}
{else}
Пока нет ни одного отзыва
{/if}
<!-- Список каментов #End /-->

<h2>Оставить свой отзыв</h2>

{if $error}
<div id="error_block"><p>{$error}</p></div>
{/if}


<!-- Форма отзыва /-->
<form action='{$smarty.server.REQUEST_URI}#comments' method=post>

<!-- Текст камента /-->
<p><textarea class="comment_textarea" format='.+' notice='Введите комментарий' name=comment>{$comment|escape}</textarea></p>
<!-- Имя комментатора /-->
<p class="comment_username">Ваше имя
<input type="text" class="comment_username" name=name value="{$name|escape}" format='.+' notice='Введите имя' />
</p>

<!-- Капча /-->
{if $gd_loaded}
<div class="captcha">
<img src="captcha/image.php?t={math equation='rand(10,10000)'}" alt=""/>
<p>Число:</p>
<p><input type="text" name=captcha_code format='.+' notice='Введите число с картинки' /></p>
</div>
{/if}

<p><input type="submit" value="Отправить" class="comment_submit"/></p>
</form>
<!-- Форма отзыва #End /-->

</div>
<!-- Комментарии к статье #End /-->


**********************************************************************************************************************

где я протупил или что не так сделал?

П.С. за ранее спасибо...

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

fetch_item - корявенько написано, разбираться далее
> return $this->body;
не стал, ибо функция в этот момент закончила работу, и все дальнейшие потуги с обработкой пост запросов и коментами банально не выполнились.

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

чет не понял... дело в том, что я даже вывести не могу даже вывести статьи.В базу ручками занес тестовую статью, но она не выводиться. есть какие нибудь идеи? может кто нить реализовал подобное.Я просто в смарти слаб(даже очень слаб), но есть стремление решить вопрос.

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

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

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

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

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

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

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

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

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

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