Мен schema.org белгілеуін қолдаумен, сонымен қатар bootstrap CSS қолдауымен нан үгіндісін қалыптастыруға арналған кірістірілген тегтерді іске асырумен бөлісемін.
Бұл тегтерді сайттың дамуын жылдамдату үшін жазды. Қазір жұмыс әлдеқайда жылдам жүріп жатыр, өйткені код ықшамдалады және нан үгіндісін белгілеудегі қателерді түзету оңайырақ болды, өйткені енді кодты бір жерде ғана түзету керек.
Сізде кейбір жалпы функционалдылыққа жауап беретін қолданба өзегі бар делік және оның барлық кірістірілген тегтерді жасау үшін core.py файлы бар template_tags каталогы бар делік. 4 нан үгіндісі құрамдастарын қалыптастыру үшін 3 қосу тегтерін және бір қарапайым тегті қосыңыз.
- breadcrumb_schema - ағымдағы схеманы schema.org белгілеуінен сақтау
- breadcrumb_home - сайттың түбірін қалыптастыру үшін
- breadcrumb_item - торап құрылымы ағашының элементтерін қалыптастыруға арналған
- breadcrumb_active – сайттың ағымдағы бетінің элементін қалыптастыру үшін
core.py
Осы тегтері бар python файлының мазмұнын қараңыз.
# -*- coding: utf-8 -*- from django import template register = template.Library() @register.simple_tag def breadcrumb_schema(): return "http://schema.org/BreadcrumbList" @register.inclusion_tag('core/breadcrumb_home.html') def breadcrumb_home(url='/', title=''): return { 'url': url, 'title': title } @register.inclusion_tag('core/breadcrumb_item.html') def breadcrumb_item(url, title, position): return { 'url': url, 'title': title, 'position': position } @register.inclusion_tag('core/breadcrumb_active.html') def breadcrumb_active(url, title, position): return { 'url': url, 'title': title, 'position': position }
Breadcrumb_schema() тегінде бәрі түсінікті болса, ол жай ғана белгілеу схемасының анықтамасын қайтарады, содан кейін басқа тегтермен көбірек сұрақтар болады.
Барлық белгілеу үш негізгі параметр бойынша қалыптасады:
- url - өнім бетіне сілтеме
- тақырып - Бет тақырыбы
- позиция - белгілеудегі барлық элементтер нөмірленуі керек. Мысалы, 0, 1, 2, 3, т.б.
breadcrumb_home() үшін мен ешқандай позицияны қоспаймын, себебі оның мағынасы жоқ, әрқашан 0 позициясы болады. Сондай-ақ, менің жағдайда тақырыптың орнына белгіше бар, сондықтан үлгі басқаша көрінеді. бір.
Қалған екі тег жағдайында біз орынды көрсетуіміз керек.
Үлгілер
Мен үй белгішесі туралы дереу тапсырыс беремін. Мен Material Design Icons бумасын пайдаланып жатырмын, сондықтан mdi mdi-home бар span тегі болады. сыныптар.
breadcrumb_home.html
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="{{ url }}"> <span class="mdi mdi-home"> <span class="d-none" itemprop="name">{{ title }}</span> </span> </a> <meta itemprop="position" content="1" /> </li>
breadcrumb_item.html
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="{{ url }}"> <span itemprop="name">{{ title }}</span> </a> <meta itemprop="position" content="{{ position }}" /> </li>
breadcrumb_active.html
<li class="breadcrumb-item active" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <link itemprop="item" href="{{ url }}"> <span itemprop="name">{{ title }}</span> <meta itemprop="position" content="{{ position }}" /> </li>
Үлгідегі тегтерді қолдану
Мен мақала үлгісінен кодтың бір бөлігін беремін, онда ол ұрыс жағдайында қолданылады.
{% extends 'home/base.html' %} {% load core %} <ul class="breadcrumb bg-light" itemscope itemtype="{% breadcrumb_schema %}"> {% url 'home:index' as home_index_url %} {% breadcrumb_home home_index_url 'EVILEG' %} {% url 'knowledge:index' as knowledge_index_url %} {% breadcrumb_item knowledge_index_url _('Articles') 2 %} {% breadcrumb_item article.section.get_absolute_url article.section.title 3 %} {% breadcrumb_active article.get_absolute_url article.title 4 %} </ul>
Қорытынды
Енді мақала үлгісіндегі осы 9 жолдың орнына дұрыс белгілеу үшін әрбір компонентті жазу керек екенін елестетіп көріңіз. Код жолдарының саны үш есе өседі және осы монотонды функционалдылықтың ұлғаюымен сайт кодын сақтау және оны жылдам түзету қиындай түседі.