roman1981

Рейтинг
30
Регистрация
20.04.2017
NothingMatters:
Зачем делать дублирование, когда я показал как правильно это сделать?
Сделайте как я показал, и не будет проблем.
Глобальные переменные, которые устанавливаются в различных файлах - вызывают проблемы при расширении\поддержке кода. Наступает момент когда непонятно почему переменная $var равняется 'one', а не 'two', так как где-то, в одном из подключенных файлов, ее что-то перезаписало.

Ясно, спасибо за предельно точный ответ!

Извините, что утомил вас. Просто хотел понять для себя смысл тех проблем, о которых вы говорили.

Ещё раз благодарен! Поступлю, как вы указали. Действительно, ваш вариант кода более красивый и элегантный. У меня, увы, ещё мало знаний ((((

NothingMatters:

Но если очень хочется набираться плохого опыта, то стоит хотя бы немного переделать. Меню выводи через foreach:

// Во внешнем файле задается $current_page = 'index', $current_page = 'contact', etc...

$menu = [ 'index' => ['href'=> '/', 'title' => 'Home page'],
'about' => ['href'=> '/about.php', 'title' => 'About'],
'contacts' => ['href'=> '/contact.php', 'title' => 'Contacts'],
// ...
];

<ul>
<?php foreach($menu as $page => $item):?>
<li class="<?=($current_page === $page) ? 'active' : '';?>"><a href="<?=$item['href'];?>"><?=$item['title'];?></a>
<?php endforeach;?>
</ul>

Скажите, пожалуйста, а если я в своём варианте буду вместо разных переменных использовать одну, проблем не будет? Вот правда, не могу понять вашу фразу насчёт проблем с сайтом в дальнейшем.

Вот, такой код:


<?php
if($current_page == "index") {
?>
<ul>
<li class="active"><a href="/index.php">index</a></li>
<li><a href="/about.php">about</a></li>
<li><a href="/contacts.php">contacts</a></li>
<li><a href="/formula.php">formula</a></li>
<li><a href="/goods.php">goods</a></li>
<li><a href="/love.php">love</a></li>
<li><a href="/addition.php">addition</a></li>
<li><a href="/end.php">end</a></li>
</ul>
<?php
} elseif($current_page == "about") {
?>
<ul>
<li><a href="/index.php">index</a></li>
<li class="active"><a href="/about.php">about</a></li>
<li><a href="/contacts.php">contacts</a></li>
<li><a href="/formula.php">formula</a></li>
<li><a href="/goods.php">goods</a></li>
<li><a href="/love.php">love</a></li>
<li><a href="/addition.php">addition</a></li>
<li><a href="/end.php">end</a></li>
</ul>
<?php
} elseif($current_page == "contacts") {
?>
<ul>
<li><a href="/index.php">index</a></li>
<li><a href="/about.php">about</a></li>
<li class="active"><a href="/contacts.php">contacts</a></li>
<li><a href="/formula.php">formula</a></li>
<li><a href="/goods.php">goods</a></li>
<li><a href="/love.php">love</a></li>
<li><a href="/addition.php">addition</a></li>
<li><a href="/end.php">end</a></li>
</ul>
.....
.....
<?php
}
?>

В самом сайте, например, в страничке "index.php" или "about.php" я подключаю вышеизложенный файл "navigation.inc.php" таким вот образом:


В документе "index.php" :
....
<?php
$current_page = "index";
include "./included/menu.inc.php";
?>
В документе "about.php" :
....
<?php
$current_page = "about";
include "./included/menu.inc.php";

_SP_

Коллега, я всё понимаю, вы человек очень опытный, квалифицированный. Но почему в ваших сообщениях так много красивых и ярких эпитетов? Например:

лучше пускай меня хоть педерастом называют, чем я этим всем пользоваться буду
У вас конкретно говнорешение говнозадачи.
И да... первый признак говнокода - copy+paste

Да, вы действительно дали ёмкий, полный ответ на вопросы из зала! В полном соответствии с вашим многолетним опытом и квалификацией. Спасибо вам великодушно!

NothingMatters:
Будут, и большие.
Что такое $a1, $a2? Почему переменные разные?
А если еще пункт в меню добавится? Еще городить $aXXX, и кучу else?
Глобальные переменные, да еще и во внешнем файле - зло.

Во внешнем файле идёт просто их проверка (переменных $a1, $a2... ), задаются они в обычных файлах (index.php, about.php, ect.)

Немного не понял последнюю фразу, почему зло? Глобальные переменные задаются именно во внутренних файлах сайта, не во внешнем. Проверяются они только во внешнем. Или я ошибаюсь?... Действительно, внешний файл содержит все глобальные переменные вместе, а инициализирую я их во внутренних документах...

Однако их там всего-то штук пять-шесть, ну пусть до десяти штук наберётся, на что они могут так фатально повлиять, что будут большие проблемы? Вот тут я не понял вашу мысль немного...

_SP_

Такой вопрос, если у меня сайт-визитка на 30 страничек, странички сами на РНР, шаблон свой я разбил на отдельные части и подключаю их с помощью РНР-инклудов, это не сильно влияет на скорость работы сайта, как считаете?

Вы просто писали, что юзать каждый раз при визите на сайт РНР - это не есть хорошо! Что вы скажете по поводу моей ситуации? Базы данных на сайте у меня нет. Чисто для удобства использую PHP-Includes... Вот таким именно образом:


<?php include './includes/header.inc.php';?>
....
<?php include './includes/navigation.inc.php';?>
....
<?php include './includes/footer.inc.php';?>

Правда, файл "navigation.inc.php", там где у меня навигация по сайту, для подсветки активного пункта меню на сайте и с целью того, чтобы навигация оставалась в одном документе, я сделал вот такое простое решение:

Документ "navigation.inc.php" выглядит таким образом:


<?php
if($a1 == "index") {
?>
<ul>
<li class="active"><a href="/index.php">index</a></li>
<li><a href="/about.php">about</a></li>
<li><a href="/contacts.php">contacts</a></li>
<li><a href="/formula.php">formula</a></li>
<li><a href="/goods.php">goods</a></li>
<li><a href="/love.php">love</a></li>
<li><a href="/addition.php">addition</a></li>
<li><a href="/end.php">end</a></li>
</ul>
<?php
} elseif($a2 == "about") {
?>
<ul>
<li><a href="/index.php">index</a></li>
<li class="active"><a href="/about.php">about</a></li>
<li><a href="/contacts.php">contacts</a></li>
<li><a href="/formula.php">formula</a></li>
<li><a href="/goods.php">goods</a></li>
<li><a href="/love.php">love</a></li>
<li><a href="/addition.php">addition</a></li>
<li><a href="/end.php">end</a></li>
</ul>
<?php
} elseif($a3 == "contacts") {
?>
<ul>
<li><a href="/index.php">index</a></li>
<li><a href="/about.php">about</a></li>
<li class="active"><a href="/contacts.php">contacts</a></li>
<li><a href="/formula.php">formula</a></li>
<li><a href="/goods.php">goods</a></li>
<li><a href="/love.php">love</a></li>
<li><a href="/addition.php">addition</a></li>
<li><a href="/end.php">end</a></li>
</ul>
.....
.....
<?php
}
?>

В самом сайте, например, в страничке "index.php" или "about.php" я подключаю вышеизложенный файл "navigation.inc.php" таким вот образом:


В документе "index.php" :
....
<?php
$a1 = "index";
include "./included/menu.inc.php";
?>
В документе "about.php" :
....
<?php
$a2 = "about";
include "./included/menu.inc.php";
?>

Как считаете, я правильно в данном случае действую? Не будет ли у меня проблем в дальнейшем на сайте??

Sitealert:
Подозреваю, что имелось в виду отсутствие необходимости подключения сервера базы данных. А шаблон разбивается на части в большинстве CMS - как с БД, так и без БД.

Спасибо за ответ. Просто человек упомянул об инклудах, мне вот и стало интересно, это именно РНР-Инклуды, или же какая-либо иная технология. А вот то, что шаблон веб-сайта нужно разбивать на отдельные части, это однозначно правильно, поскольку с колоссальным ростом страниц сайта управлять им будет нереально сложно (если вообще возможно). А так, к примеру, поменял дизайн футера - в отдельном файле, он тут-же изменился на всём сайте, сколько бы страниц на нём не было. Очень удобно, а на больших сайтах - просто жизненно важно.

Charli:
"инклуд хедер, инклуд футер" - самая лучшая cms без БД

Имеется ввиду, что лучшая CMS без баз данных - это использование именно PHP Includes, то есть включений РНР для разбиения шаблона на разные составные части. Правильно ли я понял эту мысль? Или подразумевалось что-либо ещё?

Например,


<?php include './includes/header.inc.php';?>
....
<?php include './includes/navigation.inc.php';?>
....
<?php include './includes/footer.inc.php';?>

богоносец

И отдельно обратите внимание на доступность для Яндекса одного и того же файла robots.txt (с одной и той же Host) по всем редиректящим зеркалам

Немного не понял этот момент. То есть, уточню этот нюанс: у меня на всех зеркалах должен быть один и тот же файл robots.txt с одной и той-же директивой host, я правильно понимаю?

Детально распишу, если вы не против, правильно ли я понял ваши слова.

Вот, у меня есть некий файл robots.txt в корне моего веб-сайта:


User-agent: *
Disallow:
Host: www.my-site.com
Sitemap: http://www.my-site.com/sitemap.xml

Кстати говоря, правильно ли у меня составлена директива Host в данном случае, я не напутал ничего, может ещё протокол перед названием сайта прописать, как считаете? Идём далее, именно это файл robots.txt, именно с этой конкретной директивой, должен быть доступен по следующим адресам:

http://my-site.com/robots.txt (301 редирект на главное зеркало)

https://my-site.com/robots.txt (301 редирект на главное зеркало)

http://www.my-site.com/robots.txt (моё главное зеркало!)

https://www.my-site.com/robots.txt (301 редирект на главное зеркало)

Я правильно понимаю суть ваших слов?

AlexShevchenko:
у меня на одном аккаунте около десятка ресурсов висит:)

А среди этих ресурсов есть такие случаи, когда один и то-же сайт висит в аккаунте Google Search Console вот в таком виде:

http://www.mysite.com

https://www.mysite.com

То есть, по факту один и то-же ресурс (веб-сайт), но в аккаунте он заведен под два ресурса, один на http и второй на https, соответственно.

Как к этому относится Гугл, нормально индексирует указанный сайт, и если индексирует, то по какому принципу - только главное зеркало (в таком случае у вас стоят редиректы на хостинге на конкретное главное зеркало?), например, на https ?

Я понимаю, что на одном аккаунте может быть много ресурсов, но тут идёт речь именно о дублировании одного и того-же сайта на два ресурса, только с разными протоколами. Как на практике такое происходит и что можно от этого ожидать в плане качества индексации Гуглом? Какой из сайтов Гугл будет индексировать, как он определяет где главное зеркало, а где не главное? По редиректам в файле .htaccess на сервере, или как-то ещё?...

---------- Добавлено 13.01.2018 в 00:17 ----------

Просто у меня сайт один, но под него заведено два ресурса на моём аккаунте, как вы понимаете один на http и второй на https. Да, я перенастроил редиректы в своём файле .htaccess на сервере, теперь что-бы не набрал пользователь в поисковой строке, он всегда попадёт именно на такой вариант сайта: http://www.mysite.com, то есть по обычному протоколу http.

Но в Google Search Console всё равно у меня светятся два ресурса, удалить второй я могу, но если его в любой момент добавить, то всё равно я вижу, что статистика по нему никуда не делась, то есть Гугл его по факту не удаляет полностью, а хранит в своём хранилище. И от того, что в Google Search Console я его "формально" удалю, от этого Гугл не удалить всю статистику о втором ресурсе (о том, который на https). Понимаете, в чём суть моего вопроса?

Именно потому я и спрашиваю, не было ли у вас такой ситуации, и если была, не отражалось ли это на индексации вашего сайта со стороны самого Гугла?

---------- Добавлено 13.01.2018 в 00:21 ----------

xVOVAx:
Нажми на ссылку удалить ресурс и забудь. Пятница что ли ......

То есть, вы предлагаете просто удалить не нужный ресурс (тот, который сейчас у меня на протоколе https), и далее спокойно заниматься развитием своего основного ресурса на http? Правильно я понимаю вашу мысль? А о втором ресурсе просто забыть навсегда.

Но как Гугл воспринял мои манипуляции в 2017 году по переходу на https и затем обратно на http ?

Это было в течении недели-полторы.

Не попал ли я под фильтры Гугла в таком случае? Как считаете?.....

xVOVAx

То есть, это нормально, когда в панели вебмастеров Гугл висит два ресурса (два сайта) на http и на https ? При чём тут паранойя, я просто хочу понимать, нормально ли это и сталкивался ли кто-то с чем-то подобным?

---------- Добавлено 12.01.2018 в 22:42 ----------

То есть, почему когда я удаляю второй (не нужный уже) сайт из Google Search Console, а затем спустя день его добавляю, то там остаются старые данные (в том числе светится одна проиндексированная страница). Иными словами, Гугл не удаляет полностью второй сайт, а лишь, как-бы, скрывает его. Но не удаляет.

Таким образом, у меня по факту в панели вебмастеров сейчас уже навечно засели два сайта, и изменить это уже нет возможности. Вот я и хочу понять, нормально ли это и не будет ли проблем в будущем с индексацией именно старого моего сайта, того который на протоколе http. Как-то напряжно, когда в Google Search Console висит два сайта, при чём, второй мне вообще ни к чему! Но и удалить его я никак не могу!

Всего: 106