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
Ай молодэц! ;)
Не сочтите за наглость :roll:, а можешь подобное сделать для топлистов?

А именно, вставляешь кусок 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

И затем вывести это все готовое с кучей строк :roll:

Спасибо заранее! :roll:

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>
 ...........
Большое спасибо! :P

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>
или нет?