Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не получается подключить аддон Assets #257

Open
DomiTori-DLE opened this issue Nov 25, 2016 · 8 comments
Open

Comments

@DomiTori-DLE
Copy link

Второй день борюсь с такой проблемой. Четкого мануала что куда вставлять и какие файлы дозаливать в среду fenom я не нашел. Мне необходимо подключить расширение Assets для возможности использования css и js в пределах среды. Вот ошибка которую мне выдает - http://musicplay.online/main/1-supernatural.html (тестовый сайт). Пробовал с readme по Assets воткнуть разный код в разные файлы и места. Ошибка не исчезает. Прошу гуру помочь

@pafnuty
Copy link
Member

pafnuty commented Nov 25, 2016

А как всё это выглядит в коде?

@bzick
Copy link
Member

bzick commented Nov 25, 2016

@DomiTori-DLE уточните откуда вы тяните Assets?

@DomiTori-DLE
Copy link
Author

DomiTori-DLE commented Nov 26, 2016

<?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']). '&hellip;';					
				if(!$this->config['wordcut'] && ($word_pos = dle_strrpos($data, ' ', $this->dle_config['charset']))) 
					$data = dle_substr($data, 0, $word_pos, $this->dle_config['charset']). '&hellip;';

			}
		}
		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/

@DomiTori-DLE
Copy link
Author

@pafnuty @bzick пробовал подключить как в этот файл так и в Fenom.php, ошибка о неизвесном теге css не пропадает

@pafnuty
Copy link
Member

pafnuty commented Nov 27, 2016

@DomiTori-DLE а где формируется тег, на котором происходит ошибка?

@DomiTori-DLE
Copy link
Author

DomiTori-DLE commented Nov 27, 2016

@pafnuty
Вот файл в котором пытаюсь подключить, файл в формате .tpl и лежит в шаблоне движка
episode_list.tpl.txt

@pafnuty
Copy link
Member

pafnuty commented Nov 27, 2016

@DomiTori-DLE ещё раз.
Где формируется тег (не выводится, а именно формируется)?
так же попробуйте отвязаться от CMS и воспроизвести ошибку вне CMS т.к. она накладывает свои ошибки поверх ваших.

@bzick
Copy link
Member

bzick commented Nov 29, 2016

Все аддоны являются примесями - trait class. Соответственно, что бы fenom получил возможности от аддона нужно расширить класс фенома примесью.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants