Smirnof

Рейтинг
72
Регистрация
13.11.2012
Интересы
efcb2e
Так выглядит конфиг самой "cms"

Это совсем мне понятно

Единственное, появился вопрос, куда делось все остальное

$zerocatename = $settings['zerocatename'];

$zerocatesearch = $settings['zerocatesearch'];

$zerocatevideos = $settings['zerocatevideos'];

$zeronumber = $settings['zeronumber'];

$zerosortingresults = $settings['zerosortingresults'];

$onecatename = $settings['onecatename'];

$onecatesearch = $settings['onecatesearch'];

$onecatevideos = $settings['onecatevideos'];

$onenumber = $settings['onenumber'];

$onesortingresults = $settings['onesortingresults'];

и т.д.

как об этом узнает скрипт, если ни в одном из конфигов этого нет?

Из settings.txt файла? Вроде бы так получается...

..."zerocatename";s:5:"Music";s:14:"zerocatesearch";s:10:"music+2015";s:14:"zerocatevideos";s:5:"music"...

Синтаксис ошибка появилась.

Я пробовал все переместить в конфил самой cms, сайт работает а адмика не хочет.

Теперь вроде бы понял.

Т.е. подключать в конфиг "cms" - include ("setup/config.php");

нет нужды в таком случае?

В общем буду все пробовать. Спасибо.

p.s. вообще я позже хотел собрать все в одном конфиг файле, возможно то про что вы говорите это и есть.

Может по тому, что сначала нужно получить-декодировать данные из другого конфига, не знаю :(

попробовал $settings['zerocatename']; - вроде не работает.

Еще попробую.

Спасибо!

Спасибо, буду исправлять.

Swir:
Зачем инициализировать столько новых переменных

$zerocatename = $settings['zerocatename'];
$zerocatesearch = $settings['zerocatesearch'];
$zerocatevideos = $settings['zerocatevideos'];

если сразу можно использовать элемент массива $settings['zerocatename'] там, где вы собираетесь использовать $zerocatename ну и т.д. Экономьте ресурсы.

Я правильно понял, можно использовать

$settings['zerocatename'];

вместо

$zerocatename = $settings['zerocatename']; ?

В таком случае

protected function getcates($id, $nom){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config[$nom.'catevideos']}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

будет работать?

Спасибо.

Спасибо.

Да, я только учусь.

Попробую описать свою систему.

Базы данных нет - принципиально.

Все данные сохраняю в settings.txt в закодированном виде.

Имеется админка со своим конфигом setup/config.php

Сама "система управления" имеет свой конфиг includes/Config.php

Из-за двух конфигурационных файлов я и стал задумываться о том, что что-то не так.

Изначально система была без админки и вся очень кривая (даже я сообразил).

Конфиг панели управления setup/config.php выглядит так

<?php

if (file_exists($filename)) {
$infotxt = file_get_contents($filename);
$settings = unserialize(base64_decode($infotxt));
$url = $settings['url'];
..........
ЕЩЕ КОД
..........
$zerocatename = $settings['zerocatename'];
$zerocatesearch = $settings['zerocatesearch'];
$zerocatevideos = $settings['zerocatevideos'];
$zeronumber = $settings['zeronumber'];
$zerosortingresults = $settings['zerosortingresults'];
$onecatename = $settings['onecatename'];
$onecatesearch = $settings['onecatesearch'];
$onecatevideos = $settings['onecatevideos'];
$onenumber = $settings['onenumber'];
$onesortingresults = $settings['onesortingresults'];
..........
ЕЩЕ КОД
..........
$admin_username = $settings['admin_username'];
$admin_password = $settings['admin_password'];

} else {
echo "The file configuration file is missing. Please run the setup again";
}

?>

Так выглядит конфиг самой "cms"

<?php
$filename="setup/settings.txt";
include ("setup/config.php");



$config = array(

// Your Site URL
"url" => "$url",

..............
ЕЩЕ КОД
..............

//Slider
"zerocatename" => "$zerocatename",
"zerocatesearch" => "$zerocatesearch",
"zerocatevideos" => "$zerocatevideos",
"zeronumber" => "$zeronumber",
"zerosortingresults" => "$zerosortingresults",

//Category Home Page Video
"onecatename" => "$onecatename",
"onecatesearch" => "$onecatesearch",
"onecatevideos" => "$onecatevideos",
"onenumber" => "$onenumber",

..............
ЕЩЕ КОД
..............

// Server's timezone for more accurate data
"timezone" => "Russia/Moscow",

// Cache Data - If you notice anomalies, disable this. You should enable this when you get high hits
"cache" => TRUE,

// Enable mode_rewrite? e.g. user/login instead of index.php?a=user/login
"mod_rewrite" => TRUE,

// Enable Compression? Makes your website faster
"gzip" => TRUE,

);

// Include core.php
include ('Core.php');

?>

1. Подключается файл с закодированными, ранее сохраненными данными $filename="setup/settings.txt";

2. Подключается конфиг include ("setup/config.php");

ВОТ И ПОЛУЧИЛОСЬ НЕЧТО. :)

То есть, конфиг самой "cms" вытягивает данные из файла setup/settings.txt декодируя их при помощи setup/config.php

Далее, includes/Youtube.class.php дергает все из includes/Config.php

вставляет полученные данные в

protected function getonecate($id){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config["onecatevideos"]}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

protected function gettwocate($id){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config["twocatevideos"]}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

я еще не переделал в предложенный Swir код но буду переделывать.

вариант ниже я не понял (пока)

Отсюда сразу мысли пойти в этот конфиг и научить его выдавать $this->config->catvideos[$name];

После всех этих манипуляций, полученный результат уходит в шаблон где выводится при помощи данных полученных из includes/Config.php

Получается, чтобы сформировать страницу с результатом, файл includes/Config.php задействуется как минимум два раза, сначала отправляет поисковый запрос с помощью Youtube.class.php, потом выводит полученный результат в шаблон при помощи самого себя includes/Config.php ...вроде так... :)

Я понимаю, что все это можно сократить в разы, понимаю что сейчас у меня много одних и тех же операций повторяется, вот и пытаюсь как-то все уменьшить, упорядочить...

Но что и как делать не понимаю, вот и взялся пока за редактирование Youtube.class.php

Не увидел, где у вас в методе используется $id? Может он не нужен,
тогда метод protected function getcates($nom)

Спасибо, действительно не нужен

Здорово!

Спасибо, буду пробовать. Как вы считаете, так правильнее будет?

Т.е. вместо кучи кода использовать подобный шаблон.

От этой манипуляции что-то в + изменится, скорость к примеру или уменьшится кол-во запросов (хотя у меня нет бд, на файле работает все)

Еще один дилетантский вопрос перед изучением Yii PHP framework.

В шаблоне у меня выводятся данные при помощи ...getonecate..., ...gettwocate... и т.д.

<div class="section-box">
<div class="section-header">
<h2 class="section-title"><a class="name-link" href="<?php echo $this->config["url"] ?>/search/<?php echo $this->config["onecatesearch"] ?>"><span class="name"><?php echo $this->config["onecatename"] ?></span></a></h2>
<a class="more-link" href="<?php echo $this->config["url"] ?>/search/<?php echo $this->config["onecatesearch"] ?>"><span>More <i class="mini-arrow-right"></i></span></a>
</div>
<div class="section-content grid-small">
<div class="nag cf">
<div class="my-trailers-slider"><?php echo $this->getonecate() ?></div>
</div>
</div>
</div>

get*** берет данные из файла youtube class и конфига.

Сам youtube class имеет вид:


protected function getonecate($id){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config["onecatevideos"]}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

protected function gettwocate($id){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config["twocatevideos"]}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

one, two и миллион... но значения запросов в url адресе может быть разным, само собой сам поисковый запрос + кол-во результатов и других возможных фильтров.

Как я предполагаю, получается куча лишнего кода в youtube class, я прав?

Мне кажется, что в youtube class можно создать одно поле

protected function get***cate($id){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config["***catevideos"]}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

и использовать его как шаблон для всех one, two и миллион...

Совсем запутался, такое возможно?

Это в разы сократило бы весь код.

Надеюсь понятно написал.

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

Swir, спасибо! Работает как и хотел.

kostyanet, спасибо, буду разбираться... все подробно но не совсем понятно для меня, ясно то, что ваш вариант видимо более правильный.

Всего: 235