FAQ Делаем правильное меню Joomla

Тема в разделе "Проектирование", создана пользователем AKopytenko, 27.02.2015.

  1. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Здравствуйте, товарищи.

    Немного о структуре и правильной иерархии страниц (для начинающих пользователей Joomla).

    Для того, чтобы в адресации страниц была соблюдена правильная иерархия, нужно создать правильное меню.

    Создаём меню, в котором размещаем ссылки на ВСЕ страницы сайта, которые могут появиться в каких-либо меню. Назовём его, например, "Каркас". Такое название я предложил не спроста: как правило, это меню не выводится на публичной части сайта и не служит для навигации пользователей. "Каркас" - это база для пунктов меню сайта, которая устанавливает порядок связи страниц друг с другом (родители <-> дети).

    Если нам нужно добавить меню в публичную часть сайта (добавить меню для пользователей), нужно создать новое меню и при добавление в него новых пунктов выбирать "Тип пункта меню: Системные ссылки -> Псевдоним пункта меню". Выбираем пункт меню из меню "Каркас" и сохраняем. Параметр "Алиас" лучше оставить пустым - в этом случае его значение будет браться от пункта меню из "Каркаса".

    Соблюдая это простое правило у Вас никогда не будет проблем с навигацией и в хлебных крошках всегда будет отображаться корректный путь к открытой странице.

    Желаю трудовых успехов!
     
  2.  
  3. lev
    Offline

    lev Активист => Cпециалист <=

    Регистрация:
    21.12.2007
    Сообщения:
    687
    Симпатии:
    40
    Пол:
    Мужской
    Не совсем соглашусь от некоторых ссылок по определению избавиться не возможно:
    Код (CODE):
    1. domen.ru/articles/129-blablabla.html
    2. domen.ru/?Itemid=
    3. domen.ru/?Itemid=0

    можно конечно уменьшить количество, прописывая только прямые ссылки, но это не решение.
    Есть SEF компоненты платные или можно бесплатно сделать установив плагин JL No Doubles 2.2, но еще понадобиться все равно нужно будет править:
    robots.txt или htaccess.txt

    я вот пробовал двумя способами поставив JL No Doubles 2.2 и заменив htaccess.txt на это:

    Код (CODE):
    1. ##файл .htaccess для Joomla.
    2.  
    3. ##Может быть закомментировано, если вызывает ошибку сервера. Возможность использовать
    4. ##символические ссылки на каталоги или файлы, которые не находятся в пределах корня
    5. ##вашего сайта. Запрет на листинг каталогов.
    6. Options +FollowSymLinks -Indexes
    7. ##
    8.  
    9. ## Кодировка по умолчанию
    10. AddDefaultCharset utf-8
    11. ##
    12.  
    13.  
    14. ## Включение модуля mod_rewrite
    15. <IfModule mod_rewrite.c>
    16. RewriteEngine On
    17. ##
    18.  
    19. ##Корневая директория - начало
    20. RewriteBase /
    21. ##Корневая директория конец
    22.  
    23. ##Редирект с index.php на / - начало
    24. RewriteCond %{THE_REQUEST} !^POST
    25. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    26. RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
    27. RewriteRule ^index\.php$ http%2://домен.ру/ [R=301,L]
    28. ##Редирект с index.php на / - конец
    29.  
    30.  
    31. ##Редирект с www на без www - начало
    32. RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    33. RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    34. ##Редирект с www на без www - конец
    35.  
    36.  
    37. </IfModule>
    38. ## Конец модуля mod_rewrite
    39.  
    40.  
    41. ##Индексная страница
    42. DirectoryIndex index.php
    43. ##
    44.  
    45.  
    46. ## Настройки хостинга - начало
    47. <ifModule mod_php.c>
    48. php_value register_globals 0
    49. php_value safe_mode 0
    50. php_value allow_url_fopen 0
    51. php_value display_errors 0
    52. php_value file_uploads 1
    53. php_value magic_quotes_gpc 1
    54. php_value magic_quotes_runtime 0
    55. php_value upload_max_filesize 20M
    56. php_value post_max_size 10M
    57. php_value max_execution_time 100
    58. php_flag register_globals Off
    59. php_flag display_errors Off
    60. php_flag file_uploads On
    61. php_flag allow_url_fopen off
    62. php_flag magic_quotes_gpc On
    63. php_flag magic_quotes_runtime Off
    64. </ifModule>
    65. ## Настройки хостинга - конец
    66.  
    67.  
    68. ## Правила обработки запросов для блокировки распространенных эксплоитов - начало
    69. RewriteCond %{QUERY_STRING} proc/self/environ [OR]
    70. RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
    71. RewriteCond %{QUERY_STRING} base64_(en|de)code\(.*\) [OR]
    72. RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
    73. RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    74. RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    75. RewriteRule .* index.php [F]
    76. ## Правила обработки запросов для блокировки распространенных эксплоитов - конец
    77.  
    78.  
    79. ##Блокировка прямого доступа к ядру - начало
    80. RewriteCond %{REQUEST_FILENAME} -f
    81. RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
    82. RewriteCond %{REQUEST_URI} \/components\/ [OR]
    83. RewriteCond %{REQUEST_URI} ^\/includes\/|^\/administrator\/includes\/ [OR]
    84. RewriteCond %{REQUEST_URI} \/language\/ [OR]
    85. RewriteCond %{REQUEST_URI} \/libraries\/ [OR]
    86. RewriteCond %{REQUEST_URI} \/modules\/ [OR]
    87. RewriteCond %{REQUEST_URI} \/plugins\/ [OR]
    88. RewriteCond %{REQUEST_URI} \/templates\/ [OR]
    89. RewriteCond %{REQUEST_URI} \/cli\/
    90. RewriteRule ^(.*)$ index.php [R=404,L]
    91. ##Блокировка прямого доступа к ядру - конец
    92.  
    93.  
    94. ##Блокировка MySQL инъекций - начало
    95. RewriteCond %{query_string} concat.*\( [NC,OR]
    96. RewriteCond %{query_string} union.*select.*\( [NC,OR]
    97. RewriteCond %{query_string} union.*all.*select [NC]
    98. RewriteRule ^(.*)$ index.php [F,L]
    99. ##Блокировка MySQL инъекций - конец
    100.  
    101.  
    102. ##Блокировка файловых инъекций - начало
    103. RewriteCond %{REQUEST_METHOD} GET
    104. RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
    105. RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
    106. RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
    107. RewriteRule .* - [F]
    108. ##Блокировка файловых инъекций -конец
    109.  
    110.  
    111. ## Запретит доступа к htaccess.txt, configuration.php и php.ini
    112. RewriteRule ^(htaccess\.txt|configuration\.php-dist|php\.ini)$ - [F]
    113. ##
    114.  
    115.  
    116. ## Раздел SEF ядра Joomla - начало
    117. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    118. RewriteCond %{REQUEST_URI} !^/index\.php
    119. RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|raw|ini|zip|json|file|vcf))$ [NC]
    120. RewriteCond %{REQUEST_FILENAME} !-f
    121. RewriteCond %{REQUEST_FILENAME} !-d
    122. RewriteRule .* index.php [L]
    123. ##Раздел SEF ядра Joomla - конец
    124.  
    125.  
    126. ##Ускорение загрузки сайта
    127.  
    128.  
    129. ##Gzip сжатие с помощью модуля mod_deflate - начало
    130. <ifModule mod_deflate.c>
    131. AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
    132. </ifModule>
    133. ##Gzip сжатие с помощью модуля mod_deflate - конец
    134.  
    135.  
    136. ##Gzip сжатие с помощью модуля mod_gzip - начало
    137. <IfModule mod_gzip.c>
    138. mod_gzip_on Yes
    139. mod_gzip_dechunk Yes
    140. mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    141. mod_gzip_item_include mime ^text\.*
    142. mod_gzip_item_include mime ^application/x-javascript.*
    143. mod_gzip_item_include mime ^application/x-font-woff.*
    144. mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    145. </IfModule>
    146. ##Gzip сжатие с помощью модуля mod_gzip - конец
    147.  
    148.  
    149. ##Кэширование с помощью модуля mod_headers - начало
    150. <ifModule mod_headers.c>
    151. #кэшировать HTML и htm файлы на один день
    152. <FilesMatch "\.(html|htm)$">
    153. Header set Cache-Control "max-age=43200"
    154. </FilesMatch>
    155. #кэшировать CSS, javascript и текстовые файлы на одну неделю
    156. <FilesMatch "\.(js|css|txt)$">
    157. Header set Cache-Control "max-age=604800"
    158. </FilesMatch>
    159. #кэшировать Flash и изображения на месяц
    160. <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
    161. Header set Cache-Control "max-age=2592000"
    162. </FilesMatch>
    163. #отключить кэширование
    164. <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
    165. Header unset Cache-Control
    166. </FilesMatch>
    167. </IfModule>
    168. ##Кэширование с помощью модуля mod_headers - конец
    169.  
    170.  
    171. ##Кэширование с помощью модуля mod_expires - начало
    172. <ifModule mod_expires.c>
    173. ExpiresActive On
    174. #по умолчанию кеш в 5 секунд
    175. ExpiresDefault "access plus 5 seconds"
    176. #кэшировать Flash и изображения на месяц
    177. ExpiresByType image/x-icon "access plus 2592000 seconds"
    178. ExpiresByType image/jpeg "access plus 2592000 seconds"
    179. ExpiresByType image/png "access plus 2592000 seconds"
    180. ExpiresByType image/gif "access plus 2592000 seconds"
    181. ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    182. #кэшировать CSS, javascript и текстовые файлы на одну неделю
    183. ExpiresByType text/css "access plus 604800 seconds"
    184. ExpiresByType text/javascript "access plus 604800 seconds"
    185. ExpiresByType application/javascript "access plus 604800 seconds"
    186. ExpiresByType application/x-javascript "access plus 604800 seconds"
    187. #кэшировать HTML и htm файлы на один день
    188. ExpiresByType text/html "access plus 43200 seconds"
    189. #кэшировать XML файлы на десять минут
    190. ExpiresByType application/xhtml+xml "access plus 600 seconds"
    191. </ifModule>
    192. ##Кэширование с помощью модуля mod_expires - конец

    - сразу говорю этот способ не решает все проблемы, только частично :p
     
    Последнее редактирование: 17.08.2015
  4. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Ссылки подобного вида не должны индексироваться пауками. Если только кто-то не прописал такую ссылку на какой-то странице умышлено...
     
  5. Offline

    Gooo Недавно здесь

    Регистрация:
    03.03.2015
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Могли бы поподробнее на примере о вашем подходе для Joomla 3.x с родным ЧПУ без сторонних SEF-расширений?

    Объясните плиз подробнее, в чем же преимущество такого способа по сравнению с традиционным?
     
    Последнее редактирование: 18.08.2015
  6. lev
    Offline

    lev Активист => Cпециалист <=

    Регистрация:
    21.12.2007
    Сообщения:
    687
    Симпатии:
    40
    Пол:
    Мужской
    в опции "пункт меню" выберите тот пункт меню, для которого Вы создаёте псевдоним (синоним).
    • Псевдоним. Это SEF URL пункта меню. Будет использоваться, только при включённом SEF. ;)
    устанавливает порядок связи страниц и если нужно "Тип пункта меню: Системные ссылки -> Псевдоним пункта меню"

    Системные ссылки. Внешний URL.
    Пункт меню будет вести на страницу, url-адрес которой будет задан в настройках типа.
    Системные ссылки. Псевдоним пункта меню.
    Ссылка на уже существующий пункт меню.
    Системные ссылки. Разделитель.
    Просто разделитель двух пунктов меню между собой.
    --- добавлено: 18.08.2015, первое сообщение размещено: 18.08.2015 ---
    пример использования псевдонима, к примеру есть два меню верхнее и боковое в одном делается прямая ссылка в другом псевдоним.
    :rolleyes:
     
  7. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Это да. Я не знаю сайтов, на которых сейчас SEF не включён...

    Да, можно и так.
     
  8. lev
    Offline

    lev Активист => Cпециалист <=

    Регистрация:
    21.12.2007
    Сообщения:
    687
    Симпатии:
    40
    Пол:
    Мужской
    Бывает, иначе вопросы не возникали, а я такие читал ;)
     
  9. Offline

    Gooo Недавно здесь

    Регистрация:
    03.03.2015
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо.
    Хорошо, одно преимущество скрытого "прокладочного" меню я увидел.
    1. Можно по быстрому создавать пункты второго, третьего и т.д. меню на той же странице, дублирующие пункты основного меню. При этом сохраняется идентичность ссылок за счет того, что эти пункты ссылаются на один и тот же alias (псевдоним). Если бы "прокладочное" меню не использовалось, то возможны были бы недоразуменя - в дублирующих ссылках вручную заданный alias мог бы отличаться от alias в основном меню. И тогда хлебные крошки при заходе из разных меню на одну и ту же страницу выглядели бы по разному. Я правильно понял этот момент?

    А еще какие преимущества?

    Что имеется в виду под "устанавливает порядок связи страниц"? Привязку к категориям? Сорри - я только изучаю Joomla.
     
  10. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    При чём здесь категории вообще? Чётко указывает схему ссылок в дереве меню.
    • Корневой 1
      • Вложеный 1
      • Вложеный 2
        • Вложеный 1.1
        • Вложеный 1.2
      • Вложеный 3
    • Корневой 2
    • Корневой 3
      • Вложеный 3.1
      • Вложеный 3.2
      • Вложеный 3.3
    • ...
    Если на сайте много разных меню - ссылки могут путаться и в адресной строке и "хлебных крошках" может появляться неожиданный результат.
     
  11. Offline

    Gooo Недавно здесь

    Регистрация:
    03.03.2015
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо. Теперь понятно. Значит основное назначение "прокладочного" меню - единообразный вид URL в адресной строке браузера и хлебных крошках при заходе на страницу из любых меню? Еще плюсы есть?

    Есть вопрос , перекликающийся с данным. Где-то читал следующее. Если вы хотите дать ссылку в статье на какую-то другую статью или категорию, ее лучше давать в виде ссылки не на URL статьи (категории), а на пункт меню, который выводит эту страницу. Типа Joomla в итоге оперирует пунктами меню, а ссылки на страницы и категории носят вторичный характер, могут меняться и т.д.

    Правильно ли я понимаю, что если я хочу вставить ссылку в одной статье на другую в редакторе JCE, лучше вставить ссылку на пункт меню, который выводит статью, а не на саму статью? В JCE доступны оба варианта.

    Хотелось бы услышать Ваше мнение.
     
  12. lev
    Offline

    lev Активист => Cпециалист <=

    Регистрация:
    21.12.2007
    Сообщения:
    687
    Симпатии:
    40
    Пол:
    Мужской
    Почему JCE, вам мало tinymce и codemirror, как с ссылками, так и с лишним скриптом не стоит ПЕРЕБАРЩИВАТЬ.
    Чем меньше плагинов тем меньше ошибок, многим хватало codemirror ;)
    В шаблонах присутствует разное оформление, которые прописаны в css, надо только при помощи codemirror прописать в текст: материала, статьи модуля. А главное материал будет отображаться без всяких дополнительных:
    Код (CODE):
    1. <p>...</p>
    2. <div>...</div>


    :D
     
    Последнее редактирование: 18.08.2015
  13. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Это было ДО того, как стали популярны компоненты/модули/плагины из разряда "сел и поехал".
    Большинство "разработчиков" уже даже html почти не знает, какой тут текстовый редактор?))
     
  14. lev
    Offline

    lev Активист => Cпециалист <=

    Регистрация:
    21.12.2007
    Сообщения:
    687
    Симпатии:
    40
    Пол:
    Мужской
    Справочник по HTML - есть, можно посмотреть, почитать, я тоже не всегда знаю, хочется, чтоб кто-то подсказал, а не самому додуматься :rolleyes:
    И по CSS3 и php, jquery, javascript, более того все меняется, становиться популярным.
    Например html5 :p
     
  15. Offline

    Gooo Недавно здесь

    Регистрация:
    03.03.2015
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Ну вы тут как профи общаетесь. А тех, кто делает сайты для себя с помощью JCE и готовых модулей "сел и поехал" - тоже очень много. Ну так ответьте на вопрос - в редакторе лучше ставить ссылку на пункт меню или на сам материал?
     
  16. lev
    Offline

    lev Активист => Cпециалист <=

    Регистрация:
    21.12.2007
    Сообщения:
    687
    Симпатии:
    40
    Пол:
    Мужской
    причем тут редактор? :eek:

    new_menu.jpg new_menu01.jpg new_menu02.jpg new_menu7.jpg new_menu8.jpg new_menu3.jpg

    JCE редактор для создания контента сайта на Joomla! :cool:
    Редактор JCE позволяет создавать современный контент для сайта даже без знания HTML, XHTML, CSS, вставлять медиа и изображения, можно создать всплывающие окна с различным содержимым: видео-ролики, изображения, галереи, ролики из Youtube.


    Как писал JCE редактор не нужен, видео ролики можно вставлять allvideo, всплывающие картинки mavikthumbnails или других подобных плагинов :rolleyes:
     
    Последнее редактирование: 18.08.2015
  17. Offline

    Gooo Недавно здесь

    Регистрация:
    03.03.2015
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо за подробный ответ, но создание меню мне знакомо. Вопрос не про JCE, а про идеологию: предлагаемый топикстартером способ создания меню имеет целью единообразие ссылок на статьи из любых меню? И вроде это единственная цель? И при этом ссылки делаются каждый раз не на статьи, а на пункты "каркасного" меню?

    Так вот и спрашиваю: в редакторе тоже делать ссылки на пункты "каркасного" меню (или меню вообще), выводящие статью, а не на сами статьи? Это тоже вроде позволяет сохранить единообразие ссылок. Делать так - это рекомендация из какого-то учебнике по Joomla - не помню, жалко, какого.

    Вы сами, когда вставляете ссылки, указываете напрямую на статьи или указываете на пункты "каркасного" меню?

    А про JCE я написал потому, что там при вставке ссылки можно указать как на статью, так и на пункт (каркасного) меню, ведущий к той же статье. И результат будет одинаков. Но с точки зрения унификации ссылок, наверно, на пункт меню лучше?
     
    Последнее редактирование: 19.08.2015
  18. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    смотря с какой стороны посмотреть!

    если делать ссылки на меню, то и в меню и в статьях всегда будет одинаковый ответ и местоположение статьи
    если делать ссылку на саму статью. то может получиться такая штука: статья уже давно удалена из меню и её нет, а из материала где есть ссылка на туже статью ссылка всё ещё работает (хотя такого быть не должно т.к. в меню её уже нет)

    каждый выбирает себе свой геморрой!
     
    Gooo нравится это.
  19. Offline

    Gooo Недавно здесь

    Регистрация:
    03.03.2015
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Кстати, на SEO такое промежуточное меню никак не сказывается?

    Думаю, лучше на пункт меню. Если статья не нужна, ее однозначно уберут из меню. И будет нехорошо, что к ней останется доступ по забытым ссылкам в статьях.
     
    Последнее редактирование: 19.08.2015
  20. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    На пункт меню! Главное, чтобы в ссылке присутствовал Itemid - на нем всё завязано в джумле.

    Если по виду ссылки идентичны, то без разницы, что вставлять... что удобнее.

    В общем-то самое важное понимать, что в джумле всё построено на Itemid (ID пункта меню). Соответственно, в зависимости от указанного пункта меню будет зависеть вид страницы (и сайта в целом) и само местоположение статьи (материала).
     
    Gooo нравится это.
  21. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Да.

    Если ты делаешь перелинковку страниц и для этого решил вставить ссылки на другие страницы прямо в текст материала, то вставлять ссылки лучше "на пункт меню".
     

Поделиться этой страницей

Загрузка...