Сайт разработчика Diafan.CMS

Вход на сайт

Добавляем информацию в описание товара

09 февраля 2013 г.

Необходимо было сделать шаблонный тег и встроить его в шаблон. Это довольно просто и подробно описано в документации.

Также необходимо создать описания серий в разделе Статьи. С этим справится даже контент менеджер и на этом мы останавливаться не будем.

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

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

Для этого потребовалось добавить следующий метод в файл nozhevilka.brtrs.ru/modules/clauses/clauses.php

public function show_like() {
 Customization::inc('modules/clauses/clauses.model.php');
  $model  = new Clauses_model($this->diafan);
  $result = $model->like();
  $this->diafan->_tpl->get('like', 'clauses', $result);
}

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

<insert name="show_like" module="clauses">

Осталось добавить обработчик. Для этого в файл nozhevilka.brtrs.ru/modules/clauses/clauses.model.php  добавлен следующий метод

public function like() {

    // проходим проверку на вшивость
    if ($this->diafan->module !== "shop" && $this->diafan->edit_meta[table] !== "shop") return false;

    // дёргаем все статьи
    $result = DB::query("SELECT [name], [anons], [text] FROM {clauses}");

    // ищем имена статей в $this->diafan->titlemodule и если есть вхождение то запоминаем название, анонс и текст
    while ($row = DB::fetch_array($result)) {
        if ( strpos ( $this->diafan->titlemodule,  " " . $row["name"]) ) {
            $clause["name"] = $row["name"];
            $clause["anons"] = $row["anons"];
            $clause["text"] = $row["text"];
            return $clause;     
        }
    }

    return false;
}

И на конец создаётся файл шаблона nozhevilka.brtrs.ru/modules/clauses/view/clauses.view.like.php с следующим содержанием.

<?php
if (! defined('DIAFAN')) { include dirname(dirname(dirname(__FILE__))).'/includes/404.php'; }

/**
 * Шаблон статьи для товара
 */

echo '<div class="clauses_id">';

//анонс статьи
if ($result['name']) {
    echo '<div class="clauses_name">';
    $this->htmleditor($result['name']);
    echo '</div>';
}

//анонс статьи
if ($result['anons']) {
    echo '<div class="clauses_anons">';
    $this->htmleditor($result['anons']);
    echo '</div>';
}

//описание статьи
echo '<div class="clauses_text">';
$this->htmleditor($result['text']);
echo '</div>';

echo '</div>';

Теги: Diafan.CMS , Diafan v5.1