Page 3 of 4
Re: вывод категорий + заглавные буквы
Posted: Sat Jan 28, 2017 12:58 am
by Nikso
пишем этот код в tpl.php файл, заливаем на сервер. Открываем в браузере domain.com/tpl.php
Вбиваем шаблон в текстовое поле. ## - будет заменен на маленкую букву, #UP# - на большую
Code: Select all
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Template maker</title>
</head>
<body>
<?php
if (empty($_POST['template'])) {
?>
Make a-z template category list for SmartCJ<br>
Put code like this:<br>
<code>
<b>#UP#</b> <br><br>
<category order=alphabet num=1-200 gallery_count_min=50 first_letter=##><!--CATEGORY_NAME--></category>
</code>
<form method="post" action="">
<textarea name="template" rows="4" cols="100"></textarea>
<br />
<input type="submit" value="Make template">
</form>
<? } else {
$res = "";
foreach (range('a','z') as $i)
$res .= str_replace(array('##','#UP#'),array($i,mb_strtoupper($i)),$_POST['template'])."\r";
echo '<textarea name="template" rows="27" cols="100">'. $res .'</textarea>';
} ?>
</body>
</html>
Re: вывод категорий + заглавные буквы
Posted: Sun Jan 29, 2017 7:15 am
by mad
Nikso wrote:пишем этот код в tpl.php файл, заливаем на сервер. Открываем в браузере domain.com/tpl.php
Ай молодэц!

Не сочтите за наглость

, а можешь подобное сделать для топлистов?
А именно, вставляешь кусок html, где много раз есть _MEMBER_1_, например
Code: Select all
<div class="bla">
<a href="_MEMBER_1_URL_"><img src="_MEMBER_1_IMAGE_" alt="_MEMBER_1_DESC_"></a>
</div>
и надо размножить на кол-во указанное, заменив цифру по порядку +1
И затем вывести это все готовое с кучей строк
Спасибо заранее!

Re: вывод категорий + заглавные буквы
Posted: Sun Jan 29, 2017 6:36 pm
by admin
Re: вывод категорий + заглавные буквы
Posted: Tue Jan 31, 2017 4:27 am
by Nikso
Code: Select all
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Template maker</title>
</head>
<body>
<?php
if (empty($_POST['template'])) {
?>
Make a-z template category or TOP list for SmartCJ<br>
Put code like this:<br>
<code>
<font color="#d2691e">
<b>#UP#</b> <br><br>
<category order=alphabet num=1-200 gallery_count_min=50 first_letter=##><!--CATEGORY_NAME--></category>
</font>
</code> <br>OR <br>
<code>
<font color="#d2691e">
<div class="bla"><br>
<a href="_MEMBER_1_URL_"><img src="_MEMBER_1_IMAGE_" alt="_MEMBER_1_DESC_"></a><br>
</div>
</font>
</code>
<br>
<form method="post" action="">
TOP range:<input type="text" name="range" value="10"><br>
<textarea name="template" rows="4" cols="100"></textarea>
<br />
<input type="submit" value="Make template">
</form>
<? } else {
$res = "";
if (strstr($_POST['template'],'_MEMBER_')) {
for ($i=1;$i<=$_POST['range'];$i++) $res .= str_replace('_1_', '_'.$i.'_', $_POST['template']) . "\r";
}
else {
foreach (range('a', 'z') as $i)
$res .= str_replace(array('##', '#UP#'), array($i, mb_strtoupper($i)), $_POST['template']) . "\r";
}
echo '<textarea name="template" rows="27" cols="100">'. $res .'</textarea>';
} ?>
</body>
</html>
Re: вывод категорий + заглавные буквы
Posted: Tue Jan 31, 2017 5:20 am
by mad
Эммм..
То есть, имеется ввиду, вообще не создавать топлист в обычном его понимании, шаблон, потом инклуд и всё такое?
А просто делаем прям в шаблоне страницы
Code: Select all
<trader num=1-50>
<div class="bla">
<a href="http://www.<!--DOMAIN-->/"><img src="<!--IMAGE-->" alt="<!--DESC-->"> <!--DESC--> </a>
</div>
</trader>
1. Получается топлист и не нужен как-бы теперь? Можно делать текстовый обычный таким способом, и вставлять его как обычный топ, а не в тумбы как в вики написано?
2. Строиться топлист будет каждый раз при генерации страницы?
3. И как это отразится на производительности в целом?
Re: вывод категорий + заглавные буквы
Posted: Tue Jan 31, 2017 5:27 am
by mad
Nikso wrote:Code: Select all
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Template maker</title>
...........
Большое спасибо!

Re: вывод категорий + заглавные буквы
Posted: Tue Jan 31, 2017 5:40 am
by admin
mad wrote:
Эммм..
То есть, имеется ввиду, вообще не создавать топлист в обычном его понимании, шаблон, потом инклуд и всё такое?
А просто делаем прям в шаблоне страницы
Code: Select all
<trader num=1-50>
<div class="bla">
<a href="http://www.<!--DOMAIN-->/"><img src="<!--IMAGE-->" alt="<!--DESC-->"> <!--DESC--> </a>
</div>
</trader>
1. Получается топлист и не нужен как-бы теперь? Можно делать текстовый обычный таким способом, и вставлять его как обычный топ, а не в тумбы как в вики написано?
2. Строиться топлист будет каждый раз при генерации страницы?
3. И как это отразится на производительности в целом?
Да, верно.
1. нет, это именно вариант для темплейтов , если надо для внешнего инклуда - тогда надо юзать старый вариант
2. да, генерим страницу - создаем топ и все это кладется в кеш на время кеша страницы. Те фактически топ у нас генериться так же часто как пересоздается страница.
3. фактически никак не отразится.
Re: вывод категорий + заглавные буквы
Posted: Tue Jan 31, 2017 11:50 am
by Ailk
Накидал тут. Правда понятно будет для тех кто в пхп хоть немного понимает. Но все же.
Создаем новый кастом темлейт, например: category_block
в него пишем как есть:
Code: Select all
<ul>
<?php
if (!empty($GLOBALS['categories_abc'])) {
// попробуем достать кешированный блок. Ключ хранения в кеше: ctg_abc_block. Можно добавить префикс, чтоб кеш не пересекался с другими сайтами.
if (!$category_block = Cache::get('ctg_abc_block')) {
ob_start();
$lastFirstLetter = '';
foreach($GLOBALS['categories_abc'] as $_category) {
$currentFirstLetter = strtolower($_category['category_name'][0]);
// Выводится буква в верхнем регистре (функция ucfirst делает это)
if ($currentFirstLetter != $lastFirstLetter) {
echo '<li><span>' . ucfirst($currentFirstLetter) . '</span></li>'; // это сам шаб для буквы
}
// Это ссылка на категорию, предполагается что category_custom_name это слаг категории, а category_name соответственно ее имя.
echo '<li><a href="/' . $_category['category_custom_name'] . '/">' . (ucfirst(strtolower($_category['category_name']))) .'</a></li>';
$lastFirstLetter = $currentFirstLetter;
}
$category_block = ob_get_clean();
Cache::set('ctg_abc_block', $category_block, 3600); // кешируем блок на час, 3600 сек.
}
echo $category_block;
}
?>
</ul>
Затем подключаем темплейт где нам нада стандартным способом:
Code: Select all
<!--INCLUDE_TEMPLATE_category_block-->
Re: вывод категорий + заглавные буквы
Posted: Tue Jan 31, 2017 12:14 pm
by admin
Да, спасибо.
Re: вывод категорий + заглавные буквы
Posted: Thu Apr 13, 2017 6:51 am
by SAS
Ailk wrote:Накидал тут. Правда понятно будет для тех кто в пхп хоть немного понимает. Но все же.
Создаем новый кастом темлейт, например: category_block
в него пишем как есть:
Code: Select all
<ul>
<?php
if (!empty($GLOBALS['categories_abc'])) {
// попробуем достать кешированный блок. Ключ хранения в кеше: ctg_abc_block. Можно добавить префикс, чтоб кеш не пересекался с другими сайтами.
if (!$category_block = Cache::get('ctg_abc_block')) {
ob_start();
$lastFirstLetter = '';
foreach($GLOBALS['categories_abc'] as $_category) {
$currentFirstLetter = strtolower($_category['category_name'][0]);
// Выводится буква в верхнем регистре (функция ucfirst делает это)
if ($currentFirstLetter != $lastFirstLetter) {
echo '<li><span>' . ucfirst($currentFirstLetter) . '</span></li>'; // это сам шаб для буквы
}
// Это ссылка на категорию, предполагается что category_custom_name это слаг категории, а category_name соответственно ее имя.
echo '<li><a href="/' . $_category['category_custom_name'] . '/">' . (ucfirst(strtolower($_category['category_name']))) .'</a></li>';
$lastFirstLetter = $currentFirstLetter;
}
$category_block = ob_get_clean();
Cache::set('ctg_abc_block', $category_block, 3600); // кешируем блок на час, 3600 сек.
}
echo $category_block;
}
?>
</ul>
Затем подключаем темплейт где нам нада стандартным способом:
Code: Select all
<!--INCLUDE_TEMPLATE_category_block-->
я не профи в пхп, учусь потихоньку...
общий смысл понятен вроде!
вопрос по ключам, допустим у меня сидж на 6 языках то мне нужно сохранять кеш с 6 префиксами, верно?
т.е. получается что-то типа такого:
ru_ctg_abc_block
en_ctg_abc_block
de_ctg_abc_block
......
т.е. если я в самом начале объявлю переменную ключа кеша с языковым префиксом $c_key, а потом использую ее в Cache::get и Cache::set то должно быть все хорошо для мультиязычного сиджа?
Code: Select all
<ul>
<?php
$c_key = $_GET['force_lng'].'_ctg_abc_block';
if (!empty($GLOBALS['categories_abc'])) {
// попробуем достать кешированный блок. Ключ хранения в кеше: ctg_abc_block. Можно добавить префикс, чтоб кеш не пересекался с другими сайтами.
if (!$category_block = Cache::get($c_key)) {
ob_start();
$lastFirstLetter = '';
foreach($GLOBALS['categories_abc'] as $_category) {
$currentFirstLetter = strtolower($_category['category_name'][0]);
// Выводится буква в верхнем регистре (функция ucfirst делает это)
if ($currentFirstLetter != $lastFirstLetter) {
echo '<li><span>' . ucfirst($currentFirstLetter) . '</span></li>'; // это сам шаб для буквы
}
// Это ссылка на категорию, предполагается что category_custom_name это слаг категории, а category_name соответственно ее имя.
echo '<li><a href="/' . $_category['category_custom_name'] . '/">' . (ucfirst(strtolower($_category['category_name']))) .'</a></li>';
$lastFirstLetter = $currentFirstLetter;
}
$category_block = ob_get_clean();
Cache::set($c_key, $category_block, 3600); // кешируем блок на час, 3600 сек.
}
echo $category_block;
}
?>
</ul>
или нет?