Page 1 of 1

Маленькие хитрости блока CONTENT

Posted: Thu Apr 24, 2008 9:34 am
by Il_Burbero
На мой взгляд CMSMS очень удобна с точки зрения SEO.
Хотя вбивать вручную теги не всем покажется удобным, можно использовать следующее.
В шаблоне сайта после тега TITLE
прописываем:

Code: Select all

<meta name="keywords" content="{content block="keywords" oneline="true" wysiwyg="false"}" />
<meta name="robots" content="{content block="robots" oneline="true" wysiwyg="false"}" />
и получаем при редактировании/добавлении контента еще две строчки Keywords и Robots куда можно быстренько вставлять нужные ключевые слова и нужные инструкции для поисковых роботов (т.к. многие знают что далеко не все страницы нужно позволять индексировать глупым роботам).
Еще можно добавить:

Code: Select all

<meta name="description" content="{description}" />
чтобы генерировать метатег описания, правда нужно не забывать его заполнять.

Согласно описанию тега {content} параметр block добавляет блок текста, oneline - будет ли это в одну строчку или в текстовое поле, wysiwyg будет ли подключен редактор или нет.

Пофантазировав можно найти еще какие нибудь применения для этого. А ведь еще никто не запрещает втыкать инструкции Smarty (где можно определить еще кучу дополнительных примочек).

Например

Code: Select all

{content} 
{startExpandCollapse id="name" title="Подробнее"}
{content block="tellmemore"}
{stopExpandCollapse} 
При редактировании получится два блока первый определяет содержимое {content}, второй содержимое {content block="tellmemore"} и вся эта ботва будет выглядеть как кусок текста и ссылка Подробнее при нажатии на которую мы увидим содержимое {content block="tellmemore"}.

Поделитесь у кого есть еще хитрости, интересно же :)))

Re: Маленькие хитрости блока CONTENT

Posted: Thu Apr 24, 2008 1:16 pm
by Il_Burbero
Я тут немножко подумал, почитал повнимательнее инструкции и решил сделать несколько иначе.
Итак в файле шаблона можно определять дополнительные поля для редактирования и последующего вывода их значений следующим образом

Code: Select all

<head>
<title>{title}</title>
<meta name="description" content="{description}" />
<meta name="keywords" content="{$keywords|default:'empty'}" />
<meta name="robots" content="{$keywords|default:'noindex,nofollow'}" />
{metadata}
{stylesheet}
{cms_selflink dir="start" rellink=1}
{cms_selflink dir="prev" rellink=1}
{cms_selflink dir="next" rellink=1}
{content block="Ключевики" oneline="true" wysiwyg="false" assign=keywords}
{content block="Роботы" oneline="true" wysiwyg="false" assign=robots}
</head>
assign позволяет прописать теги в переменную Смарти (и как следствие использовать инструкции Смарти для ее обработки!!!).
Помещая определения {content block="Ключевики"} в HEAD мы добиваемся того что они работают только в режиме редактирования.
Мы можем задать блоку наше родное русское название и именно оно будет отображаться в админке.
И как я уже говорил можно задействовать Смарти для обработки переменной, в моем случае если переменные не заданы (или их невозможно задать, например для страницы 404) то подставляется дефолтное значение.
В моем случае сгенерированный хеад для страницы 404 такой:

Code: Select all

<head>
<title>404 Error</title>
<meta name="description" content="404 Error" />
<meta name="keywords" content="empty" />
<meta name="robots" content="noindex,nofollow" />
.................
</head>
Еще я поизвращался над шаблоном и параллельно познал мощь {get_template_vars}. В результате сваял такой вывод контента:

Code: Select all

{get_template_vars}
 {if $friendly_position == 1 or $content_id == -1}  <!-- проверяем страницу по умолчанию и страницу 404 -->
     {content}     <!-- да это она, нафиг там комменты и заголовки h1, у меня на главной новости списком -->
  {elseif $friendly_position < 3} <!--позиция не 1 не -1 а 2 с дитями, это мои статьи значит -->
     <div class='prinbutton'><!-- выводим кнопку печати -->
     <a href='{cms_module module='printing' onlyurl="true"}'><img src='images/phpwebtpl/print.png' alt='Печать'></a>
     </div>   
     <h1>{title}</h1><div class="articledate">{modified_date format="%H.%d.%Y"}</div><!-- заголовок и дату в контейнер чтобы перемещать ее например вправо -->
     {content}     
     <div class="articlesfooter"><!-- выводим допполя для контента, я зарядил туда комменты -->
      {cms_module module='comments' emailfield=1 websitefield=1  localedateformat='%H.%d.%Y' lang='ru_RU'} 
     </div>
   {else}<!--предыдущие условия не выполнены делаем обычный вывод -->
     <h1>{title}</h1>
     {content}    
 {/if}
Полезность такого вывода очевидна, т.к. мы не выводим на страницах где это не нужно комменты и кнопки печати, на некоторых ненужен заголовок h1 а можно добавить еще инструкций и выводить еще чего то.
Вы скажете что это можно сделать непосредственно в контенте, но представьте что кому то надо поставить кнопку печати на 1000 статьях которые все дети на папе Статьи. Автоматизация - это хорошо.

Re: Маленькие хитрости блока CONTENT

Posted: Tue Oct 13, 2009 8:41 pm
by Dominikus
Очень понравилось решение, но почему то у меня не подставляет данные который я заношу в админке (keywords, robots). Версия 1.6.5

Re: Маленькие хитрости блока CONTENT

Posted: Tue Oct 13, 2009 10:17 pm
by replytomk3
Il_Burbero wrote: Автоматизация - это хорошо.