fenom
fenom copied to clipboard
Не получается подключить аддон Assets
Второй день борюсь с такой проблемой. Четкого мануала что куда вставлять и какие файлы дозаливать в среду fenom я не нашел. Мне необходимо подключить расширение Assets для возможности использования css и js в пределах среды. Вот ошибка которую мне выдает - http://musicplay.online/main/1-supernatural.html (тестовый сайт). Пробовал с readme по Assets воткнуть разный код в разные файлы и места. Ошибка не исчезает. Прошу гуру помочь
А как всё это выглядит в коде?
@DomiTori-DLE уточните откуда вы тяните Assets?
<?php
// Класс с основными методами для работы модуля, все другие классы наследуются от него
class Abstractepisodes {
public $output; // сгенирированный вывод
public $dle_config; // конфигурация dle
public $config; // конфигурация модуля
public $dle_db; // объект бд
public $is_logged; // авторизирован ли пользователь
public $user_info; // информация о пользователе
public $fenom; // Шаблонизатор
public $parse; // dle парсер
public function __construct($conf = array()) {
global $db, $config, $is_logged, $member_id;
$this->config = $conf; // конфигурация класса
$this->dle_config = &$config; // конфигурационный файл dle
$this->dle_db = &$db; // работа с базой данных
$this->is_logged = &$is_logged; // залогинен ли пользователь
$this->user_info = &$member_id; // информация о пользователе
include ('engine/api/api.class.php');
$this->dle_api = &$dle_api; // dle api
// Шаблонизатор
require(__DIR__ . "/fenom/Fenom.php");
Fenom::registerAutoload();
// Необходимые директории
$episodesTplDir = ROOT_DIR.'/templates/'.$config['skin'].'/episodes'; // Директория шаблонов
$episodesTplCacheDir = ROOT_DIR.'/templates/'.$config['skin'].'/episodes/cache'; // Директория шаблонов
$fenomOptions = array(
// Пересобираем шаблон при редактировании
'auto_reload' => true,
// Автоматическая проверка переменных
'force_verify' => true,
// удаляет лишние пробелы из шаблона
'strip' => true
);
$this->fenom = Fenom::factory($episodesTplDir, $episodesTplCacheDir, $fenomOptions);
include_once ENGINE_DIR . '/classes/parse.class.php';
$this->parse = new ParseFilter( Array (), Array (), 1, 1 );
}
public function textLimit($data, $count)
{
if ($count == 0)
{
$data = strip_tags($data, '<br>');
$data = trim(str_replace(array('<br>','<br />'), ' ', $data));
if($count && dle_strlen($data, $this->dle_config['charset']) > $count)
{
$data = dle_substr($data, 0, $count, $this->dle_config['charset']). '…';
if(!$this->config['wordcut'] && ($word_pos = dle_strrpos($data, ' ', $this->dle_config['charset'])))
$data = dle_substr($data, 0, $word_pos, $this->dle_config['charset']). '…';
}
}
return $data;
}
public function pageNavigation($page, $total, $url) {
// Проверяем нужны ли стрелки назад
if ($page != 1) {
$pervpage = '<a href="'.$url.'page/'. ($page - 1) .'"><svg class="icon icon-left"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-left"></use></svg></a>';
} else {
$pervpage = '<span><svg class="icon icon-left"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-left"></use></svg></span>';
}
// Проверяем нужны ли стрелки вперед
if ($page != $total) {
$nextpage = '<a href="'.$url.'page/'. ($page + 1) .'"><svg class="icon icon-right"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-right"></use></svg></a>';
} else {
$nextpage = '<span><svg class="icon icon-right"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-right"></use></svg></span>';
}
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href="'.$url.'page/'. ($page - 2) .'">'. ($page - 2) .'</a>';
if($page - 1 > 0) $page1left = '<a href="'.$url.'page/'. ($page - 1) .'">'. ($page - 1) .'</a>';
if($page + 2 <= $total) $page2right = '<a href="'.$url.'page/'. ($page + 2) .'">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = '<a href="'.$url.'page/'. ($page + 1) .'">'. ($page + 1) .'</a>';
// Вывод меню
$return = $page2left.$page1left.'<span>'.$page.'</span>'.$page1right.$page2right;
// Ссылка на последнюю страницу
if($page != $total && $total > 3 && (($page + 2) != $total) && (($page + 1) != $total)) {
$return .= '...<a href="'.$url.'page/'. ($total) .'">'. ($total) .'</a>';
}
// Ссылка на первую страницу
if($page > 3 && $total > 3) {
$return = '<a href="'.$url.'">1</a>...'.$return;
}
return <<<HTML
<div class="navigation ignore-select">
<div class="page_next-prev">
<span class="page_prev" title="Предыдущая страница">
$pervpage
</span>
<span class="page_next" title="Следующая страница">
$nextpage
</span>
</div>
<div class="pages">
$return
</div>
</div>
HTML;
}
// Выводит результат
public function showOutput() {
echo $this->output;
}
// Страница 404
public function notFound($title = '', $text = '') {
global $lang;
header("HTTP/1.0 404 Not Found");
$title = !empty($title) ? $title : $lang['all_err_1'];
$text = !empty($text) ? $text : $lang['news_err_12'];
$this->output = $this->message($title, $text);
$this->showOutput();
}
// Сообщение
public function message($title = '', $text = '') {
return $this->fenom->fetch('info.tpl', ['title' => $title, 'error' => $text]);
}
/**
* @param $post - массив с информацией о статье
* @return string URL для категории
*/
public function getPostUrl($post_id, $post_alt_name, $post_category, $postDate) {
if($this->dle_config['allow_alt_url'] && $this->dle_config['allow_alt_url'] != 'no')
{
if(
($this->dle_config['version_id'] < 9.6 && $this->dle_config['seo_type'])
||
($this->dle_config['version_id'] >= 9.6 && ($this->dle_config['seo_type'] == 1 || $this->dle_config['seo_type'] == 2))
)
{
if(intval($post_category) && $this->dle_config['seo_type'] == 2)
{
$url = $this->dle_config['http_home_url'].get_url(intval($post_category)).'/'.$post_id.'-'.$post_alt_name.'.html';
}
else
{
$url = $this->dle_config['http_home_url'].$post_id.'-'.$post_alt_name.'.html';
}
}
else
{
$url = $this->dle_config['http_home_url'].date('Y/m/d/', $postDate).$post_alt_name.'.html';
}
}
else
{
$url = $this->dle_config['http_home_url'].'index.php?newsid='.$post_id;
}
return $url;
}
// Проверяет, существует ли новость в базе данных
public function issetPost($post_id) {
$db_posts = PREFIX.'_post';
$post_id = (int) $post_id;
$query = "SELECT id FROM {$db_posts} WHERE id = {$post_id}";
$result = $this->dle_db->super_query($query);
if(!empty($result['id'])){
return true;
} else{
return false;
}
}
public function getPost($post_id) {
$db_posts = PREFIX.'_post';
$post_id = (int) $post_id;
$query = <<<HTML
SELECT
id post_id,
category post_category,
autor post_autor,
date post_date,
short_story post_short_story,
full_story post_full_story,
title post_title,
alt_name post_alt_name
FROM {$db_posts}
WHERE id = {$post_id}
HTML;
$result = $this->dle_db->super_query($query);
if(!$result){
return false;
} else{
$result['post_url'] = $this->getPostUrl(
$result['post_id'],
$result['post_alt_name'],
$result['post_category'],
$result['post_date']
);
return $result;
}
}
// Выводит отформатированный массив
public function print_r($array = array()) {
echo '<pre>';
print_r($array);
echo '</pre>';
}
// Отправлено ли методом POST
public function methodPost(){
if($_SERVER['REQUEST_METHOD'] === 'POST') {
return true;
}
return false;
}
}
В этом файле подключаю Fenom, дальше использую его в модуле для cms DLE. Это содержимое залил в .../Fenom/
@pafnuty @bzick пробовал подключить как в этот файл так и в Fenom.php, ошибка о неизвесном теге css не пропадает
@DomiTori-DLE а где формируется тег, на котором происходит ошибка?
@pafnuty Вот файл в котором пытаюсь подключить, файл в формате .tpl и лежит в шаблоне движка episode_list.tpl.txt
@DomiTori-DLE ещё раз. Где формируется тег (не выводится, а именно формируется)? так же попробуйте отвязаться от CMS и воспроизвести ошибку вне CMS т.к. она накладывает свои ошибки поверх ваших.
Все аддоны являются примесями - trait class. Соответственно, что бы fenom получил возможности от аддона нужно расширить класс фенома примесью.